直播软件搭建,通过Android DrawerLayout实现侧边栏功能
直播软件搭建,通过Android DrawerLayout实现侧边栏功能
DrawerLayout是V4 Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物。drawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化。
布局文件:
1 | <?xml version= "1.0" encoding= "utf-8" ?><br><android.support.v4.widget.DrawerLayout xmlns:android= "http://schemas.android.com/apk/res/android" <br> xmlns:app= "http://schemas.android.com/apk/res-auto" <br> xmlns:tools= "http://schemas.android.com/tools" <br> android:id= "@+id/drawer_layout_home" <br> android:layout_width= "match_parent" <br> android:layout_height= "match_parent" ><br> <br> <主页面显示内容<br> android:id= "@+id/refreshLayout" <br> android:layout_width= "match_parent" <br> android:layout_height= "match_parent" <br> ><br> </主页面显示内容><br> <br> <LinearLayout<br> android:id= "@+id/right_draw" <br> android:layout_width= "240dp" <br> android:layout_height= "match_parent" <br> android:layout_gravity= "end" <br> android:orientation= "vertical" ><br> <br> <TextView<br> android:layout_width= "240dp" <br> android:layout_height= "wrap_content" <br> android:layout_marginLeft= "5dp" <br> android:layout_marginTop= "10dp" <br> android:text= "侧边栏" <br> android:textColor= "@color/black" <br> android:textSize= "20sp" /><br> <br> </LinearLayout><br> <br></android.support.v4.widget.DrawerLayout> |
首先需要将根目录设置为DrawerLayout,其布局可以包括两个部分,这两个部分既可以是一个控件也可以是一个布局,其中第一个部分是默认显示的主体内容,第二部分为侧边栏内容,当然它的大小和位置都可以通过属性来进行修改。值得注意的是需要添加layout_gravity属性来对这部分进行隐藏。设置android:layout_gravity="start"时侧边栏从左侧进入,android:layout_gravity="end"时从右侧进入,若没有设置则会对页面主体部分的内容造成覆盖。
初始化代码:
1 | public class HomeFragment extends LazyFragment implements View.OnClickListener {<br> private DrawerLayout drawerLayout;<br> private LinearLayout right;<br> <br> @Override<br> protected void onCreateViewLazy(Bundle savedInstanceState) {<br> super.onCreateViewLazy(savedInstanceState);<br> setContentView(R.layout.fragment_home);<br> drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout_home);<br> right = (LinearLayout) findViewById(R.id.right_draw);<br>} |
控制侧边栏状态的代码:
1 | drawerLayout.closeDrawer(right); //打开侧边栏<br>drawerLayout.openDrawer(right); //关闭侧边栏 |
添加监听器监听侧边栏的状态:
1 | drawerLayout.addDrawerListener( new DrawerLayout.DrawerListener() {<br> @Override<br> public void onDrawerSlide(View drawerView, float slideOffset) {<br> //滑动时<br> }<br> <br> @Override<br> public void onDrawerOpened(View drawerView) {<br> //打开时<br> }<br> <br> @Override<br> public void onDrawerClosed(View drawerView) {<br> //关闭时<br> }<br> <br> @Override<br> public void onDrawerStateChanged(int newState) {<br> //改变时<br> }<br> }); |
到这里侧边栏基本上就做好了,还是仔细实验你会发现,当我们在侧边栏上进行操作时,页面主体部分的监听事件还是会被触发。那么这个问题怎么解决呢?目前我采用的解决办法是为LinearLayout right设置OnClickListener,里面的onClick()方法什么都不写。
另外,当一个主页面有两个侧边栏时会用到锁定功能,设置方法如下:
1 | drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED,Gravity. END ); //锁定右面的侧滑菜单,不能通过手势关闭或者打开,只能通过代码打开!即调用openDrawer方法! <br>drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED,Gravity.END); //解除锁定状态,即可以通过手势关闭侧滑菜单 |
以上就是直播软件搭建,通过Android DrawerLayout实现侧边栏功能, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现