Android抽屉菜单DrawerLayout的实现案例

(1)项目布局文件 activity_main.xml

==”match_parent” ><!– The main content view –><FrameLayout=<ListView===></android.support.v4.widget.DrawerLayout>

fragment_content.xml

==”match_parent”android:orientation=”vertical” ><TextView=>

(2)主要类文件

package com.xuliugen.drawerlayout;import java.util.ArrayList;import android.app.Activity;import android.app.Fragment;import android.app.FragmentManager;import android.content.Intent;import android.content.res.Configuration;import android.net.Uri;import android.os.Bundle;import android.support.v4.app.ActionBarDrawerToggle;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;{private DrawerLayout mDrawerLayout; // 设置的是左侧的抽屉菜单private ListView mDrawerList;private ArrayList<String> menuLists;private ArrayAdapter<String> adapter;private ActionBarDrawerToggle mDrawerToggle;// actionBar打开关闭的private String mTitle;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTitle = (String) getTitle();mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);mDrawerList = (ListView) findViewById(R.id.left_drawer);menuLists = new ArrayList<String>();for (int i = 0; i < 5; i++) {menuLists.add(“item” + i);}// 初始化适配器adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, menuLists);// 为左侧的抽屉设置了数据mDrawerList.setAdapter(adapter);// 左侧滑动菜单的监听事件mDrawerList.setOnItemClickListener(this);// 设置抽屉被打开关闭的对象mDrawerToggle = new ActionBarDrawerToggle(this, //mDrawerLayout,//R.drawable.ic_drawer,//R.string.drawer_open,//R.string.drawer_close) {(View drawerView) {super.onDrawerOpened(drawerView);getActionBar().setTitle(“请选择”); // 设置actionBar的文字invalidateOptionsMenu(); // Call onPrepareOptionsMenu()}(View drawerView) {super.onDrawerClosed(drawerView);getActionBar().setTitle(mTitle);invalidateOptionsMenu();// 重新绘制actionBar上边的菜单项}};// 设置滑动菜单的 打开关闭事件mDrawerLayout.setDrawerListener(mDrawerToggle);// 开启ActionBar上APP ICON的功能:点击打开和点击关闭7getActionBar().setDisplayHomeAsUpEnabled(true);getActionBar().setHomeButtonEnabled(true);}(Menu menu) {boolean isDrawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);menu.findItem(R.id.action_websearch).setVisible(!isDrawerOpen);return super.onPrepareOptionsMenu(menu);}/*** 菜单项的设置*/(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}/*** 设置actionBar上边图标的点击事件*/(MenuItem item) {// 将ActionBar上的图标与Drawer结合起来if (mDrawerToggle.onOptionsItemSelected(item)) {return true;}switch (item.getItemId()) {case R.id.action_websearch:Intent intent = new Intent();intent.setAction(“android.intent.action.VIEW”);Uri uri = Uri.parse(“http://blog.csdn.net/xlgen157387”);intent.setData(uri);startActivity(intent);break;}return super.onOptionsItemSelected(item);}/*** 根据官方文档提示的信息** 将mDrawerToggle.syncState();放入到onPostCreate中*/(Bundle savedInstanceState) {super.onPostCreate(savedInstanceState);// 需要将ActionDrawerToggle与DrawerLayout的状态同步// 将ActionBarDrawerToggle中的drawer图标,设置为ActionBar中的Home-Button的IconmDrawerToggle.syncState();}/*** 当屏幕发生选装的时候也需要进行相应的设置*/(Configuration newConfig) {super.onConfigurationChanged(newConfig);mDrawerToggle.onConfigurationChanged(newConfig);}/*** 监听事件的实现*** 当点击菜单栏中的item的时候切换相应的fragment界面*/(AdapterView<?> arg0, View arg1, int position,long arg3) {// 动态插入一个Fragment到FrameLayout当中Fragment contentFragment = new ContentFragment();Bundle bundle = new Bundle();bundle.putString(“text”, menuLists.get(position));contentFragment.setArguments(bundle);// fragment创建好了之后需要交给fragmentManager来替换到相应的视图中FragmentManager fm = getFragmentManager();fm.beginTransaction().replace(R.id.content_frame, contentFragment).commit();mDrawerLayout.closeDrawer(mDrawerList);}}偶尔被惊鸿一瞥的美丽吸引;或者走进一条深沉深沉的巷道,

Android抽屉菜单DrawerLayout的实现案例

相关文章:

你感兴趣的文章:

标签云: