Android-DrawerLayout介紹
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介紹