1. 程式人生 > >Android中的 Material Design

Android中的 Material Design

1. 為什麼有 Material Design?

     安卓標準的介面設計風格沒有IOS美觀,而且Android平臺介面風格不統一。Material Design在2014年推出,解決美觀與Android介面風格不統一問題。

2.Toolbar代替ActionBar,更加靈活

     更改application的主題:

     res-->values-->styles

      修改activity_main.xml中程式碼,加入Toolbar:

     修改MainActivity中程式碼:

 3. 滑動選單DrawerLayout(裡面有兩部分,一部分為主螢幕,一部分為隱藏的選單)

 4. 導航檢視NavigationView(美化滑動選單DrawerLayout)

     加入build閉包:

     準備一:建立nav_menu.xml:

     準備二:建立nav_header.xml:

     修改主佈局檔案:

 修改MainActivity檔案:

public class MainActivity extends AppCompatActivity {
    private DrawerLayout mDrawerLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar=findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);//設定標題欄
        mDrawerLayout=findViewById(R.id.drawer_layout);
        NavigationView navigationView=findViewById(R.id.nav_view);
        ActionBar actionBar=getSupportActionBar();//獲取標題欄
        if (actionBar!=null){
            actionBar.setDisplayHomeAsUpEnabled(true);//顯示導航按鈕
            actionBar.setHomeAsUpIndicator(R.mipmap.ic_launcher);//設定導航按鈕圖示(Indicator指示器)
        }

        navigationView.setCheckedItem(R.id.inform);//預設選中
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {//監聽
                mDrawerLayout.closeDrawers();//關閉導航抽屜
                return true;
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {//建立選項選單,在右上角
        getMenuInflater().inflate(R.menu.toolbar,menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case android.R.id.home:
                mDrawerLayout.openDrawer(GravityCompat.START);//將滑動選單展示出來
                break;
            case R.id.duty:
                Toast.makeText(this,"you clicked duty",Toast.LENGTH_SHORT).show();
                break;
            case R.id.more:
                Toast.makeText(this,"you clicked more",Toast.LENGTH_SHORT).show();
                break;
            case R.id.settings:
                Toast.makeText(this,"you clicked settings",Toast.LENGTH_SHORT).show();
                break;
            default:
        }
        return true;
    }
}

5. 結果大致介面: