2. TextInputLayouthtml
2.0 環境配置 須要引用Support v7 和 Support Design 包 You need to use a Theme.AppCompat theme (or descendant) with the design library,注意使用design包必須使用AppCompat的主題 2.1 展現效果:自帶界面友好的錯誤提示 2.2 使用TextInputLayout包裹一個EditText,TextInputLayout和ScrollView同樣,只接受一個子元素 2.3 獲取輸入框 textInputLayout.getEditText(); // 不須要findViewById 2.4 顯示錯誤提示 textInputLayout.setErrorEnable(true); textInputLayout.setError(msg); 2.5 隱藏錯誤提示 textInputLayout.setErrorEnable(false);
3. TextSelectionandroid
3.1 展現效果:對比5.0的文本選擇,6.0系統文本選中顯示的菜單項能夠被修改。 3.2 建立佈局,添加TextView textView, android:textIsSelectable="true" 3.3 獲取TextView對象,註冊回調監聽 tv.setCustomSelectionActionModeCallBack() 3.4 自定義類實現監聽接口 ActionMode.CallBack 3.4 ActionMode.CallBack的onCreateActionMode方法建立Menu對象 3.4.1 建立MenuInflate對象 MenuInflate menuInflate = actionMode.getMenuInflater(); 3.4.2 填充menu對象 menuInflate.inflate(R.menu.main, menu); 3.4.3 方法返回值設置爲true,說明該方法已被攔截 3.6 ActionMode.CallBack的onActionItemClicked()當菜單項被選中時回調
4. FloatingActionButton(FAB)app
4.1 design包中的控件,繼承自ImageButton,用於顯示一個懸浮在界面上的按鈕,能夠設置點擊事件(onClickListener) 4.2 相關屬性 app:elevation="10dp" 設置z軸值 app:pressedTranslationZ="20dp" 按下時z軸值 app:rippleColor="#FF0000FF" 點擊時水波紋顏色 app:fabSize="normal" 兩個值 normal="56dp",mini="48dp" app:layout_anchor="@+id/anchor_id" //指定anchor(錨點) View,注意FAB須要和anchor在同一個CoordinatorLayout裏面 app:layout_anchorGravity="bottom|right" //居於anchor View的什麼位置
5. SnackBar佈局
5.1 展現效果:用於顯示提示,官方建議用於替代Toast 5.2 對比Toast來使用 Toast.makeText(context,msg,0).show(); Snackbar.make(view,msg,0).show(); 5.3 參數裏View的做用 查看官方文檔,該view用於查找ParentView,直到找到CoordinatorLayout或者最上層的根控件,再顯示在找到的ParentView的下面,以肯定SnackBar的顯示位置 5.4 設置點擊事件 snackBar.setAction("提示文字",onClickListener);
6. TabLayout字體
依賴design包 6.1 展現效果:方便的實現tab跟隨Viewpager切換,不須要第三方或者自定義 6.3 在佈局裏使用tablayout 6.4 向tablayout對象addTab tabLayout.addTab(tabLayout.newTab().setText("")) 6.5 關聯ViewPager tabLayout.setupWithViewPager(viewPager) 6.6 ViewPager使用的FragmentPagerAdapter 須要在getPagerTitle方法返回一個字符串,該字符串會做爲對應position的tab的標題。 6.7 設置tab的點擊事件 tabLayout.setOnTabSelectedListener 6.8 相關屬性 app:tabIndicatorColor="#FFFF0000" 選中Tab指示線的顏色 app:tabIndicatorHeight="5dp" 選中Tab指示線的高度 app:tabSelectedTextColor="#FF0000FF" 選中Tab文本的顏色 app:tabTextColor="#FFFFFFFF" 默認Tab文本顏色 app:tabMode="scrollable" 兩個屬性值 scrollable 可滾動,fixed 固定(默認) app:tabGravity="fill" 兩個屬性值 fill 寬度平分屏幕,center,讓Tab居中。 請注意,若是 tabMode 是設置成 scrollable 的,則tabGravity會被忽略。 基本使用: initTab(): 初始化: TabLayout mTabLayout = (TabLayout) findViewById(R.id.tab_layout); 添加Tab: mTabLayout.addTab(mTabLayout.newTab().setText("Tab"+(i+1))); 可設置的屬性: tabMode:scrollable Tab長度固定,可左右滾動,即便當前全部Tab的寬度沒有佔滿TabLayout,也是固定長度,適合Tab個數較多時 tabMode:fixed,平分當前TabLayout的寬度給每個Tab,適合Tab個數較少時 Tab的點擊監聽: mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener()); 和ViewPager關聯 佈局中添加viewpager 建立本身的MyPagerAdapter 繼承FragmentPagerAdapter,建立SubFragment,實現onCreateView,newInstance(String content)方法, MyPagerAdapter中新建方法addFragment,實現getItem,getPagerTitle. ViewPager設置setAdapter TabLayout和ViewPager關聯:tabLayout.setupWithViewPager(viewPager) Tab的選中回調時 viewPager.setCurrentItem(tab.getPosition());
7. NavigationView動畫
7.1 展現效果:用做側滑菜單的側邊導航欄 7.2 必須嵌套在DrawerLayout裏使用 DrawerLayout包含兩個子佈局,一個導航欄,另外一個爲顯示的正文 7.3 NavigationView的屬性: 7.3.1 app:headerLayout,可選項,能夠指定一個佈局做爲導航內容的Header 7.3.2 app:menu,必需項,指定一個menu,做爲導航內容的菜單 7.3.3 其餘相關屬性 app:itemIconTint ICON 染色 app:itemBackground item的背景色 app:itemTextColor item的文本顏色 7.4 導航欄的點擊響應 7.4.1 navigationView.setNavigationItemSelectedListener 該方法監聽被點擊的MenuItem,判斷MenuItem對象處理對應的事件響應
8.CoordinatorLayout 結合FAB調整佈局.net
8.1 CoordinatorLayout 的做用 1.能夠協調多個佈局間的位置關係。讓FloatActionButton上下滑動,爲Snackbar留出空間; 2.拓展或摺疊toolbar,讓主內容區域有更多的空間; 3.控制view擴展或收縮,以及大小比例 8.2 實現調整FAB 與SnackBar的位置功能 8.2.1 FloatActionButton外加一層CoordinatorLayout 便可調整。
9.CoordinatorLayout 結合AppBarLayout 實現向上滑動隱藏ToolBarcode
思路 9.1 AppBarLayout 的做用 1.用AppBarLayout包裹的子view會以一個總體的形式做爲AppBar,從而具有統一的風格。 2.它的子控件使用app:layout_scrollFlags 屬性能夠實現向上滑動隱藏控件的功能。滾動事件由可滾動控件設置app:layout_behavior 屬性通知。 9.2 app:layout_scrollFlags 屬性值介紹(AppBarLayout包裹的子控件使用) // scroll 表示該view能夠被滑出屏幕。 // enterAlways 表示任意向下的滾動都會致使該View變爲可見,啓用快速「返回模式」。 // exitUntilCollapsed 當有miniheight 時,向上滾動則一直保持miniheight高度。 // enterAlwaysCollapsed 當滑動的控件到達其頂部時,該隱藏的View才顯示 9.3 app:layout_behavior 屬性值介紹 配合AppBarLayout 使用的可滾動控件須要設置這個屬性值,用於告訴AppBarLayout,當前控件的滾動狀態,標識本身發起的滾動能夠致使AppBar收縮。 固定寫法:app:layout_behavior="@string/appbar_scrolling_view_behavior" 步驟 1.添加CoordinatorLayout,包裹AppBarLayout和可滾動的控件 2.添加AppBarLayout控件,內部包裹 ToolBar 及TabLayout 控件 3.ToolBar 設置app:layout_scrollFlags="scroll|enterAlways" //表示向上滾動時,隱藏Toolbar 控件。 5. CoordinatorLayout 下添加可滾動控件,並在該控件中設置 app:layout_behavior="@string/appbar_scrolling_view_behavior" 屬性。用於告訴 AppBarLayout,由該控件發起滾動事件。 6. 注意: 帶layout_scrollFlags的view須要放在固定View的前面,這樣收回的view纔可以正常退出,而固定的view繼續留在頂部
十、CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout 結合實現視差效果orm
10.1 AppBarLayout用於包裹且僅包裹CollapsingToolbarLayout,使得CollapsingToolbarLayout做爲AppBar而存在 10.2 CollapsingToolbarLayout做用:用於摺疊ToolBar,提供滑動中的漸變和視差效果 10.3 設置CollapsingToolbarLayout屬性 app:expandedTitleMarginStart="10dp" // 指定文字和左邊緣的間距 app:contentScrim="?android:attr/colorPrimary" //摺疊後ToolBar的顏色 app:layout_scrollFlags="scroll|exitUntilCollapsed" //設置滑動標誌,表示該View會離開屏幕範圍,直到收折到最小高度 CollapsingToolbarLayout包裹的子View能夠設置的屬性 app:layout_collapseMode="pin" 表示不會被滾出屏幕範圍 app:layout_collapseMode="parallax" 表示滾動過程當中,會一直保持可見區域在正中間 10.4 發起layout_behavior NestedScrollView 有behavior 屬性,ScrollView 沒有。 給NestedScrollView設置app:layout_behavior="@string/appbar_scrolling_view_behavior" 10.5 手勢滑動時,修改toolbar文字大小,文字顏色 10.5.1 獲取到CollapsingToolbarLayout對象 10.5.2 設置標題 collapsingToolbarLayout.setTitle 10.5.3 設置展開狀態時Title顏色 collapsingToolbarLayout.ExpandedTitleColor 10.5.4 設置摺疊狀態時Title顏色 collapsingToolbarLayout.setCollapsedTitleTextColor
**CoordinatorLayout使用新的思路經過協調調度子佈局的形式實現觸摸影響佈局的形式產生動畫效果。CoordinatorLayout經過設置子View的 Behaviors來調度子View。系統
1.CoordinatorLayout:**htm
1.1 做用 1.1.1做爲頂層佈局 1.1.2調度協調子佈局 1.2 原理 CoordinatorLayout使用調度子佈局的形式實現觸摸影響佈局的形式產生動畫效果。CoordinatorLayout經過設置子View的 Behaviors來調度子View。系統(Support V7)提供了AppBarLayout.Behavior, AppBarLayout.ScrollingViewBehavior, FloatingActionButton.Behavior, SwipeDismissBehavior<V extends View> 等。 1.3 CoordinatorLayout結合FloatingActionButton 使用 CoordinatorLayout是一個在ViewGroup的基礎擴展的類,設置子視圖的android:layout_gravity屬性控制位置。 1.4 CoordinatorLayout與AppBarLayout 1.4.1 AppBarLayout嵌套TabLayout和ToolBar,來實現向上滑動時,隱藏ToolBar功能。 視圖滾動時,Toolbar會隱藏,這個效果是Android Support Library裏面新增的CoordinatorLayout, AppBarLayout實現的。經過AppBarLayout的子視圖的屬性控制。觀察AppBarLayout的子佈局,Toobar有app:layout_scrollFlags屬性, 這就是控制滑動時視圖效果的屬性。app:layout_scrollFlags有四個值: scroll: 全部想滾動出屏幕的view都須要設置這個flag, 沒有設置這個flag的view將被固定在屏幕頂部。例如,TabLayout 沒有設置這個值,將會停留在屏幕頂部。 enterAlways: 設置這個flag時,向下的滾動都會致使該view變爲可見,啓用快速「返回模式」。 enterAlwaysCollapsed: 當你的視圖已經設置minHeight屬性又使用此標誌時,你的視圖只能已最小高度進入,只有當滾動視圖到達頂部時才擴大到完整高度。 exitUntilCollapsed: 滾動退出屏幕,最後摺疊在頂端。 1.4.2 注意事項 爲了使得Toolbar有滑動效果,必須作到以下三點: 1. CoordinatorLayout做爲佈局的父佈局容器。 2. 給須要滑動的組件設置 app:layout_scrollFlags=」scroll|enterAlways」 屬性。 3. 給滑動的組件設置app:layout_behavior屬性 1.5 CoordinatorLayout結合AppBarLayout嵌套CollapsingToolbarLayout(可摺疊ToolbarLayout),來實現ToolBar 摺疊效果,及展示視差效果 1.5.1 CollapsingToolbarLayout做用 CollapsingToolbarLayout可實現Toolbar的摺疊效果。CollapsingToolbarLayout的子視圖相似與LinearLayout垂直方向排放。 1.5.2 CollapsingToolbarLayout 提供如下屬性和方法 1. Collapsing title:ToolBar的標題,當CollapsingToolbarLayout全屏沒有摺疊時,title顯示的是大字體,在摺疊的過程當中,title不斷變小到必定大小的效果。 你能夠調用setTitle(CharSequence)方法設置title。 2. Content scrim:ToolBar被摺疊到頂部固定時候的背景,你能夠調用setContentScrim(Drawable)方法改變背景或者 在屬性中使用 app:contentScrim=」?attr/colorPrimary」來改變背景。 3. Status bar scrim:狀態欄的背景,調用方法setStatusBarScrim(Drawable)。不過這個只能在Android5.0以上系統有效果。 4. Parallax scrolling children:CollapsingToolbarLayout滑動時,子視圖的視覺差,能夠經過屬性app:layout_collapseParallaxMultiplier=」0.6」改變。值de的範圍[0.0,1.0], 值越大視察越大。 5. CollapseMode :子視圖的摺疊模式,在子視圖設置,有兩種「pin」:固定模式,在摺疊的時候最後固定在頂端;「parallax」:視差模式,在摺疊的時候會有個視差摺疊的效果。 咱們能夠在佈局中使用屬性app:layout_collapseMode=」parallax」來改變。 1.5.2 使用CollapsingToolbarLayout實現摺疊效果,須要注意3點 1. AppBarLayout的高度固定 2. CollapsingToolbarLayout的子視圖設置layout_collapseMode屬性 3. 關聯懸浮視圖設置app:layout_anchor,app:layout_anchorGravity屬性 1.6 CoordinatorLayout 還提供了一個 layout_anchor 的屬性,連同 layout_anchorGravity 一塊兒,能夠用來放置與其餘視圖關聯在一塊兒的懸浮視圖(如 FloatingActionButton)
design 包中控件相關資料:
http://www.androidchina.net/2...
http://blog.csdn.net/xyz_lmn/...
http://developer.android.com/...