摘要:原圖加載毛玻璃的效果比較快,你的這個打開白屏好幾秒。這就是系列第六篇之系列之,等。這個系列的講解和實例都會整理在一個里,的地址去吧,我會慢慢完善的。
這篇文章其實我一直在想,是寫還是不寫,因為關于講 CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout,Toolbar,TabLayout 等這些控件的使用,以前寫過一篇,那就是《通過來模仿稀土掘金個人頁面的布局來學習使用CoordinatorLayout 》,一直關注和看公眾號的關注者應該看到過,上一篇的推送也特別講了 CoordinatorLayout 的其他用法,看過的人都說還能這么用啊?哈哈……這次寫這篇是對我上一篇《通過來模仿稀土掘金個人頁面的布局來學習使用CoordinatorLayout 》遺留問題的加強和修改。
這次關于 CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout,Toolbar,TabLayout 等這些控件的用法我就不講了,不懂的或者不清楚的就去看《通過來模仿稀土掘金個人頁面的布局來學習使用CoordinatorLayout 》這篇文章,因為這次我們主講怎么把上次大家給我提問的問題進行修改和加強,優化等。
問題上次關于仿稀土掘金的文章發出后,我看到有人在微信后臺跟我留言,也有人在github上給我提問題,大約問的最多的有三個問題。
原圖是沉浸狀態欄,你的這個模仿的效果圖沒有做到。
原圖加載毛玻璃的效果比較快,你的這個打開app白屏好幾秒。
原圖fragment中有列表,你的沒有,為什么我放上ListView之后,標題欄不能折疊等等
現在我們就從以上三個問題,進行修改和加強,優化,在講之前,先看效果圖對比,如果感覺好,你們再繼續往下看。
稀土掘金原圖 之前的模仿效果圖 增強,修改,優化后的效果圖 解決方法 第一個問題大致的方法過程就是如下:
配置window的各項參數,使狀態欄透明
/** * 使狀態欄透明 */ @TargetApi(Build.VERSION_CODES.KITKAT) private static void transparentStatusBar(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); activity.getWindow().setStatusBarColor(Color.TRANSPARENT); } else { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } }
設置根布局的參數
/** * 設置根布局參數 */ private static void setRootView(Activity activity) { ViewGroup rootView = (ViewGroup) ((ViewGroup) activity. findViewById(android.R.id.content)).getChildAt(0); rootView.setFitsSystemWindows(true); rootView.setClipToPadding(true); }
添加半透明矩形條
/** * 添加半透明矩形條 * * @param activity 需要設置的 activity * @param statusBarAlpha 透明值 */ private static void addTranslucentView(Activity activity, int statusBarAlpha) { ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content); // 移除半透明矩形,以免疊加 if (contentView.getChildCount() > 1) { contentView.getChildAt(1).setBackgroundColor(Color.argb(statusBarAlpha, 0, 0, 0)); } else { contentView.addView(createTranslucentStatusBarView(activity, statusBarAlpha)); } }
大致的步驟就是這樣,我這里用的是別人封裝好的,github地址是:https://github.com/laobie/StatusBarUtil 大家可以去參考使用。
第二個問題以前的毛玻璃效果,是我從網上找的一個毛玻璃算法,然后搞出來的,確實很慢,然后我在網上找更快的加載的速度的算法,找來找去,網上都是那幾種,最快的也得白屏四秒,最后終于搞定了一個快的,真的是腦子不靈活了,光想著毛玻璃了,不是glide也支持毛玻璃,支持模糊效果嗎?一用它確實快。就是這么解決的。怎么使用的,我相信用過glide的都會吧,如果你沒用過,就去下載源碼吧,里面寫的非常簡單。
第三個問題CoordinatorLayout協同布局在一般只結合RecyclerView和NestedScrollView使用,所以你用ListView沒有效果,如果你硬要用ListView那就比較麻煩了,倒不是做不到。你去分析源碼可以知道RecyclerView和NestedScrollView它們都實現了一個接口NestedScrollingChild,所以我們可以自定義ListView,實現NestedScrollingChild接口就好。你也可以使用listView.setNestedScrollingEnabled(true)也行,也能做到,但是貌似這兩種方法只能支持在android5.0以上的手機才能用,所以還是建議大家使用RecyclerView就沒那么多事了。
這就是Material Design系列第六篇之《Android Material Design系列之CoordinatorLayout,CollapsingToolbarLayout等》。
這個系列的講解和實例都會整理在一個demo里,demo的github地址:https://github.com/loonggg/MaterialDesignDemo 去star吧,我會慢慢完善的。
仿稀土掘金效果的demo也放到上邊的那個綜合demo里了,當然多帶帶的demo效果也修改了,地址是:https://github.com/loonggg/CoordinatorLayoutDemo
MaterialDesign系列文章推薦:
Android Material Design系列之RecyclerView和CardView(可點擊)
Android Material Design系列之Toolbar(可點擊)
Android Material Design系列之Navigation Drawer(可點擊)
Android Material Design系列之FloatingActionButton和Snackbar(可點擊)
Android Material Design系列之Palette(可點擊)
擴展篇(可點擊):
通過來模仿稀土掘金個人頁面的布局來學習使用 CoordinatorLayout
CoordinatorLayout的使用如此簡單
歡迎關注微信公眾號:非著名程序員(smart_android),每天每周定時推送原創技術文章。所有技術文章, 均會在微信訂閱號首發,關注微信公眾號可以及時獲得技術文章推送。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64898.html
摘要:今天主講的系列的兩個控件都不難,所以一起講了,分別是和。之所以出現這么久了,不太火,不太常用,估計跟他懸浮有關,容易擋住其他內容。那我們現在就研究改如何在滑動列表時隱藏和顯示這個懸浮按鈕。其實也非常簡單,和修改樣式的過程差不多。 今天主講的Material Design系列的兩個控件都不難,所以一起講了,分別是FloatingActionButton和Snackbar。這個系列都是主講...
閱讀 1628·2021-10-12 10:11
閱讀 3746·2021-09-03 10:35
閱讀 1438·2019-08-30 15:55
閱讀 2122·2019-08-30 15:54
閱讀 991·2019-08-30 13:07
閱讀 1003·2019-08-30 11:09
閱讀 568·2019-08-29 13:21
閱讀 2644·2019-08-29 11:32