android布局方式怎么适应不同屏幕大小

来源:互联网 发布:教学教育过程最优化 编辑:程序博客网 时间:2024/05/17 00:51


使用 popupwindow这个控件,在一些大屏幕手机上有些按钮就显示的不完全了,popupWindow = new PopupWindow(findViewById(R.id.mainlayout), 300, 250);(在小屏幕上显示效果不错)我是这么调用的,popupWindow具体定义在layout中,请问怎么定义大小,能全部显示又美观点,相对布局方式?
2013-10-28 15:45提问者采纳
你可以即时的计算你的popupwindow所占空间 比如你现在的初始化传参是300pxX250px 最好即时的dp转成px/*** 将dip或dp值转换为px值,保证尺寸大小不变* * @param dipValue* @param scale*            (DisplayMetrics类中属性density)* @return*/public static int dip2px(float dipValue, float scale) {return (int) (dipValue * scale + 0.5f);}public static DisplayMetrics getMetrics(Activity activity) {DisplayMetrics metrics = new DisplayMetrics();Display display = activity.getWindowManager().getDefaultDisplay();display.getMetrics(metrics);return metrics;}再调用的话就是new PopupWindow(findViewById(R.id.mainlayout), dip2px(300,getMetrics(youractivity)), dip2px(250,getMetrics(youractivity)));还有 如果是在平板上面显示 这种方法也会失去效果 如果你想在高分辨率下 显示 就得传更高的值才有相同的显示效果 下面是判断是否是平板的方法private boolean isPad() {      WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);      Display display = wm.getDefaultDisplay();      // 屏幕宽度      float screenWidth = display.getWidth();      // 屏幕高度      float screenHeight = display.getHeight();      DisplayMetrics dm = new DisplayMetrics();      display.getMetrics(dm);      double x = Math.pow(dm.widthPixels / dm.xdpi, 2);      double y = Math.pow(dm.heightPixels / dm.ydpi, 2);      // 屏幕尺寸      double screenInches = Math.sqrt(x + y);      // 大于6尺寸则为Pad      if (screenInches >= 6.0) {          return true;      }      return false;  }
0 0
原创粉丝点击