博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 学习之drawerlayout写侧滑菜单
阅读量:7067 次
发布时间:2019-06-28

本文共 5440 字,大约阅读时间需要 18 分钟。

版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/49467317

Android 学习之Drawerlayout写侧滑菜单

我们经常利用SlidingMenu来实现侧滑菜单,谷歌推出的DrawerLayout也可以实现侧滑菜单,完全可以替代SlidingMenu,如下图所示都是用SlidingMenu开发的实例。

1、项目结构

                                                   
JAVA文件中首先是一个主界面的Activity-——MainActivity,然后是一个继承与Fragment的类——ContentFragment,
布局文件中,activity_main对应于主布局文件,fragment_content对应于Fragment的布局。

2、MainActivity.java

import java.util.ArrayList;import android.net.Uri;import android.os.Bundle;import android.R.anim;import android.app.Activity;import android.app.Fragment;import android.app.FragmentManager;import android.content.Intent;import android.content.res.Configuration;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.ImageView;import android.widget.LinearLayout;import android.widget.ListView;public class MainActivity extends Activity implements OnItemClickListener {	private DrawerLayout mDrawerLayout;	private ListView mDrawerList;	private LinearLayout mlayout;	private ArrayList
menuLists; private ArrayAdapter
adapter; private ActionBarDrawerToggle mDrawerToggle; private String mTitle; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTitle = (String) getTitle(); imageView = (ImageView) findViewById(R.id.image); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); mlayout = (LinearLayout) findViewById(R.id.mlayout); menuLists = new ArrayList
(); for (int i = 0; i < 5; i++) menuLists.add("菜单0" + i); adapter = new ArrayAdapter
(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) { @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); getActionBar().setTitle("请选择"); invalidateOptionsMenu(); // Call onPrepareOptionsMenu() } @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); getActionBar().setTitle(mTitle); invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); //开启ActionBar的App Icon功能 getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); } @Override public boolean onPrepareOptionsMenu(Menu menu) { boolean isDrawerOpen = mDrawerLayout.isDrawerOpen(mlayout); menu.findItem(R.id.action_websearch).setVisible(!isDrawerOpen); return super.onPrepareOptionsMenu(menu); } @Override public 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; } @Override public boolean onOptionsItemSelected(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://www.csdn.net"); intent.setData(uri); startActivity(intent); break; } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); //需要将ActionDrawerToggle与DrawerLayout的状态同步 //将ActionBarDrawerToggle中的drawer图标,设置为ActionBar中的Home-Button的Icon mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } @Override public void onItemClick(AdapterView
arg0, View arg1, int position, long arg3) { // 在FrameLayout中动态插入一个Fragment Fragment contentFragment = new ContentFragment(); Bundle args = new Bundle(); args.putString("text", menuLists.get(position)); contentFragment.setArguments(args); FragmentManager fm = getFragmentManager(); fm.beginTransaction().replace(R.id.content_frame, contentFragment) .commit(); mDrawerLayout.closeDrawer(mlayout); }}

3、ContentFragment.java

import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;public class ContentFragment extends Fragment {		private TextView textView;		@Override	public View onCreateView(LayoutInflater inflater, ViewGroup container,			Bundle savedInstanceState) {		View view = inflater.inflate(R.layout.fragment_content, container, false);		textView = (TextView) view.findViewById(R.id.textView);				String text = getArguments().getString("text");		textView.setText(text);				return view;	}	}

4、activity_main.xml

5、fragment_content.xml

6、menu(main.xml)

7、效果图
                                                                            
源码下载地址
你可能感兴趣的文章
AndroidUI优化工具——HierarchyViewer
查看>>
MyBatis多参数传递之默认命名方式示例——MyBatis学习笔记之十二
查看>>
USB引导盘制作
查看>>
一线网络工程师需要注意的十个非技术细节
查看>>
UML建模之状态图(Statechart Diagram)
查看>>
perl CPU利用率
查看>>
IT小妙招:请走开!自作聪明的Windows 7边缘最大化
查看>>
Insufficient system resources exist to complete the requested service
查看>>
TCL语法复习笔记(二)
查看>>
Java Socket 网络编程常见异常
查看>>
outlook小故障汇总
查看>>
通过自己的项目实际经验,阐述为什么“恶心玩技术”?玩Java技术的教训(一)...
查看>>
蚂蚁分类信息系统 5.8 地区增加多级分类
查看>>
linux下绑定双网卡
查看>>
LeetCode - 45. Jump Game II
查看>>
初识RecyclerView
查看>>
科学方法的步骤
查看>>
SaltStack工具中MySQL的模块返回值问题解决
查看>>
升级python到2.6.5
查看>>
Spring-web源码解析之ContextLoaderListener
查看>>