侧面菜单支持手机,平板

2023-11-11 04:59

本文主要是介绍侧面菜单支持手机,平板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NI你现在顶部,底部导航栏太多了,我们几乎很少用到原生的Fragment了,是不是顶部与底部导航栏就可以满足所有需求呐?很显然不是,

我们知道平板比手机的尺寸要大得多,如果我们主页面利用底部导航栏设计出来空白太多,而且整体看起来不是很美观,于是乎我就想利用Fragment做一个侧面菜单。我在网上,Github,找了很多资料都没有合适的一个框架来支撑这个需求.最后我还是狠下心来用原生Fragment了。

1.首先我贴一张效果图,图片跟背景都是在随便找的资源.

 

我们再来看看上图对应的布局

?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@mipmap/back"><includeandroid:id="@+id/menu_layout"layout="@layout/main_menu"></include><TextViewandroid:id="@+id/title_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_toRightOf="@id/menu_layout"android:padding="10dp"android:text="亲睦家健康管理,欢迎您!"android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"android:textColor="@color/normaltextcolor"/><FrameLayoutandroid:id="@+id/main_framelayout"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/title_text"android:layout_toRightOf="@id/menu_layout"android:background="@color/normaltextcolor"></FrameLayout></RelativeLayout>

main_menu布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="@dimen/x250"android:layout_height="match_parent"android:orientation="vertical"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/loginlogo"/><de.hdodenhof.circleimageview.CircleImageViewandroid:id="@+id/main_menu_image"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:padding="@dimen/x5"android:src="@mipmap/error"/><TextViewandroid:id="@+id/menu_tologin"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_toRightOf="@id/main_menu_image"android:background="@null"android:layout_marginTop="@dimen/y10"android:text="登录/注册"android:textColor="@color/colorAccent"android:visibility="visible"/><TextViewandroid:id="@+id/menu_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="@dimen/y10"android:gravity="center_horizontal"android:text="昵称"android:textColor="@color/morencolor"/><TextViewandroid:id="@+id/menu_one"android:layout_width="@dimen/x250"android:layout_height="wrap_content"android:layout_marginTop="@dimen/y40"android:drawablePadding="@dimen/x8"android:drawableTop="@mipmap/old_gaoweitwo"android:gravity="center"android:paddingBottom="@dimen/y5"android:paddingTop="@dimen/y5"android:text="我的设备"android:textColor="@color/morencolor"/><TextViewandroid:id="@+id/menu_two"android:layout_width="@dimen/x250"android:layout_height="wrap_content"android:layout_marginTop="@dimen/y30"android:drawablePadding="@dimen/x8"android:drawableTop="@mipmap/old_goodsone"android:gravity="center"android:paddingBottom="@dimen/y5"android:paddingTop="@dimen/y5"android:text="设备列表"android:textColor="@color/morencolor"/><TextViewandroid:id="@+id/menu_three"android:layout_width="@dimen/x250"android:layout_height="wrap_content"android:layout_marginTop="@dimen/y30"android:drawablePadding="@dimen/x8"android:drawableTop="@mipmap/old_leaveone"android:gravity="center"android:paddingBottom="@dimen/y5"android:paddingTop="@dimen/y5"android:text="其他"android:textColor="@color/morencolor"/><TextViewandroid:id="@+id/menu_four"android:layout_width="@dimen/x250"android:layout_height="wrap_content"android:layout_marginTop="@dimen/y30"android:drawablePadding="@dimen/x8"android:drawableTop="@mipmap/old_messageone"android:gravity="center"android:paddingBottom="@dimen/y5"android:paddingTop="@dimen/y5"android:text="设置"android:textColor="@color/morencolor"/><TextViewandroid:id="@+id/menu_five"android:layout_width="@dimen/x250"android:layout_height="wrap_content"android:layout_marginTop="@dimen/y30"android:drawablePadding="@dimen/x8"android:drawableTop="@mipmap/old_messageone"android:gravity="center"android:paddingBottom="@dimen/y5"android:paddingTop="@dimen/y5"android:text="退出"android:textColor="@color/morencolor"/>
</LinearLayout>

可以看到这个布局很简单左边一个menu布局右边就是一个FrameLayout.接着我们来看下怎么实现切换Fragment的,下面我就贴几个重要方法:

1.监听menu按钮事件

