Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 5.X新特性

Android 5.X新特性

編輯:關於Android編程

首先,如果要使用Android 5.X的新特性,我們必須導入5.X的支持包
這裡寫圖片描述

FloatingActionButton

Android 的新的設計規范中具有陰影效果的懸浮窗按鈕。
使用之前需要先引入design包。
FloatingActionButton是ImageView子類

這裡寫圖片描述

我們先來看布局中的屬性設置
    
相關的屬性介紹 在根布局下添加
xmlns:app=”http://schemas.android.com/apk/res-auto”
app:backgroundTint

當前按鈕顯示的顏色

app:rippleColor

波紋顏色

 app:borderWidth

邊緣寬度

app:elevation

按鈕的懸浮海拔,決定了陰影的大小,海拔越大陰影越大

app:pressedTranslationZ

按下去時按鈕在Z軸的移動,決定了陰影的動畫,Z軸變大陰影變大

相關的代碼中的實現
floatingActionButton= (FloatingActionButton) findViewById(R.id.fab);
        floatingActionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(v,"this is a sncakbar",Snackbar.LENGTH_LONG).setAction("Action", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(MainActivity.this, "我被點擊了", Toast.LENGTH_SHORT).show();
                    }
                }).show();
            }
        });

CoordinatorLayout

CoordinatorLayout是一種強力的FrameLayout。主要是為了協調各個子布局的鏈接。尤其是在子控件存在關聯的動畫時使用。要求子控件存在對應的behavior。
功能
一 主要作為根布局使用
二 協調子布局
三 添加錨點

在xml文件中設置根布局為CoordinatorLayout
在布局中聲明
xmlns:app=”http://schemas.android.com/apk/res-auto”
在子布局中可以使用
設置子布局的錨點,默認為父控件
app:layout_anchor=”@id/appbar”
設置布局(一般使用支持包提供的控件)在錨點控件上的位置
app:layout_anchorGravity=”bottom|start”

這裡寫圖片描述




    

AppBarLayout和Toolbar

AppBarLayout

AppBarLayout 是繼承垂直方向的LinerLayout實現的一個ViewGroup容器組件,它是為了Material Design設計的App Bar,支持手勢滑動操作。
AppBarLayout,它的作用是把AppBarLayout包裹的內容都作為AppBar。

這裡寫圖片描述



        

Toolbar

ToolBar是工具欄。Android之前的標題欄設計使用麻煩,所以Google推出了向下兼容的工具欄。如果要是工具欄作為標題欄必需要調用方法setSupportActionBar()。不然該工具欄不顯示
ToolBar包含了更多的功能。
這裡寫圖片描述



        

    
        toolbar= (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //設置toolbar的左邊的返回或者是home的按鈕
        final ActionBar ab = getSupportActionBar();
        ab.setHomeAsUpIndicator(R.mipmap.ic_done);
        ab.setDisplayHomeAsUpEnabled(true);

        //設置toolbar的左邊的返回或者是home的按鈕的點擊事件
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "點擊了返回按鈕", Toast.LENGTH_SHORT).show();
            }
        });

我們還可以在Toolbar中添加一些簡單的點擊按鍵
這裡寫圖片描述

這裡需要我們和Action一樣,要自己布局menu的菜單項



