DrawerLayoutで簡単な引き出し効果を実現


前言、この文章は最も基礎的なDrawerLayoutを利用して引き出しの効果を実現して、私もできるだけ最も効率的なコードに簡素化して、後で私はその他の比較的に複雑な機能を貼ります.
まず効果図を見る
タイトルバーの文字は、itemをクリックすることによって、異なるスタイルが表示されます.
直接コードをつける.
次はactivity_mainのコード
<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.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" >

        <!--             -->
        <!--       DrawerLayout      ,         ,            -->

        <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="@android:color/holo_red_dark"
            android:choiceMode="singleChoice"
            android:divider="@android:color/transparent"
            android:dividerHeight="5dp" />
    </android.support.v4.widget.DrawerLayout>

</RelativeLayout>
引き出しメニューの幅はdp単位で、高さは親Viewと同じです.引き出しメニューの幅は320 dpを超えないべきで、このようにユーザーはメニューが開いたときに一部のコンテンツインタフェースを見ることができる.次はMainActivityコード
package com.example.chouti;

import android.os.Bundle;
import android.app.Activity;
import android.content.res.Configuration;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;

public class MainActivity extends Activity {

	private String[] mPlanetTitles = { "hahhooo", "jdahldfj", "     ",
			"      ", "4", "jdahldfj", "     ", "      ", "jdahldfj", "     ",
			"      " };
	private DrawerLayout mDrawerLayout;
	private ActionBarDrawerToggle mDrawerToggle;
	private ListView mDrawerList;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
		//    ListView     
		initListView();
		 //mDrawerLayout.setDrawerShadow(R.drawable.ic_launcher, GravityCompat.START);  
		//   ActionBarDrawerToggle
		mDrawerToggle = new ActionBarDrawerToggle(this,//     Activity  
				mDrawerLayout,//DrawerLayout   
				R.drawable.ic_launcher, //          drawable  (           ,    onPostCreate(Bundle savedInstanceState))
				R.string.hello_world,//              (        )
				R.string.hello_world);//             (        )
		//  ActionBarDrawerToggle   DrawerListener
		mDrawerLayout.setDrawerListener(mDrawerToggle);

		// ActionBar      (      ,         )
		getActionBar().setDisplayHomeAsUpEnabled(true);
		getActionBar().setHomeButtonEnabled(true);
		//   : getActionBar()      API level 11
	}

	//    onPostCreate(Bundle savedInstanceState)  
//	@Override
//	protected void onPostCreate(Bundle savedInstanceState) {
//		
//		super.onPostCreate(savedInstanceState);
//		mDrawerToggle.syncState();
//	}
	private void initListView() {
		mDrawerList = (ListView) findViewById(R.id.left_drawer);
		//     
		mDrawerList
				.setAdapter(new ArrayAdapter<String>(this,
						android.R.layout.simple_list_item_1,
						mPlanetTitles));
		//  listView      
		mDrawerList.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				//     ,     
				setTitle(mPlanetTitles[position]);
				mDrawerLayout.closeDrawer(mDrawerList);
			}
		});
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		//     ActionBarDrawerToggle,    true,          
		if (mDrawerToggle.onOptionsItemSelected(item)) {
			return true;
		}
		//          
		return super.onOptionsItemSelected(item);
	}

}
ActionBarについて詳しく知りたい場合はこちらをクリックしてくださいhttp://blog.csdn.net/harryweasley/article/details/42027521
DrawerLayoutの詳細については、こちらをクリックしてください
http://blog.csdn.net/harryweasley/article/details/42027487
または
http://blog.csdn.net/harryweasley/article/details/42027563
以上の3つの文章はすべて私が転載したもので、上のプロジェクトを完成させるのを助けてくれました.