摘要:原圖加載毛玻璃的效果比較快,你的這個打開白屏好幾秒。這就是系列第六篇之系列之,等。這個系列的講解和實例都會整理在一個里,的地址去吧,我會慢慢完善的。
這篇文章其實我一直在想,是寫還是不寫,因為關(guān)于講 CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout,Toolbar,TabLayout 等這些控件的使用,以前寫過一篇,那就是《通過來模仿稀土掘金個人頁面的布局來學(xué)習(xí)使用CoordinatorLayout 》,一直關(guān)注和看公眾號的關(guān)注者應(yīng)該看到過,上一篇的推送也特別講了 CoordinatorLayout 的其他用法,看過的人都說還能這么用啊?哈哈……這次寫這篇是對我上一篇《通過來模仿稀土掘金個人頁面的布局來學(xué)習(xí)使用CoordinatorLayout 》遺留問題的加強(qiáng)和修改。
這次關(guān)于 CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout,Toolbar,TabLayout 等這些控件的用法我就不講了,不懂的或者不清楚的就去看《通過來模仿稀土掘金個人頁面的布局來學(xué)習(xí)使用CoordinatorLayout 》這篇文章,因為這次我們主講怎么把上次大家給我提問的問題進(jìn)行修改和加強(qiáng),優(yōu)化等。
問題上次關(guān)于仿稀土掘金的文章發(fā)出后,我看到有人在微信后臺跟我留言,也有人在github上給我提問題,大約問的最多的有三個問題。
原圖是沉浸狀態(tài)欄,你的這個模仿的效果圖沒有做到。
原圖加載毛玻璃的效果比較快,你的這個打開app白屏好幾秒。
原圖fragment中有列表,你的沒有,為什么我放上ListView之后,標(biāo)題欄不能折疊等等
現(xiàn)在我們就從以上三個問題,進(jìn)行修改和加強(qiáng),優(yōu)化,在講之前,先看效果圖對比,如果感覺好,你們再繼續(xù)往下看。
稀土掘金原圖 之前的模仿效果圖 增強(qiáng),修改,優(yōu)化后的效果圖 解決方法 第一個問題大致的方法過程就是如下:
配置window的各項參數(shù),使?fàn)顟B(tài)欄透明
/** * 使?fàn)顟B(tài)欄透明 */ @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); } }
設(shè)置根布局的參數(shù)
/** * 設(shè)置根布局參數(shù) */ 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 需要設(shè)置的 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 大家可以去參考使用。
第二個問題以前的毛玻璃效果,是我從網(wǎng)上找的一個毛玻璃算法,然后搞出來的,確實很慢,然后我在網(wǎng)上找更快的加載的速度的算法,找來找去,網(wǎng)上都是那幾種,最快的也得白屏四秒,最后終于搞定了一個快的,真的是腦子不靈活了,光想著毛玻璃了,不是glide也支持毛玻璃,支持模糊效果嗎?一用它確實快。就是這么解決的。怎么使用的,我相信用過glide的都會吧,如果你沒用過,就去下載源碼吧,里面寫的非常簡單。
第三個問題CoordinatorLayout協(xié)同布局在一般只結(jié)合RecyclerView和NestedScrollView使用,所以你用ListView沒有效果,如果你硬要用ListView那就比較麻煩了,倒不是做不到。你去分析源碼可以知道RecyclerView和NestedScrollView它們都實現(xiàn)了一個接口NestedScrollingChild,所以我們可以自定義ListView,實現(xiàn)NestedScrollingChild接口就好。你也可以使用listView.setNestedScrollingEnabled(true)也行,也能做到,但是貌似這兩種方法只能支持在android5.0以上的手機(jī)才能用,所以還是建議大家使用RecyclerView就沒那么多事了。
這就是Material Design系列第六篇之《Android Material Design系列之CoordinatorLayout,CollapsingToolbarLayout等》。
這個系列的講解和實例都會整理在一個demo里,demo的github地址:https://github.com/loonggg/MaterialDesignDemo 去star吧,我會慢慢完善的。
仿稀土掘金效果的demo也放到上邊的那個綜合demo里了,當(dāng)然多帶帶的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(可點擊)
擴(kuò)展篇(可點擊):
通過來模仿稀土掘金個人頁面的布局來學(xué)習(xí)使用 CoordinatorLayout
CoordinatorLayout的使用如此簡單
歡迎關(guān)注微信公眾號:非著名程序員(smart_android),每天每周定時推送原創(chuàng)技術(shù)文章。所有技術(shù)文章, 均會在微信訂閱號首發(fā),關(guān)注微信公眾號可以及時獲得技術(shù)文章推送。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64898.html
摘要:今天主講的系列的兩個控件都不難,所以一起講了,分別是和。之所以出現(xiàn)這么久了,不太火,不太常用,估計跟他懸浮有關(guān),容易擋住其他內(nèi)容。那我們現(xiàn)在就研究改如何在滑動列表時隱藏和顯示這個懸浮按鈕。其實也非常簡單,和修改樣式的過程差不多。 今天主講的Material Design系列的兩個控件都不難,所以一起講了,分別是FloatingActionButton和Snackbar。這個系列都是主講...
閱讀 1651·2021-10-12 10:11
閱讀 3767·2021-09-03 10:35
閱讀 1449·2019-08-30 15:55
閱讀 2143·2019-08-30 15:54
閱讀 1006·2019-08-30 13:07
閱讀 1020·2019-08-30 11:09
閱讀 586·2019-08-29 13:21
閱讀 2656·2019-08-29 11:32