android 5.0新增控件
CardView顧名思義是卡片視圖,它繼承FrameLayout。它是一個帶圓角的背景和陰影FrameLayout。CardView被包裝為一種布局,並且經常在ListView和RecyclerView的Item布局中,作為容器使用。
CardView的使用非常簡單:
android:layout_width="match_parent"
android:layout_height="60dp">
android:id="@+id/ripple_button"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="@drawable/ripple"
android:gravity="center"
android:text="我在一個CardView里面" />
Patelle(調色板)
Patelle是一個輔助類,它的作用是從圖片中獲取突出的顏色。
它可以提取下面幾種特性的突出顏色:
- Vibrant(充滿活力的)
- Vibrant Dark(充滿活力,黑暗的)
- Vibrant Light(充滿活力的,明亮的)
- Muted(柔和的)
- Muted Dark(柔和的,黑暗的)
- Muted Light(柔和的,明亮的)
// 獲取應用程序圖標的Bitmap
bitmap= BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
// 通過bitmap生成調色板palette
Palette palette=Palette.from(bitmap).generate();
// 獲取palette充滿活力色顏色
int vibrantColor=palette.getVibrantColor(Color.WHITE);
Toolbar(工具欄)
Toolbar顧名思義是工具欄,作為ActionBar的替代品出現,谷歌推薦使用Toolbar替代ActionBar。
Toolbar可以放置在任何地方,不像ActionBar一樣只能放置在固定的位置。
Toolbar支持比ActionBar更集中的特征。
Toolbar可能包含以下可選元素的組合:
- 導航按鈕
- 品牌的Logo圖像
- 標題和子標題
- 一個或多個自定義視圖
this.toolbar = (Toolbar) findViewById(R.id.toolbar);
// 設置Logo
toolbar.setLogo(R.mipmap.ic_launcher);
// 設置標題
toolbar.setTitle("Android5.0");
// 設置子標題
toolbar.setSubtitle("新控件");
//設置ActionBar,之后就可以獲取ActionBar並進行操作,操作的結果就會反應在toolbar上面
setActionBar(toolbar);
//設置了返回箭頭,,相當於設置了toolbar的導航按鈕
getActionBar().setDisplayHomeAsUpEnabled(true);
RippleDrawable(波紋圖)
RippleDrawable顧名思義是波紋圖,只能在Android5.0以上使用,目前還沒有提供RippleDrawable向下兼容的支持包。
RippleDrawable可顯示一個漣漪效應響應狀態變化 。
定義一個UI的背景圖片為RippleDrawable
Android:background="@drawable/ripple"
在drawable文件夾下面定義一個RippleDrawable的xml文件
android:color="#0000FF">
RecyclerView是ListView的替代品,谷歌推薦使用RecyclerView替代ListView。 RecyclerView提供比ListView更加靈活的使用,並且性能比ListView更優。 RecyclerView可以設置線性,網格,瀑布流式三種布局管理器。 - LinearLayoutManager(線性布局管理器) - GridLayoutManager(網格布局管理器) - StaggeredGridLayoutManager(瀑布流式布局管理器)android.support.design.widget.NavigationView
android.support.design.widget.TabLayout
android.support.design.widget.TextInputLayout
android.support.design.widget.FloatingActionButton 有一個簡書博客寫的很詳細 android 5.0新增的控件總結
android6.0新增控件
NavigationView,CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout的使用
一,首先是CoordinatorLayout: CoordinatorLayout是一個超強的FrameLayout.CoordinatorLayout旨在用於兩個基本用例:
1,作為頂級應用程序的裝飾或鍍布局.(作為頂層布局)
2,作為一個或多個子視圖的特異性相互作用的容器.(調度協調子布局)
CoordinatorLayout使用新的思路通過協調調度子布局的形式實現觸摸影響布局的形式產生動畫效果.CoordinatorLayout通過設置子View的Behaviors來調度子View.系統(v7包)提供了AppBarLayout.Behavior,AppBarLayout.ScrollingViewBehavior,FloatingActionButton.Behavior,SwipDismissBehavior等.CoordinatorLayout是怎么協調子控件呢?大家可以看下這篇文章:https://segmentfault.com/a/1190000005024216?utm_source=Weibo&utm_medium=shareLink&utm_campaign=socialShare&from=singlemessage&isappinstalled=0其實說簡單點:CoordinatorLayout主要用於協調內部的各個子控件進行交互,通過設置子控件的behavior來操控子控件的一些操作和動畫。
二,然后是AppBarLayout: AppBarLayout繼承自LinearLayout,布局方向為垂直方向.AppBarLayout是在LinearLayout上加了一些材料設計的概念,它可以讓你定制當某個可滾動View的滾動手勢發生變化時,其內部的子View實現何種動作.一般情況下我們會在AppBarLayout中包裹Toolbar或者TabLayout,當滑動是可以選擇需要隱藏的部分。AppBarLayout中有一個內置的Behavior類,而Toolbar和TabLayout中沒有,由此可以看出正是因為AppBarLayout中又Behavior類,才能與CoordinatorLayout產生交互(AppBarLayout必須是CoordinatorLayout的直接子View)。需要注意的是AppBarLayout的子控件需要設置app:layout_scrollFlags屬性(或者通過setScrollFlags()方法)才能達到其滑動效果。layout_scrollFlags屬性有以下幾種:
1,scroll:設置該flag,該控件可以滑動到屏幕之外,若未設置則會固定在屏幕的頂部。
2,enterAlways:設置該flag,向下任意的滑動都會導致該控件(設置layout_scrollFlags=”enterAlways”屬性的控件)變為可見,啟用快速“返回模式”。
3,enterUntilCollapsed:向上滾動時收縮View,但可以固定Toolbar一直在上面。
4,enterAlwaysCollapsed:當你的View已經設置minHeight屬性又使用此標志時,你的View只能以最小高度進入,只有當滾動視圖到達頂部時才擴大到完整高度。
5,snap(v23.1):簡單理解就是View有一種吸附效果,View不會存在局部顯示的效果,要么全部滑動出屏幕,要么會在屏幕中顯示,有點類似於ViewPager的左右滑動。
關於Lsyout_ScrollFlags屬性的詳細解釋可以看這篇文章,解釋的很詳細。http://codecloud.net/17998.html
三,最后是CollapsingToolbarLayout: CollapsingToolbarLayout作用是提供了一個可以折疊的Toolbar,它繼承至FrameLayout,給它設置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在響應layout_behavior事件時作出相應的scrollFlags滾動事件(移除屏幕或固定在屏幕頂端)。CollapsingToolbarLayout可以通過app:contentScrim設置折疊時工具欄布局的顏色,通過app:statusBarScrim設置折疊時狀態欄的顏色。默認contentScrim是colorPrimary的色值,statusBarScrim是colorPrimaryDark的色值。CollapsingToolbarLayout的子布局有3種折疊模式(Toolbar中設置的app:layout_collapseMode):
1,none:這個是默認屬性,布局將正常顯示,沒有折疊的行為。
2,pin: CollapsingToolbarLayout折疊后,Toolbar布局將固定在頂部。
3,parallax: CollapsingToolbarLayout折疊時,此布局會有折疊視差效果。
當CollapsingToolbarLayout的子布局設置了parallax模式時,我們還可以通過app:layout_collapseParallaxMultiplier設置視差滾動因子,值為:0~1。
以上三種布局需要結合使用,並設置相應的屬性才能達到很好的效果。
android 7.0新控件
DiffUtil是support-v7:24.2.0中的新工具類,它用來比較兩個數據集,尋找出舊數據集-》新數據集的最小變化量。
說到數據集,相信大家知道它是和誰相關的了,就是我的最愛,RecyclerView。
就我使用的這幾天來看,它最大的用處就是在RecyclerView刷新時,不再無腦mAdapter.notifyDataSetChanged()。
以前無腦mAdapter.notifyDataSetChanged()有兩個缺點:
不會觸發RecyclerView的動畫(刪除、新增、位移、change動畫)
性能較低,畢竟是無腦的刷新了一遍整個RecyclerView , 極端情況下:新老數據集一模一樣,效率是最低的。