IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]Android侧滑菜单DrawerLayout的使用

    cuiran发表于 2015-01-03 18:39:52
    love 0


    现在侧滑菜单使用很多,大都是通过SlidingMenu实现。现在也可以通过DrawerLayout

    创建抽屉布局


    frament_content.xml

    
    
    
        
    
    
    activity_main.xml

    
    
        
    
        
        
    
        
    
        
        
    
    

    然后新建一个类继承Fragment类

    /**
     * ContentFragment.java
     * 版权所有(C) 2015
     * 创建者:cuiran 2015-1-3 下午3:25:44
     */
    package com.cayden.drawerlayoutdemo;
    
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    /**
     * TODO 
     * @author cuiran
     * @version 1.0.0
     */
    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;
    	}
    	
    }
    

    完成Activity代码

    package com.cayden.drawerlayoutdemo;
    
    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;
    
    
    public class MainActivity extends Activity implements OnItemClickListener {
    
    	private DrawerLayout mDrawerLayout;
    	private ListView mDrawerList;
    	private ArrayList menuLists;
    	private ArrayAdapter adapter;
    	private ActionBarDrawerToggle mDrawerToggle;
    	private String mTitle;
    
    	@Override
    	protected void onCreate(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();
    		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(mDrawerList);
    		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.baidu.com");
    			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) {
    		// 动态插入一个Fragment到FrameLayout当中
    		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(mDrawerList);
    	}
    
    }
    




    作者:cuiran 发表于2015/1/3 18:39:52 原文链接
    阅读:1287 评论:1 查看评论


沪ICP备19023445号-2号
友情链接