1. 程式人生 > >仿京東首頁沉浸式圖片以及狀態列變色

仿京東首頁沉浸式圖片以及狀態列變色

這個效果搞了三個小時,有一種淡淡的憂傷 先看下效果

網上這方面的案例特別的少

思路很重要,說下實現的過程:

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的偏移量 去設定背景透明度

傳送門 戳我