关于屏幕适配--非720 非1080的屏幕处理

DisplayMetrics localDisplayMetrics = new DisplayMetrics();
((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(localDisplayMetrics);

LogUtil.v(TAG, "widthPixels------------------------->"  + localDisplayMetrics.widthPixels);
LogUtil.v(TAG, "heightPixels------------------------->" + localDisplayMetrics.heightPixels);
LogUtil.v(TAG, "densityDpi------------------------->"  + localDisplayMetrics.densityDpi);
LogUtil.v(TAG, "density------------------------->" + localDisplayMetrics.density);

1080屏幕:

widthPixels:1920   heightPixels:1080  densityDpi:240  density:1.5      (density=240/160)

720屏幕:

widthPixels:1280   heightPixels:720  densityDpi:160  density:1

有的屏幕:

04-13 16:10:20.162 widthPixels------------------------->1920
04-13 16:10:20.162 heightPixels------------------------->1080
04-13 16:10:20.162 densityDpi------------------------->213
04-13 16:10:20.163 density------------------------->1.3312501

虽然log显示是1080的屏幕,但是屏幕密度其实不够densityDpi,标准1080的屏幕 density对应的应该是240

遇到这种屏幕,适配的时候要注意,下面几种方式选择其中一种,不可部分在代码中设置px,部分在xml中设置dp

1.全部在xml里面写dp

2.全部在代码里面写dp

3.xml中设置部分dp,代码中设置部分dp

4.全部在代码中设置UI给的px值

DisplayMetrics localDisplayMetrics = new DisplayMetrics();

((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(localDisplayMetrics);

pixelWidth = localDisplayMetrics.density * 1280;//真实的屏幕宽度

pixelHeight = localDisplayMetrics.density * 720;//真实的屏幕高度

public static int widthOf(int original) {
    return (int) (pixelWidth * original / 1920);
}

public static int heightOf(int original) {
    return (int) (pixelHeight * original / 1080);
}

LayoutParams regular_app1_params = (LayoutParams) mRegularAppLayout1.getLayoutParams();
regular_app1_params.leftMargin = widthOf(60);
regular_app1_params.topMargin = heightOf(144);
regular_app1_params.width = widthOf(312);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值