屏幕分辨率

时间:2011-07-25 08:29:27

标签: android

其实我已经创建了一系列按钮,现在我的问题是它是否适合所有屏幕分辨率或者不是..我已经使用了nexus的设备而且这里的工作正常......我的意思是说所有按钮按顺序排列。当我将背景图像放置到每个按钮时,它工作得很好..现在我怀疑它是否适用于更便宜的设备,我写的相同代码或我必须做一些额外的事情。这意味着它是否适合所有屏幕分辨率......或者不是......我写的代码是..

            LinearLayout layoutVertical = (LinearLayout) findViewById(R.id.liVLayout);
            LinearLayout rowLayout=null;

            LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT,1);

            //Create Button
            for (i = 0; i<6; i++){
                rowLayout = new LinearLayout(this);
                rowLayout.setWeightSum(7);
                layoutVertical.addView(rowLayout,param);

                for(j=0;j<7;j++){
                    pBtnDay[i][j]=new Button(this);

                    rowLayout.addView(pBtnDay[i][j],param); 

                    pBtnDay[i][j].setOnLongClickListener(this);                         
                    pBtnDay[i][j].setOnClickListener(this);



                }
            }
            return true;

当我试图找到按钮的宽度和高度时,还会再次返回0 ..为什么?

3 个答案:

答案 0 :(得分:1)

Adnroid应用程序的基本理念之一是具有不同屏幕分辨率,像素深度和Oreintation的跨平台的可移植性。

如何实现这一点,已在this链接中得到很好的解释。享受!

如果您对获取屏幕参数感兴趣,则可以使用DisplayMetrics和Window Manager。 词shash

答案 1 :(得分:1)

如果您确切知道屏幕上多个设备上显示的元素数量,那么使用weightSum是最佳解决方案。因此,如果它出现在HTC Wildfire(LDPI)上,那么它也将在您的Nexus(HDPI)上显示。

至于你的第二个问题,我假设你正在使用View.getHeight()和View.getWidth()来获取这些值。由于你的按钮实际上还没有被绘制,Android没有为它们指定维度值,这就是它们为什么会出现0的原因。如果你需要onCreate中这些按钮的宽度和高度,那么你需要做一些数学计算你自己的:))

答案 2 :(得分:1)

对于第二个答案:如果您需要按钮尺寸值,请使用:

@Override
  public void onWindowFocusChanged(boolean hasFocus) 
  {
      if (hasFocus)
      {
// calculates dimesions
      }
  }

事实上,正如之前所说,在onCreate中你仍然没有计算它们。