Android Design Support Library的使用


1、SnackBar控件:

使用方式跟Toast差不多

Snackbar.make(view,"展示的信息",5000).setAction("確定", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        }).show();


2、TextInputLayout控件:

注意事項:此控件內部必須要有一個EditTextView配合使用

2.1 xml:

<android.support.design.widget.TextInputLayout
    android:id="@+id/textinputlayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="20" />

</android.support.design.widget.TextInputLayout>

2.2 code:

textinputlayout.setHint("請輸入:”);//指引提示
edit.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if (s.length() > 7) {
            textinputlayout.setError("您輸入的文字過長”);//錯誤提示
        } else {
            textinputlayout.setErrorEnabled(false);
        }
    }
    @Override
    public void afterTextChanged(Editable s) {
    }
});

效果圖:

3、FloatingActionButton控件:

一個負責顯示界面基本操作的帶陰影效果圓形按鈕

3.1 xml

<android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_margin="10dp"
        app:backgroundTint="#ff87ffeb” //填充顏色
        app:elevation=“6dp"//起始陰影高度
        app:pressedTranslationZ=“8dp”//點擊時的陰影高度
        app:layout_anchor="@id/mlayout”//錨點
        app:layout_anchorGravity="bottom|right|end”//位於錨點的位置
        app:rippleColor="#33728dff”//按下時的波紋顏色
        android:src="@drawable/ic_launcher”//中間的圖形
        />


注意事項:需要setOnClickListener或者設置android:clickable="true"才能看到點擊效果
效果圖:

4、TabLayout:  

一般配合ViewPager使用

4.1 注意事項:

1:ViewPager設置適配器後再綁定   
2:需要重寫PagerAdapter的getPagerTitle()方法,否則TAB text不顯示 

4.2 xml

<android.support.design.widget.TabLayout
    android:id="@+id/tabLayout"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_below="@+id/textinputlayout"
    app:tabIndicatorColor="@color/white"//底部橫線顏色
    app:tabSelectedTextColor="@color/gray”//tab選中後的顏色
    app:tabTextColor="@color/white”//tab的默認顏色
    />

4.3 code

//MODE_FIXED(tablayout大小固定,平均分成N等分) MODE_SCROLLABLE(tab大小固定,可左右滑動)
tabLayout.setTabMode(TabLayout.MODE_FIXED);
//GRAVITY_CENTER    GRAVITY_FILL
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
viewpager.setAdapter(new MyViewPagerAdapter());
tabLayout.setupWithViewPager(view pager);
MyViewpagerAdapter中記得重寫getPageTitle(int position)
 @Override
        public CharSequence getPageTitle(int position) {

            return tabLists.get(position);
        }

效果圖:

5、NavigationView

抽屜導航欄,一般配合DrawerLayout使用
注意事項:新添加兩個自定義屬性app:headerLayout="@layout/head”   app:menu="@menu/menu_left"

5.1  head.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:layout_width="50dp"
        android:layout_centerInParent="true"
        android:background="@drawable/ic_launcher"
        android:layout_height="50dp" />

</RelativeLayout>

5.2 menu_left:


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_home"
            android:title="Home"/>
        <item
            android:id="@+id/nav_messages"
            android:title="Messages"/>
    </group>

    <item android:title="Sub items">
        <menu>
            <item

                android:title="Sub item 1"/>
            <item
                android:title="Sub item 2"/>
        </menu>
    </item>

</menu>

5.3 code:

navigationView.setNavigationItemSelectedListener(

        new NavigationView.OnNavigationItemSelectedListener()
        {

            private MenuItem mPreMenuItem;

            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem)
            {
                if (mPreMenuItem != null){
                    mPreMenuItem.setChecked(false);
                }
                menuItem.setChecked(true);
                mDrawerLayout.closeDrawers();
                mPreMenuItem = menuItem;

                return true;
            }
        });

6、終極大招  CoordinatorLayout

6.1  xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawerlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:id="@+id/coordinatorlayout"
        android:layout_height="match_parent">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbarlayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:layout_scrollFlags="scroll">//滾動視圖都必須設置scrollFlags="scroll"這個屬性

            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/collapsing_toolbar"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                app:contentScrim="?attr/colorPrimary"
                app:expandedTitleMarginEnd="64dp"
                app:expandedTitleMarginStart="48dp"
                app:layout_scrollFlags="scroll|exitUntilCollapsed">

                <ImageView
                    android:id="@+id/head"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:fitsSystemWindows="true"
                    android:scaleType="centerCrop"
                    android:src="@drawable/header"
                    app:layout_collapseMode="parallax" />//<span style="font-family: 'microsoft yahei'; font-size: 14px;">視差模式,在摺疊的時候會有個視差摺疊的效果</span>

                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    app:layout_collapseMode="pin"//<span style="font-family: 'microsoft yahei'; font-size: 14px;">固定模式,在摺疊的時候最後固定在頂端</span>
                    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

            </android.support.design.widget.CollapsingToolbarLayout>

            <android.support.design.widget.TabLayout
                android:id="@+id/tablayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

        </android.support.design.widget.AppBarLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            app:layout_scrollFlags="scroll" />


        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right|bottom"
            android:layout_margin="10dp"
            android:clickable="true"
            android:src="@drawable/ic_launcher"
            app:backgroundTint="#87ffeb"
            app:elevation="6dp"
            app:pressedTranslationZ="8dp"
            app:rippleColor="#33728dff" />


    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation"
        android:layout_width="200dp"
        app:menu="@menu/menu_left"
        app:headerLayout="@layout/head"
        android:layout_height="match_parent"
        android:layout_gravity="left"></android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>

分析:
設置的layout_scrollFlags有如下幾種選項:
  • scroll: 所有想滾動出屏幕的view都需要設置這個flag- 沒有設置這個flag的view將被固定在屏幕頂部。
  • enterAlways: 這個flag讓任意向下的滾動都會導致該view變爲可見,啓用快速“返回模式”。
  • enterAlwaysCollapsed: 當你的視圖已經設置minHeight屬性又使用此標誌時,你的視圖只能已最小高度進入,只有當滾動視圖到達頂部時才擴大到完整高度。
  • exitUntilCollapsed: this flag causes the view to scroll off until it is ‘collapsed’ (its minHeight) before exiting。

需要注意的是,後面兩種模式基本只有在CollapsingToolbarLayout纔有用,而前面兩種模式基本是需要一起使用的,也就是說,這些flag的使用場景,基本已經固定了。

效果圖:




源碼下載:








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章