android DrawerLayout侧边栏实现
来源:互联网 发布:中国的数据库公司 编辑:程序博客网 时间:2024/05/30 23:02
一.简介:
本文只是写了个简单的侧边栏的demo,界面基本没有做处理,实现过程中添加了右划对主界面按钮点击事件的拦截,效果图:
二.实现:
1.activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><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" android:background="@color/colorAccent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:onClick="click" android:text="主界面" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="left" android:background="#fff" android:orientation="vertical"> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@null" /> </LinearLayout></android.support.v4.widget.DrawerLayout>
2.MainActivity类:
public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private String[] mLeftMenu = {"头像", "设置", "我的"}; private DrawerLayout mDrawerLayout; private ListView mListView; //滑动的其实X坐标。 private float startX; //如果侧边栏显示拦截按钮的监听。 private boolean isScrollOpen = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mListView = (ListView) findViewById(R.id.listview); mListView.setAdapter(new ArrayAdapter<>(this, R.layout.drawer_list_item, mLeftMenu)); mDrawerLayout.openDrawer(Gravity.LEFT); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mDrawerLayout.closeDrawer(Gravity.LEFT); showMessage("您点击了" + mLeftMenu[position]); } }); } public void click(View view) { showMessage("您点击了主页面"); } private void showMessage(String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { Log.e(TAG, "dispatchTouchEvent: " ); switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: isScrollOpen = false; startX = ev.getX(); break; case MotionEvent.ACTION_MOVE: if (!mDrawerLayout.isDrawerOpen(Gravity.LEFT) && ev.getX() - startX > 10) { mDrawerLayout.openDrawer(Gravity.LEFT); isScrollOpen = true; } break; case MotionEvent.ACTION_UP: if(isScrollOpen){ return true; } break; } return super.dispatchTouchEvent(ev); }}3.drawer_list_item.xml:
<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="45dp" android:gravity="center"></TextView>
三.注意事项:
1.xml中DrawerLayout包裹的布局设置android:layout_gravity="left"表示在左边DrawerLayout的openDrawer()和closeDrawer();方法传入要打开和关闭左边还是右边。
demo下载地址:点击打开链接
1 0
- android DrawerLayout 侧边栏实现
- android DrawerLayout侧边栏实现
- Android侧边栏DrawerLayout实现问题笔记
- DrawerLayout 实现侧边栏
- Android之DrawerLayout实现ViewPager+左右侧边栏
- Android学习之基于DrawerLayout的侧边栏实现
- 侧边栏DrawerLayout
- Android典型界面设计(5)——使用SlidingMenu和DrawerLayout分别实现左右侧边栏
- 侧边栏的简单实现(使用drawerLayout)
- 左右两边的侧边栏实现(使用drawerlayout)
- 使用SlidingMenu和DrawerLayout分别实现左右侧边栏
- DrawerLayout手势打开侧边栏
- android实现侧边导航栏
- 二级滑动侧边栏(自定义DrawerLayout)
- Android Studio精彩案例(四)《DrawerLayout使用详解仿网易新闻客户端侧边栏 》
- Android关于侧边栏的简单使用(drawerLayout,navigationview,动态添加menu)
- android slidingMenu 侧边栏菜单 的实现
- Android开发--滑动侧边栏的实现
- 基于Mesos+Marathon+Zookeeper的Docker集群管理环境搭建过程分享
- 开发从奢侈到精细的时代
- java 类型信息 instanceof 和 isInstance区别
- HTTP协议详解(真的很经典)
- 使用MAVEN+Jacoco统计单元测试的代码覆盖率
- android DrawerLayout侧边栏实现
- 第三方登录的原理
- 单位rem
- mysql 获取上一条limit语句符合条件的总数
- RabbitMQ的Java应用(2) -- 使用Spring AMQP开发消费者应用
- 用python3+PyQt5改写Python Qt GUI快速编程的第6章实例主窗口
- 如何设置nginx反向代理实现服务器瞬间故障转移
- 如何用BarTender连接EXCEL中的多个工作表
- 计算机