下面再住代碼中為toolbar創建菜單
//創建toolbar的按鈕菜單
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.simple_action,menu);
        return true;
    }

    //用來響應側邊三個點的那個菜單項當前的選中項
    public boolean onPrepareOptionsMenu(Menu menu) {
        switch (AppCompatDelegate.getDefaultNightMode()) {
            case AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM:
                menu.findItem(R.id.menu_night_mode_system).setChecked(true);
                break;
            case AppCompatDelegate.MODE_NIGHT_AUTO:
                menu.findItem(R.id.menu_night_mode_auto).setChecked(true);
                break;
            case AppCompatDelegate.MODE_NIGHT_YES:
                menu.findItem(R.id.menu_night_mode_night).setChecked(true);
                break;
            case AppCompatDelegate.MODE_NIGHT_NO:
                menu.findItem(R.id.menu_night_mode_day).setChecked(true);
                break;
        }
        return true;
    }

    //設置相應的toolBar子控件的點擊事件
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                //在這裡同樣可以添加toolbar的home鍵的點擊事件
                return true;
            case R.id.menu_night_mode_system:
                setNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
                break;
            case R.id.menu_night_mode_day:
                setNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                break;
            case R.id.menu_night_mode_night:
                setNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                break;
            case R.id.menu_night_mode_auto:
                setNightMode(AppCompatDelegate.MODE_NIGHT_AUTO);
                break;
        }
        return super.onOptionsItemSelected(item);
    }

    //設置相應的夜間/白天模式
    private void setNightMode( int nightMode) {
        AppCompatDelegate.setDefaultNightMode(nightMode);
        if (Build.VERSION.SDK_INT >= 11) {
            recreate();
        }
    }

這裡寫圖片描述

DrawerLayout和NavigationView

二者結合使用,就可以實現簡單的側滑菜單效果

DrawerLayout

DrawerLayout是ViewGroup的子類。作為一個界面的頂層容器。允許抽屜窗口從左右邊緣拖出。
DrawerLayout中抽屜的位置由layout_gravity控制,start代表右邊end代表左邊(國內)。抽屜窗口的高度一般設置為match_parent。
DrawerLayout.DrawerListener可用於監測的抽屜視圖的狀態和動畫。避免執行昂貴(消耗內存CPU比較大)的操作,如自定義動畫。 NavigationView是FrameLayout的子類。主要用於添加應用程序的常用工具欄。一般在DrawerLayout中使用。
主要包含兩個屬性
headerLayout界面的頭布局
menu界面上的菜單欄
上方的menu的點擊事件在onNavigationItemSelected監聽器上實現

這裡寫圖片描述

首先我們先來看側滑菜單的布局代碼


    //這裡是住布局的引用,沒有寫在一起,這樣看著條理清晰一些,這行注釋要刪除掉,不能這麼注釋
    

    
layout_head.xml




    

sliding_menu.xml這個布局位於menu文件夾下面

主布局layout_main.xml



    

        

        
    

    


    
在之後就是邏輯代碼的實現了
        //控件的實例化
        drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        if (navigationView != null) {
            setupDrawerContent(navigationView);
        }
為側滑菜單的菜單項設置相應的點擊事件
//設置側滑菜單的點擊事件
    private void setupDrawerContent(NavigationView navigationView) {
        navigationView.setNavigationItemSelectedListener(
                new NavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(MenuItem menuItem) {
                        menuItem.setChecked(true);
                        drawerLayout.closeDrawers();
                        return true;
                    }
                });
    }
在點擊toolbar的home鍵的時候,我們這樣設置邏輯處理
            case android.R.id.home:
                drawerLayout.openDrawer(GravityCompat.START);
                return true;

CollapsingToolbarLayout

CollapsingToolbarLayout作用是提供了一個可以折疊的Toolbar,它繼承至FrameLayout。
設置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在響應layout_behavior事件時作出相應的scrollFlags滾動事件(移除屏幕或固定在屏幕頂端)。
設置contentScrim可以控制滾動前後的背景色
在子控件中設置layout_collapseMode可以更改折疊的動畫效果

CollapsingToolbarLayout提供了可以折疊的標題欄,如果滑動的事件不發生在該標題欄上,例如ScrollView中時,需要我們使用NestedScrollView,並且指定他的behavior。這樣通過CoordinatorLayout能夠協調他們的滑動事件

簡單的Demo

最後附上一個簡單的Demo供大家共同學習吧 傳送門Android 5.X新特性簡單Demo,GitHub

這裡寫圖片描述

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved