劉海屏幕的適配玩焰,在全面屏設(shè)置下纤勒,頂部有劉海的區(qū)域,有的會(huì)導(dǎo)致劉海把標(biāo)題欄等內(nèi)容遮蓋如下圖芦岂,這是美團(tuán)的統(tǒng)一版本在小米和華為上的適配李破,可以看到小米的未遮擋內(nèi)容宠哄,但在華為設(shè)備上,明顯劉海遮住了一部分內(nèi)容嗤攻,目前手里只有這兩臺(tái)設(shè)備毛嫉,所以沒(méi)有更多機(jī)型測(cè)試,不過(guò)根據(jù)上線APP反饋妇菱,目前這個(gè)方法可以滿足承粤。此博文為筆記內(nèi)容,所以內(nèi)容不多
如果統(tǒng)一留出固定的高度闯团,會(huì)在不同設(shè)備上造成不同的效果辛臊,現(xiàn)在使用動(dòng)態(tài)計(jì)算頂部狀態(tài)欄高度然后預(yù)留高度,防止被異形屏遮擋情況房交,使用之后的效果如下圖
方法及使用
setStatusBarHeight方法
public static void setStatusBarHeight(Activity activity, View view) {
int bar_height =getStatusBarHeight(activity);
LinearLayout.LayoutParams layoutParams;
layoutParams = (LinearLayout.LayoutParams) view.getLayoutParams();
layoutParams.height = bar_height - 12;
view.setLayoutParams(layoutParams);
}
public static int getStatusBarHeight(Context context) {
int result = 0;
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = context.getResources().getDimensionPixelSize(resourceId);
}
return result;
}
使用方法彻舰,在布局上設(shè)置一個(gè)占位條,需要適配的引用進(jìn)來(lái)候味,因?yàn)橛行┎季质遣挥迷O(shè)置的
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/ll_include_status_bar_height_dynamic"
android:layout_height="wrap_content">
<!--狀態(tài)欄動(dòng)態(tài)填充高度刃唤,只在會(huì)影響的時(shí)候才需要,
比如標(biāo)題欄的時(shí)候白群,計(jì)算高度填充防止標(biāo)題欄被劉海屏幕遮擋-->
<View
android:id="@+id/v_include_status_bar_height_dynamic"
android:layout_width="match_parent"
android:layout_height="10dp"
android:background="@color/color_00000000" />
</LinearLayout>
調(diào)用設(shè)置
@BindView(R.id.v_include_status_bar_height_dynamic)
View v_include_status_bar_height_dynamic;
Tool.setStatusBarHeight(MainActivity.this, v_include_status_bar_height_dynamic);