63 Android 抽屉效果的实现 + ActionBar Menu

来源:互联网 发布:淘宝一千零一夜2 编辑:程序博客网 时间:2024/05/17 22:21

layout文件下 activity_main.xml (布局文件的代码)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <android.support.v4.widget.DrawerLayout        xmlns:android="http://schemas.android.com/apk/res/android"        android:id="@+id/drawer_layout"        android:layout_width="match_parent"        android:layout_height="match_parent" >        <FrameLayout                        android:id="@+id/content_frame"            android:layout_width="match_parent"            android:layout_height="match_parent" />                  <ListView                       android:id="@+id/left_drawer"            android:layout_width="240dp"            android:layout_height="match_parent"            android:layout_gravity="left"            android:background="#ffffff"            android:choiceMode="singleChoice"            android:divider="@android:color/transparent"            android:dividerHeight="0dp" />            </android.support.v4.widget.DrawerLayout></RelativeLayout>

values 文件下 strings.xml (包含一个数组)

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">Android_v4_DrawerLayout</string>    <string name="action_settings">Settings</string>    <string name="hello_world">Hello world!</string>    <string name="drawer_open">打开</string>    <string name="drawer_close">关闭</string>    <string-array name="allCity">        <item>北京</item>        <item>上海</item>        <item>深圳</item>        <item>广州</item>        <item>郑州</item>        <item>香港</item>></string-array></resources>

MianActivity.java (主代码)

package com.example.android_v4_drawerlayout;import android.os.Bundle;import android.app.Activity;import android.content.res.Configuration;import android.support.v4.app.ActionBarDrawerToggle;import android.support.v4.view.GravityCompat;import android.support.v4.widget.DrawerLayout;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.ListView;public class MainActivity extends Activity {private String[] mPlaneTitles;private DrawerLayout mDrawerLayout;private ActionBarDrawerToggle mDrawerToggle;private ListView mDrawerList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// find by idmDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); // init the ListView and Adapter, nothing new        initListView();        // set a custom shadow that overlays the main content when the drawer        // opens        mDrawerLayout.setDrawerShadow(R.drawable.ic_launcher,                GravityCompat.START);        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_launcher, R.string.drawer_open,                R.string.drawer_close)        {         /** Called when a drawer has settled in a completely closed state. */            public void onDrawerClosed(View view)            {                invalidateOptionsMenu(); // creates call to                                            // onPrepareOptionsMenu()            }            /** Called when a drawer has settled in a completely open state. */            public void onDrawerOpened(View drawerView)            {                invalidateOptionsMenu(); // creates call to                                            // onPrepareOptionsMenu()            }        };        // Set the drawer toggle as the DrawerListener        mDrawerLayout.setDrawerListener(mDrawerToggle);        // enable ActionBar app icon to behave as action to toggle nav drawer        getActionBar().setDisplayHomeAsUpEnabled(true);        // getActionBar().setHomeButtonEnabled(true);        // Note: getActionBar() Added in API level 11}private void initListView() {mDrawerList = (ListView) findViewById(R.id.left_drawer);mPlaneTitles = getResources().getStringArray(R.array.allCity);mDrawerList.setAdapter(new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, mPlaneTitles));mDrawerList.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubmDrawerList.setItemChecked(arg2, true);setTitle(mPlaneTitles[arg2]);mDrawerLayout.closeDrawer(mDrawerList);}});}@Overrideprotected void onPostCreate(Bundle savedInstanceState) {super.onPostCreate(savedInstanceState);// Sync the toggle state after onRestoreInstanceState has occurred.mDrawerToggle.syncState();}@Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);mDrawerToggle.onConfigurationChanged(newConfig);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Pass the event to ActionBarDrawerToggle, if it returns// true, then it has handled the app icon touch eventif (mDrawerToggle.onOptionsItemSelected(item)) {return true;}// Handle your other action bar items...return super.onOptionsItemSelected(item);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}






点击列表文件 选中城市



点击actionBar Menu 返回



0 0
原创粉丝点击