Android:int h = getWindowManager()。getDefaultDisplay()。getHeight()在我的Acer平板电脑上返回错误的值

时间:2012-11-20 17:06:23

标签: android

我正在尝试创建一个允许您拖动形状的应用。它适用于智能手机,但不适用于我的Acer a500平板电脑

当我通过调用

获得高度时
ih=getWindowManager().getDefaultDisplay().getHeight()-25;

我得到的值只有它应该的1/3,因此我只能将sahpes拖动到1/3的方向。如果这款平板电脑处于水平状态,它会向下移动1/2。

为什么这种方法会在平板电脑上返回错误的高度值?

public class cPlay extends  cBase  implements OnClickListener {
/** Called when the activity is first created. */
   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
  //      setContentView(R.layout.play);


        int w=getWindowManager().getDefaultDisplay().getWidth()-25;
        int h=getWindowManager().getDefaultDisplay().getHeight()-25;

        BallView ballView=new BallView(this,w,h);
        setContentView(ballView);
   } // end function

   public void onClick(View v) {
       finish();

       } // end function

} // end class

2 个答案:

答案 0 :(得分:3)

试试这个:

  DisplayMetrics displaymetrics = new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
  int height = displaymetrics.heightPixels;
  int Width = displaymetrics.widthPixels;

答案 1 :(得分:0)

方法getWidth()和getHeight()在Display中已弃用。 尝试使用DisplayMetrics。 此外,您可能希望通过在调用onMeasure()之后调用getMeasuredWidth()和getMeasuredHeight()来获取视图容器的大小,以获得更精确的视图大小。