接触Android已经有一段时间了,自己积累的东西也算蛮多的。总结以往的经验,凡是关键性的问题,一般都是要查阅API来解决的。所以,笔者建议同学们认真阅读API和Guider,Android的开发API文档是最容易阅读的(至少笔者是这么认为的,也接触一些windows phone的开发基础)。
今天,笔者为大家介绍Android侧边栏的使用。我也接触了一些侧边栏的第三方牛人写的插件,确实也是不错的。笔者介绍的是在Android扩展的包中的组件DrawerLayout,是一个很好的侧边栏,支持手势打开。好了,下面简单介绍使用组件的方法。
包括的内容有:
1、手势打开侧边栏(手要从接近左边向右滑,这点不是很好用)
2、使用fragment的按钮来打开侧边栏
3、使用menu键来打开侧边栏。

首先,来看看布局文件:
acivity_main.xml
<android.support.v4.widget.DrawerLayout xmlns:android=" http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<!-- 页面内容
-->
<FrameLayout
android:id="@+id/main_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
<!-- 侧边栏的选项 -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="150dp"
android:background="@android:color/background_dark"
android:layout_height="fill_parent"
android:layout_gravity="start" />
</android.support.v4.widget.DrawerLayout>

再来看看Activiy中的内容:
public class MainActivity extends FragmentActivity {
public DrawerLayout drawerLayout;// 侧边栏布局
public ListView leftList;// 侧边栏内的选项
public ArrayAdapter<String> arrayAdapter;
private String[] items;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
// 初始化控件
private void initViews() {
drawerLayout = (DrawerLayout) findViewById(R.id.main_layout);
items = getResources().getStringArray(R.array.left_array);
leftList = (ListView) findViewById(R.id.left_drawer);
arrayAdapter = new ArrayAdapter<String>(this, R.layout.list_item, items);
leftList.setAdapter(arrayAdapter);
leftList.setOnItemClickListener(itemListener);
initFragments();
}
// 添加碎片
private void initFragments() {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
DrawerFragment fragment = new DrawerFragment();
// 设置在fragment中按钮来控制侧边栏的打开
fragment.setDrawerLayout(drawerLayout, leftList);
transaction.add(R.id.main_content, fragment);
transaction.commit();
}
// 选项点击事件
OnItemClickListener itemListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,
long arg3) {
// TODO Auto-generated method stub
// 设置Activity的标题,这里只是用来做一个测试,你可以在这里用来处理单击侧边栏的选项事件
setTitle(items[position]);
// 关闭侧边栏
drawerLayout.closeDrawer(leftList);
Log.i("onItemSelected",
"open?:" + drawerLayout.isDrawerOpen(leftList));
}
};
/*
* (non-Javadoc)
*
* @see android.support.v4.app.FragmentActivity#onKeyDown(int,
* android.view.KeyEvent)
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
// 使用menu键打开或关闭侧边栏
if (keyCode == KeyEvent.KEYCODE_MENU) {
if (drawerLayout.isDrawerOpen(leftList)) {
drawerLayout.closeDrawer(leftList);
} else {
drawerLayout.openDrawer(leftList);
}
}
return super.onKeyDown(keyCode, event);
}
}

还有内容填充的片段代码:

public class DrawerFragment extends Fragment implements OnClickListener {
public DrawerLayout layout;
public View view;
public DrawerFragment() {
super();
// TODO Auto-generated constructor stub
}
public void setDrawerLayout(DrawerLayout layout, View view) {
this.layout = layout;
this.view = view;
}
/*
* (non-Javadoc)
*
* @see
* android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater
* , android.view.ViewGroup, android.os.Bundle)
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View rootView = inflater.inflate(R.layout.fragment_layout, container,
false);
Button openBtn = (Button) rootView.findViewById(R.id.open);
openBtn.setOnClickListener(this);
return rootView;
}
/*
* (non-Javadoc)
*
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == R.id.open) {
//打开侧边栏
if (!layout.isDrawerOpen(view)) {
layout.openDrawer(view);
}
}
}
}

使用方法还是很简单的,在关键部分我都有注释。
具体的使用效果图如下:


最后,笔者把整个工程的源码和APK贴上来。

更多相关文章

  1. android将tab选项卡放在底部
  2. android 探索首选项框架 ListPreference
  3. 详解Android首选项框架的使用
  4. android pm 和 install 选项 命令
  5. android 8.0 开发者选项,默认打开 使用HW叠加层(关闭硬件加速)
  6. 阅读《Android 从入门到精通》(28)——使用 XML 的选项菜单
  7. Android 选项卡功能的实现
  8. android之首选项相关 Preferences(一) (转)
  9. android 对话框之——带单选列表、带多选项列表、按钮等问题

随机推荐

  1. 在Linux下安装Android(安卓)SDK
  2. Android恶意代码分析与渗透测试
  3. Android开发艺术探索——第二章:IPC机制(上
  4. Android 中各种JAVA 包的功能描述
  5. 我的Android学习计划--走在架构师的路上
  6. Android(安卓)ANR 探索
  7. Android:SNS客户端开发三:数据库操作(一)
  8. 为什么iOS比Android更吸引开发者
  9. Android ListView拖动时背景变黑的解决方
  10. android:duplicateParentState属性解释