侧面菜单支持手机,平板

Android 实现左侧导航栏:NavigationView是什么?NavigationView和Navigation搭配使用 1)左侧导航栏效果图2)NavigationView是什么?3)NavigationView和Navigation搭配使用4)NavigationView的其他方法。 阅读详情

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

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

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

 

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

?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns: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"
    >

    <include
        android:id="@+id/menu_layout"
        layout="@layout/main_menu"
        ></include>

    <TextView
        android: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"/>

    <FrameLayout
        android: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">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/loginlogo"/>


    <de.hdodenhof.circleimageview.CircleImageView
        android: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"/>

    <TextView
        android: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"/>

    <TextView

        android: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"/>

    <TextView
        android: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"/>

    <TextView
        android: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"/>

    <TextView
        android: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"/>

    <TextView
        android: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"/>

    <TextView
        android: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,这样会影响程序的性能问题.很可能导致程序崩溃.

无线图传实战指南:从原理到部署,实现手机平板高清监看 无线视频传输技术通过将视频信号编码压缩,并利用无线射频进行传输,解决了传统线缆连接的距离与布线难题,在专业视频制作、直播和远程协作中具有重要价值。其核心在于平衡画质、延迟与稳定性,关键技术参数包括传输分辨率、低延迟和连接协议。以典型的无线图传设备为例,这类设备通常采用发射端与软件接收端结合的模式,支持多终端同步监看,极大地提升了拍摄的灵活性和协作效率。在实际应用中,通过理解其工作机制并合理配置,可以实现稳定的高清画面无线传输,满足摄影师、直播团队等多设备监看的核心需求。 阅读详情

相关推荐

IVCam实战:手机摄像头变身电脑高清外设的完整指南

本文提供了一份详细的IVCam实战指南,教你如何将手机摄像头轻松变身为电脑高清外设。文章深入解析了其工作原理,并分步详解了Wi-Fi无线与USB有线两种连接方式的配置方法、性能对比及调优技巧,同时涵盖了在OpenCV等开发环境中的调用方法。无论你是为了提升视频会议画质、进行低成本直播,还是作为计算机视觉开发的图像输入源,本指南都能帮助你充分利用手机摄像头的强大性能。

k8l9m0n的博客 508

Android App开发 Toolbar和侧边导航栏

Android app 开发 侧边导航栏 、 toolbar的基础入门使用

weixin_43522377的博客 3895

Android 侧边菜单栏实现全攻略

本文还有配套的精品资源,点击获取 简介:在Android开发中,侧边菜单是常用的导航设计模式。文章将详细介绍侧边菜单的设计原理和实现方法,包括使用SlidingMenu库和NavigationView组件的步骤、注意事项和最佳实践。读者将通过这些内容,学习如何创建一个响应迅速、用户友好的侧边菜单,以增强应用的导航体验。 1. Android 侧边菜单概念及重要性 ...

weixin_42573757的博客 3592

DrawerLayout侧滑菜单

安卓的DrawerLayout是一种布局容器,它允许用户通过从屏幕边缘水平或垂直滑动打开侧滑菜单。DrawerLayout是一种非常有用的布局容器,它使用户可以轻松地访问应用程序中的导航和设置。要使用DrawerLayout,我们需要创建一个包括主视图和侧滑菜单视图的XML布局,并在代码中操作DrawerLayout对象。最后,我们还需要确保用户可以使用手势或按钮打开侧拉菜单。

A125679880的博客 1665

Android界面之侧边栏导航菜单

摘要:Java源码,Android源码,侧边栏菜单 运行环境:Java/Eclipse

bootstrap自定义样式之bootstrap实现侧边导航栏功能

bootstrap自带的响应式导航栏是向下滑动的,有时满足不了个性化的需求,需要做一个类似于android drawerLayout 侧滑的菜单,这就是我要实现的bootstrap自定义侧滑菜单。接下来通过本文给大家介绍bootstrap实现侧边导航栏功能,感兴趣的朋友一起看看吧

Fragment中使用Menu

Fragment中使用Menu,分为传统方式和AndroidX方式

k43528814的博客 1024

ArcGISPro小白必看:5分钟搞定3D地形图制作(附免费数据源)

本文为ArcGISPro初学者提供5步制作专业3D地形图的完整指南,涵盖免费数据获取、项目初始化、数据预处理、3D场景构建和成果输出等关键步骤。特别推荐使用NASA的SRTM高程数据和吉林一号卫星影像,帮助用户快速掌握3D地形图制作技巧,适用于教学演示和科研分析。

weixin_28314575的博客 239

华为平板解锁工具_华为平板M6 10.8英寸首发评测 办公+影音+智能全面开花

移动互联网时代,不论是日常娱乐还是外出办公,用户所需求的科技产品都越来越轻薄化。而平板电脑作为介于手机和笔记本之间的产品,比手机屏幕更大,比笔记本机身更小巧便携,在当下有着独特的优势,更加适合现在来去匆匆、喜欢追鲜的年轻人。图:10.8英寸版华为平板M6华为推出的最新一代的华为平板M6系列(包括8.4英寸版和10.8英寸版),在硬件配置上搭载了华为当下最为领先的Kirin 980处理器,以及革命性...