@Override
public void onClick(View v) {FragmentManager fragmentManager = getSupportFragmentManager();FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();switch (v.getId()) {case R.id.menu_one:SetFragment(fragmentList, fragmentTransaction, 0);SetTextViewColor(ids[0]);break;case R.id.menu_two:SetFragment(fragmentList, fragmentTransaction, 1);SetTextViewColor(ids[1]);break;case R.id.menu_three:SetFragment(fragmentList, fragmentTransaction, 2);SetTextViewColor(ids[2]);break;case R.id.menu_four:SetFragment(fragmentList, fragmentTransaction, 3);SetTextViewColor(ids[3]);break;}}
//切换fragment
public void SetFragment(List<Fragment> fragmentList, FragmentTransaction fragmentTransaction, int index) {for (int i = 0; i < fragmentList.size(); i++) {if (i == index) {if (fragmentList.get(i).isVisible() && fragmentList.get(i).isAdded()) {return;} else {fragmentTransaction.add(R.id.main_framelayout, fragmentList.get(i));}} else {if (fragmentList.get(i).isAdded()) {fragmentTransaction.remove(fragmentList.get(i));}}}fragmentTransaction.commit();}//--设置字体颜色:这里的ids是menu菜单中几个控件的id数组
public void SetTextViewColor(int id) {for (int i = 0; i < ids.length; i++) {TextView view = (TextView) findViewById(ids[i]);if (id == ids[i]) {view.setTextColor(Color.parseColor("#FF4081"));view.setTextSize(16);view.setBackgroundColor(Color.parseColor("#eeeeee"));Drawable drawable = getResources().getDrawable(imagestwo[i]);drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());view.setCompoundDrawables(null, drawable, null, null);} else {view.setTextColor(Color.parseColor("#333333"));view.setTextSize(15);view.setBackground(null);Drawable drawable = getResources().getDrawable(images[i]);drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());view.setCompoundDrawables(null, drawable, null, null);}}

温馨提示: 这里的Fragment管理栈不建议使用show(),hide()方法,因为这种主页面几乎没Activity什么事了,几乎所有的界面都由Fragment支撑,很显然用Show(),Hide()方法主页面Fragment栈管理会有很多的Fragment,这样会影响程序的性能问题.很可能导致程序崩溃.

这篇关于侧面菜单支持手机,平板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/387700

相关文章

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

cell phone teardown 手机拆卸

tweezer 镊子 screwdriver 螺丝刀 opening tool 开口工具 repair 修理 battery 电池 rear panel 后盖 front and rear cameras 前后摄像头 volume button board 音量键线路板 headphone jack 耳机孔 a cracked screen 破裂屏 otherwise non-functiona

PC与android平板通过浏览器监控Verybot的视频

下面这个视频是PC与android平板通过浏览器监控Verybot的视频:           http://v.youku.com/v_show/id_XNjYzNzYyMTIw.html

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

sqlite不支持中文排序,采用java排序

方式一 不支持含有重复字段进行排序 /*** sqlite不支持中文排序,改用java排序* 根据指定的对象属性字段,排序对象集合,顺序* @param list* @param field* @return*/public static List sortListByField(List<?> list,String field){List temp = new ArrayList(

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

Science Robotics 首尔国立大学研究团队推出BBEX外骨骼,实现多维力量支持!

重复性举起物体可能会对脊柱和背部肌肉造成损伤,由此引发的腰椎损伤是工业环境等工作场所中一个普遍且令人关注的问题。为了减轻这类伤害,有研究人员已经研发出在举起任务中为工人提供辅助的背部支撑装置。然而,现有的这类装置通常无法在非对称性的举重过程中提供多维度的力量支持。此外,针对整个人体脊柱的设备安全性验证也一直是一个缺失的环节。 据探索前沿科技边界,传递前沿科技成果的X-robot投稿,来自首尔国立

想要从OPPO手机恢复数据?免费OPPO照片视频恢复软件

此实用程序可帮助那些寻找以下内容的用户: 在OPPO手机中格式化存储卡后可以恢复图片吗?我删除了 OPPO上的视频和图片,我感觉很糟糕,因为里面有我在拉斯维加斯拍摄的视频和照片 免费OPPO照片视频恢复软件 您能恢复OPPO上已删除的照片吗?我不小心格式化了OPPO SD 卡,有希望恢复已删除的照片吗? 救命!我在清理时删除了我的照片,我的问题是是否有任何免费软件可以从OPPO中恢复已