结论:后台设置三张图?1080_1920?1080_2340 720*1440
亲测 android
魅族note5 note6 全屏百分百显示【1080_1920】分辨率16:9
华为 畅享8?全屏百分百显示【1440*720】 分辨率 18:9
Redmi Note 9?全屏百分百显示【1080_2340】分辨率?19.5:9
华为 Mate 20 Pro全屏百分百显示【3120*1440】?分辨率?19.5:9
华为p40 以及mate 40全屏百分百显示【1080*2376】?分辨率?19.5:9
三星 Galaxy S20?全屏百分百显示【3220*1400】?分辨率 20.1:9
首先代码上;
<ImageView
android:id="@+id/img_start"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
/>
java
/**
* 兼容水滴屏全屏情况
* @param window 在Activity里面通过getWindow()获取window参数,然后再onCreate()函数里面调用下面的函数
*/
public void setFullScreenWindowLayout(Window window) {
try{
// 水滴屏全屏适配方法
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
//设置页面全屏显示
WindowManager.LayoutParams lp = window.getAttributes();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
}
//设置页面延伸到刘海区显示
window.setAttributes(lp);
}catch (Exception e){
Logi.e(e);
}
}
3434
如下是17年的代码
public String checkScreen(JSONObject object,int width,int height) throws Exception{
String tmp="";
if(width>=1440){
tmp=object.getString("1440x2560");
}else if(width>=1080){
tmp=object.getString("1080x1920");
}
else if(width>=800){
tmp=object.getString("800x1280");
}else if(width>=720&&height>=1280){
tmp=object.getString("720x1280");
}else if(width>=720){
tmp=object.getString("720x1184");
}else if(width>=540){
tmp=object.getString("540x960");
}else if(width>=480&&height>=854){
tmp=object.getString("480x854");
}else if(width>=480){
tmp=object.getString("480x800");
}else{
throw new Exception("not check");
}Logi.i("w:"+width+" h"+height+" >>"+tmp);
return tmp;
}
|