仿京東首頁沉浸式圖片以及狀態列變色
阿新 • • 發佈:2019-01-04
這個效果搞了三個小時,有一種淡淡的憂傷 先看下效果
網上這方面的案例特別的少
思路很重要,說下實現的過程:
step1:
佈局什麼的就不說了,首先在Mainactivity實現沉浸式狀態列
public static void setWindowImmersiveState(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window window = activity.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); }
佈局加上fitsystemWindow =true
step2 ;
這樣我們實現了圖片居於頂部,但是頭部控制元件需要位於狀態列下方
只需要計算下狀態列的高度
設定padding屬性
public static int getWindowStateHeight(Context context) { int statusBarHeight1 = -1; int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { statusBarHeight1 = context.getResources().getDimensionPixelSize(resourceId); } return statusBarHeight1; }
step3 滑動監聽 需要重寫scrollview對其作出監聽事件
監聽y的偏移量 去設定背景透明度
傳送門 戳我