weixin_39629617的博客 1117

FlightStream实战:如何用面元法在笔记本电脑上完成无人机气动分析(附NASA案例)

本文详细介绍了如何利用FlightStream面元法在笔记本电脑上高效完成无人机气动分析,包括其核心技术优势、NASA D8案例实战解析及高效工作流建立。FlightStream作为快速CFD分析工具,显著提升了早期设计阶段的迭代速度,适用于概念设计验证和多气动构型比较。

weixin_28363123的博客 258

binning模式下和normal模式下相同曝光参数相同场景加权亮度差异消除方案优化(一)

摘要:针对ISP参数设置中浮点权重系数需转换为整数的问题,提出整数邻域搜索方案。该方法在浮点最优解附近(±1/±2)进行局部搜索,通过逐阶微调找到误差最小的整数权重组合,避免直接取整导致的误差反弹(误差从0.8%降至0.35%)。方案结合范围约束(1~15)和单调性约束(暗端递减、亮端递增),兼顾计算效率(单图耗时<10ms)与硬件兼容性,显著优于暴力搜索和简单取整,满足工程落地需求。

大熊 97

联想平板刷机机器人_科技资讯| 三星发布带有隐藏键盘的三折叠屏手机;华为发布智能汽车解决方案;联想发布首款自研工业机器人.........

1. 三星新专利:带有隐藏键盘的三折叠屏手机三星现已推出四款折叠屏机型(Fold、Fold 2、Z Flip、W20),而此前多有传言表示三星下一代折叠屏机型(以Galaxy Z Fold 3代称)将在目前折叠屏手机的基础上增加S Pen,而昨日公布的一份专利也侧面辅证了这一说法。外媒LetsGoDigital发现,最新的一份专利文档显示,三星也在考虑开发带一种有滑出式键盘的可折叠型智能...

weixin_39743423的博客 105

Python 陌生代码库阅读之道:从零起步到一周掌控 5 万行老项目的实战策略

文中特别强调"自顶向下+画图+注释"的基础阅读心法,并提供了具体的代码示例和命令行技巧。对于大型项目,建议先建立核心流程的骨架认知,再逐步填充细节,同时注重文档化和测试覆盖率的提升。 掌握这套方法后,开发者可以将陌生代码库的阅读效率提升3倍以上,在一周内建立起对5万行级别项目的整体掌控力。

铭渊老黄 506

Android pad 刷成苹果,利用安卓手机运行checkra1n越狱你的iPhone/iPad教程,支持12.3-13.5-13.7-14.3-14.4系统...

很多朋友试用的苹果设备满足了checkra1n越狱的要求,但又满足不了又电脑的条件,所以今天给大家出一篇利用安卓手机运行checkra1n给苹果iPhone、ipad、appleTV的越狱教程,支持的系统版本为iOS12—iOS12.5.1,iOS13—iOS13.7,iOS14—iOS14.4,可以说从iOS12—最新版本都是支持的,前提是你的设备必须为iPhone5S—iPhoneX,并不是很...

weixin_39602560的博客 7502

【电弧】基于matlab simulink电弧仿真模型(Mayr Cassie电弧模型)【含Matlab源码 9226期】

simulink电弧仿真模型(Mayr Cassie电弧模型) 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 193

Jetson Orin Nano 平台适配IMX585 camera驱动调试记录

Jetson Orin Nano Devkit适配imx585 camera使用argus_camera捕获流,图片是黑色的用示波器来测量mipi信号,信号正常Jetpack版本: sensor参数: dts配置: 分析log: 如图: EBD有两行修改dts: 测试如下:log: 需要注意极性互换查看相应的原理图设置。可以使用设备树属性lane_polarity在任何lane上配置极性交换。例如, 尝试调整极性出现花屏 根据上述像素时钟配置说明调整为如下配置后,出图正常

jzwjzw19900922的博客 1322

华为手机计算机快捷,快速让华为手机变成一台电脑,INNOCN便携显示器的更多玩法...

原标题:快速让华为手机变成一台电脑,INNOCN便携显示器的更多玩法之前,一直有听说华为手机可以当电脑使用,自己入手华为P30 Pro一年多来也不知道具体的玩法。而这个困惑伴随INNOCN便携显示器N1G的到来,终于解开了。有了这台移动便携显示器,不仅是手机变电脑,就连笔记本也可以实现分屏技术了,它可给我的生活带来不少乐趣。 笔者测评过多款显示器,但对于触控式的便携式显示屏还是第一次尝鲜。从名称上...

weixin_36013931的博客 2365

秃鹰搜索优化算法(BES)详解:从自然捕食到全局优化

