在Android应用中,我尝试使用以下方式获取屏幕宽度和高度:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
final int screenWidth = metrics.widthPixels;
final int screenHeight = metrics.heightPixels;
这分别为我的手机报告1080和1920,与规格相符。
但是,在webview中,当我使用时:
var screenWidth = $(window).width();
此报告仅为360.
根据我的理解,两者都使用像素作为单位,那么为什么值不同?
答案 0 :(得分:5)
两种情况下的注意宽度相同,但单位不同。
E.g。
这是像素 metrics.widthPixels;
这是Dps 360 OR $(窗口).width();
将360Dps转换为像素
在xxhdpi设备上,360dps = 1080px
答案 1 :(得分:1)
您可以使用getResources().getDisplayMetrics()
方法获取displayMetrics。
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
final int screenWidth = metrics.widthPixels;
final int screenHeight = metrics.heightPixels;
答案 2 :(得分:1)
我使用这个简单的方法(在utils类中)来转换px< - > DP。
public static int convertIntToDp(int inputValue, DisplayMetrics displayMetrics){
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, inputValue, displayMetrics);
}
我希望能帮到你
答案 3 :(得分:1)