1. 程式人生 > >Android-DrawerLayout介紹

Android-DrawerLayout介紹

mark support save per find ces findview 主題 andro

DrawerLayout已經出來非常久了,個人認為國內的app都深受ios的毒害在設計上都爭先模仿ios的風格,都忘了什麽是獨特的Android風格。自己得先學的然後跟產品爭取在項目中使用上一系列的Android風格,碰巧DrawerLayout菜單導航被我爭取到了,用到了項目上。

首先 DrawerLayout存在於v4包中。我們僅僅須要在xml配置就可以

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawerLayout"
    xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/hello_world" android:textColor="@android:color/black" android:gravity="center"
/> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:background="#ffffff" android:orientation="vertical"/> </android.support.v4.widget.DrawerLayout>

在這須要介紹下ActionBarDrawerToggle。控制DrawerLayout的顯示/隱藏使用。
在Activity中的兩個回調函數中使用它:
onConfigurationChanged
onOptionsItemSelected
調用ActionBarDrawerToggle.syncState() 在Activity的onPostCreate()中。指示。ActionBarDrawerToggle與DrawerLayout的狀態同步。並將ActionBarDrawerToggle中的drawer圖標,設置為ActionBar的Home-Button的icon

public class DrawerActivity extends AppCompatActivity {

    DrawerLayout mDrawerLayout;
    ActionBarDrawerToggle toggle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test_activity);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
        toggle = new ActionBarDrawerToggle(DrawerActivity.this, mDrawerLayout, R.string.hello_world, R.string.hello_world);
        mDrawerLayout.setDrawerListener(toggle);

        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setTitle("TestDrawerLayout");
    }

    @Override
    public void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        toggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        toggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (toggle.onOptionsItemSelected(item))
            return true;
        return super.onOptionsItemSelected(item);
    }
}

以上幾步設置就可以在項目中成功使用DrawerLayout。可是須要註意幾點:
1.android.support.v4.widget.DrawerLayout是存在於v4包下
2.主題須要顯示ActionBar,比如Theme.AppCompat.Light.DarkActionBar
3.ActionBarDrawerToggle是個DrawerListener實現,我們能夠自己寫DrawerListener實現特定的要求。

我們能夠發現獨具自帶的Android的風格我們使用起來也是非常easy。而我們卻深受ios的影響太多了。

Android-DrawerLayout介紹