秃鹰搜索优化算法(Bald Eagle Search Optimization Algorithm,BES)是由马来西亚学者Alsattar等人于2020年提出的一种新型元启发式优化算法。该算法灵感来源于秃鹰在自然界中高超的捕食行为,特别是其独特的狩猎策略和卓越的视觉搜索能力,模拟了秃鹰捕食鲑鱼等猎物的完整过程。

qq_42212808的博客 1352

是平板?还是手机?三星Galaxy Note美图大赏

基本参数 上市日期 2011年09月 手机类型 3G?只悄苁只恼帐只? 外观设计 直板 主屏尺寸 5.3英寸 触摸屏 电容屏,多点触控 主屏材质 Super AMOLED 主屏分辨率 1280×800像素 主屏色彩 1600万色

Elegantwww 1244

SST专题(2-2)MMC-SST 输入级的工作原理及数学模型

本文研究了MMC-SST和iMMC-SST的电路结构及工作原理。系统由前级MMC电路和后级DC/DC电路组成,MMC负责电能转换和能量存储,DC/DC电路进行电压电流调节。重点分析了半桥型子模块(SM)的开关组态和工作原理,建立了平均值模型,推导了上下桥臂电压方程和环流特性。研究表明,通过合理控制子模块充放电模态可维持端口电压平衡,上下桥臂电压调控可影响网侧功率吸收,而环流特性对中压直流侧电压具有重要影响。

嵌入式老牛的博客 773

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

华为手机如何调时间显示_快速让华为手机变成一台电脑,INNOCN便携显示器的更多玩法...

之前,一直有听说华为手机可以当电脑使用,自己入手华为P30 Pro一年多来也不知道具体的玩法。而这个困惑伴随INNOCN便携显示器N1G的到来,终于解开了。有了这台移动便携显示器,不仅是手机变电脑,就连笔记本也可以实现分屏技术了,它可给我的生活带来不少乐趣。笔者测评过多款显示器,但对于触控式的便携式显示屏还是第一次尝鲜。从名称上就可以看出,这款显示器主打的亮点在“便携”上,像日常的出差或者在需要手...

weixin_33142729的博客 405

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

手机连接不上电脑只显示充电_INNOCN N1G便携显示器,解决孩子和大人多重使用需求...

对于显示器的选择,大部分人选择的都是24英寸以上的规格,毕竟屏幕大,看东西也更爽。不过有时候仅仅只有一个电脑屏幕是不够用的,这时候一块小巧但又功能丰富的显示器就很重要了。最近呢正好拿到了一款INNOCN出品的N1G便携显示器,之前也一直没有接触过这个品类,趁这次机会好好的体验一番。首先是随机附赠的东西,两根Type-c线(一根作为电源线,一根用来传输数据)以及一根MINI-HDMI转HDMI线,电...

weixin_39716044的博客 1345

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Google I/O大会:Android 13

该耳机支持多点连接,可以连接到多个设备,并且可以在设备之间无缝切换,而无需使用蓝牙菜单连接或断开耳机。续航方面,Pixel Buds Pro在降噪模式下续航为7小时,搭配充电盒续航长达20小时,关闭降噪模式下续航为11小时。同时,谷歌还展示了一款AR护目镜,但目前正处于概念阶段,仅展现了翻译功能。谷歌优化了平板的安卓体验,通知栏面积变得更大,任务栏也得到了改进,时刻固定在平板底部。该机将获得“五年的安全更新”和三年的操作系统更新,并将于7月28日上线,7月21日开始预订,售价449美元。

m0_65909361的博客 1377

Android和iOS手机APP开发之间的差异

开发APP是一项具有挑战性的高级任务。由于移动电话的普及,终端用户的普及以及不断变化的业务需求,它正在快速增长。根据Statista调查,智能手机用户数量预计将在2018年达到25.3亿以上。预计到2019年,全球手机用户数量将超过50亿。 在本文中,我们比较了10个类别中Android和iOSAPP开发之间的差异,以了解基本更改并确定更适合您的业务构建APP的OS平台。让我们深入研究: 1.开...

3368

世界首款MeeGo Tablet解密

前几天有机会零接触德国公司 WebTab 推出的世界上首款Meego Tablet。试玩了几天。感觉相当不错。直到今天早上英特VP和软件和服务部总裁 James Renee 在旧金山IDF大会上正式宣布 WebTab 下周正式开卖。觉得是时候给大家分享了。 硬件感觉屏幕尺寸是10英寸,图像非常清晰鲜艳。可视角度超过一般LCD电视。高亮度屏幕玻璃。一眼就可看出标准Meego菜单已经无影无踪。替代的是WebTab总裁描述的无数WebTab开发者在用户界面上做出的大量工作。看看背面:来张放大的:可以很容易看出这是

MeeGo社区博客 1733
上一篇: Error:java.lang.RuntimeException: Some file crunching failed, see logs for details
下一篇: 关于Android Studio真机测试时找不到设备问题
ZyClient
博客等级 码龄10年 29粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值