lia*_*ker 2 android screen android-layout
从API 17开始,可以获得手机的实际屏幕尺寸:
if (android.os.Build.VERSION.SDK_INT >= 17){
display.getRealSize(size);
int screen_width = size.x;
screen_height = size.y;
} else {...}
Run Code Online (Sandbox Code Playgroud)
我想获得API 8-16的真实屏幕尺寸.在这种情况下处理else条件的最佳方法是什么?
以下是我在所有API上获取实际屏幕高度的解决方案.当设备具有物理导航栏时,dm.heightPixels返回实际高度.当设备具有软件导航栏时,它将返回总高度减去条形.我只在几台设备上进行了测试,但到目前为止这已经发挥了作用.
int navBarHeight = 0;
Resources resources = context.getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
navBarHeight = resources.getDimensionPixelSize(resourceId);
}
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
boolean hasPhysicalHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);
if (android.os.Build.VERSION.SDK_INT >= 17){
display.getRealSize(size);
int screen_width = size.x;
screen_height = size.y;
} else if (hasPhysicalHomeKey){
screen_height = dm.heightPixels;
} else {
screen_height = dm.heightPixels + navBarHeight;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2650 次 |
| 最近记录: |