Android:布局在同一屏幕分辨率设备上看起来不同

时间:2015-03-19 09:43:02

标签: android layout

我是Android编程的新手。我有一个问答游戏。在主要活动中,您可以点击4个答案中的一个来查看结果是否正确。我的问题如下:我已经在S4 mini上测试了这个选择选项,它显示了尺寸合适的选择选项,但在索尼Xperia M2上看起来要大两倍!两种设备都具有相同的屏幕分辨率(540 x 960像素)。

这是我在主要活动中的代码(M280):

final Point dim = Utils.getScreenDimensions(MainActivity.this);
int M280 = 280;
            if (SplashActivity.bSmallScreen) {
                M280 = 60;
            }

            if (dim.y == 240 && dim.x == 320) {
                M280 = 60;
            }

            if (dim.y == 320 && dim.x == 480) {
                M280 = 80;
            }

            if (dim.y == 480 && dim.x == 800) {
                M280 = 140;
            }

            if (dim.y == 480 && dim.x == 854) {
                M280 = 140;
            }

            if (dim.y == 540 && dim.x == 960) {
                M280 = 160;
            }

            if (dim.y == 720 && dim.x == 1280) {
                M280 = 200;
            }

            if (dim.y == 768 && dim.x == 1280) {
                M280 = 200;
            }

            if (dim.y == 800 && dim.x == 1280) {
                M280 = 220;
            }

            if (dim.y == 1080 && dim.x == 1920) {
                M280 = 280;
            }

            if (dim.y == 1440 && dim.x == 2560) {
                M280 = 300;
            }

            if (Utils.isTablet(mContext)) {
                M280 = 300;
            }
            if (i==0) {
                final LinearLayout LL2Row = new LinearLayout(MainActivity.this);

                final LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                        ViewGroup.LayoutParams.MATCH_PARENT,
                        M280);
                LL2Row.setLayoutParams(lp);
                LL2Row.setTag("LL21");
                LL2Row.setOrientation(LinearLayout.HORIZONTAL);
                LL2Row.setWeightSum(2);

                LLQuestionAnswers.addView(LL2Row);
            }

            //TODO new, 2-nal hozzaadunk egy ll-t ami 2 reszbol all
            if (i==2) {
                final LinearLayout LL2Row = new LinearLayout(MainActivity.this);

                final LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                        ViewGroup.LayoutParams.MATCH_PARENT,
                        M280);

                LL2Row.setLayoutParams(lp);
                LL2Row.setTag("LL22");
                LL2Row.setOrientation(LinearLayout.HORIZONTAL);
                LL2Row.setWeightSum(2);

                LLQuestionAnswers.addView(LL2Row);
            }    

1 个答案:

答案 0 :(得分:0)

使用当前的设备尺寸,纵横比和密度碎片, 在设计界面时总是优先使用比率,无论是在Android还是iOS上。

这样的事情: UI designed with relative ratios

for Android:

  • 尝试尽可能多地使用LinearLayouts,在父视图上保留权重并在子视图中分配它们,这样视图将延伸到相同的比例,而不管displaytype,tutorial
  • 尝试尽可能多地使用wrap_content和match_parent / fill_parent,避免使用硬编码" dp"尽可能的价值观。

  • 如果您需要使用其他视图组,例如RelativeLayouts

    1)保持父亲的亲戚关系 2)哪个有孩子LinearLayouts
    3)将您的子视图保存在LinearLayout中。

获得更多的额外设计时间,但在定位许多设备时可以省去很多麻烦

类似的东西:

layout mock

for iOS:

使用自动布局,类似于权重和权重,tutorial