• 我的订阅
  • 科技

多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)

类别:科技 发布时间:2022-12-23 10:00:00 来源:书圈

讲解目前更流行的界面控件Fragment的编程方法,利用它可以实现灵活、动态的界面设计。该节从Fragment的生命周期的讲解入手,通过两个案例介绍了如何实现Fragment的静态加载和动态加载,尤其是动态加载(例4-12),实现了多页面、多区域间的界面互动,给用户带来了更丰富的操作体验。

【例4-12】使用Fragment实现分页显示功能。程序运行效果如图4.18所示,包含“列表”页和“列表项内容”页,并通过下方的TAB栏上的“列表”“列表项内容”按钮进行切换。在如图4.18(a)所示“列表”页中选择ListView控件中某个子项后,在如图4.18(b)所示“列表项内容”页面显示该子项的内容。

多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)

■ 图4.18分页导航程序运行效果

项目FragmentTabDemo实现了上述效果。该项目的文件结构与图4.17一样,拥有相同的java文件和布局文件的名称。其中,两个Fragment的布局文件内容与例4-11完全一样,下面是剩下的几个文件。

首先是MainActivity的布局文件activity_main.xml,代码如下。

多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)
多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)
多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)

整个布局由两部分构成,一部分是id为content的框架布局(FrameLayout)用于装载ContentFragment或者ListViewFragment视图,目前里面没有添加任何具体内容,具体内容将在MainActivity.java中动态添加;另一部分是用于TAB栏的水平线性布局(LinearLayout),这两部分间的水平空隙由高度为0.5dp的View控件填充。

TAB栏的水平布局分为两份,即按钮区域。左边的按钮区域是“列表”,id是listview_layout,右边按钮区域是“列表项内容”,id是content_layout。每份是一个RelativeLayout的相对布局,通过设置每个相对布局的layout_weight属性为1,使TAB栏的这两份区域宽度相等。每个按钮区域是一个内嵌ImageView和TextView控件的垂直线性布局,ImageView控件用于显示按钮的图标,而TextView控件用于显示按钮的文字。另外,两个按钮区域的垂直空隙也使用一个宽度为0.5dp的View控件填充。

现在来看一下.java文件。首先是ListViewFragment.java,主要代码如下。

多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)
多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)

与前面的静态加载Fragment不同,在ListViewFragment类中增加ListView的控件变量listview,String类型的成员变量mItemContent,用于保存选择的ListView子项内容。这里将mItemContent变量的访问属性设置为public,以便在MainActivity类中对该变量进行访问。在onCreateView函数中通过findViewById获得fragment_list_view.xml中的listView1控件并将之与listview变量绑定,通过setOnItemClickListener方法设置listview的监听器,当ListView中的子项被选中后,该子项的内容被保存到mItemContent变量中。

然后是ContentFragment.java,代码如下。

多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)

在ContentFragment类中也增加了EditText控件变量,并在onCreateView方法中将之和fragment_content.xml中的editTextTextMultiLine控件关联。ContentFragment类使用两种方法将所属Activity中的数据(字符串)显示到EditText控件上。一种是提供了公有访问的setContents方法,该方法在ContentFragment对象初始化完成后通过对象直接调用;另一种是在onCreateView方法中通过Bundle方式接收所属Activity传过来的数据,用于ContentFragment对象创建后初次显示时使用。

最后是MainActivity.java文件。该文件中定义了类型为ContentFragment的成员变量contentFragment,类型为ListViewFragment的成员变量listviewFragment,与Tab栏中“列表”布局相对应的View成员变量listviewLayout,以及与“列表项内容”布局对应的View成员变量contentLayout。

为了使Tab中的按钮区域能响应用户的单击,令MainActiviy实现View.OnClickListener接口,获得监听器,然后将这个监听器通过上述View成员变量的setOnClickListener(this)方法分别绑定到两个Tab按钮区域上,最后在重写的onClick方法中判断用户是单击了哪个区域。为了实现按钮区域切换的视觉效果,通过控件成员变量的setBackgroundColor方法将选中的区域的背景色置为蓝色(0xff0000ff),没选中的置为白色(0xffffffff)。

程序在setTabSelection方法中实现动态加载Fragment。因为用户使用过程中会来回切换页面,所以每当用户切换时要判断相应的Fragment是否已加载,如果没有则创建相应的Fragment对象并加载,否则只需让选中的页面对应的Fragment显示,其他页面对应的Fragment隐藏。

为了实现数据从ListViewFragment页面传递到ContentFragment页面,MainActivity通过listviewFragment.mItemContent获取用户单击的ListView子项内容,当ContentFragment页面存在时通过contentFragment.setContents方法将它传递给ContentFragment页面,如果ContentFragment页面不存在,则通过Bundle将数据传递给contentFragment对象,这样当ContentFragment页面初次显示时能得到这些数据。具体代码如下。

多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)
多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)
多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)
多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)

扫码观看讲解视频,限免三天

01

参考书籍

《Android Studio移动网络程序设计案例教程(第2版 微课视频版)》

作者:傅由甲 杨承玉

定价: 79元

扫码优惠购书

编辑推荐

(1)内容涵盖Android移动网络程序开发的理论、实验、课程设计三部分。

(2)改变程序设计类课程中的单纯知识讲解及简单例子模拟的教学方式,通过引进工程案例,采用项目引导与驱动的方法,使学生在掌握移动网络编程技能的同时,获得更好的工程实践体验。

(3)在Android开发的基础知识上增加了目前常用的Fragment、移动网络及百度地图开发技术。

(4)针对Android 6.0以上平台对Android应用程序的要求完善案例源码,使之能适应目前主流的Android移动设备。

(5)配套丰富的教学资源:微课视频、程序代码、教学课件、教学大纲、习题答案等。 返回搜狐,查看更多

责任编辑:

以上内容为资讯信息快照,由td.fyun.cc爬虫进行采集并收录,本站未对信息做任何修改,信息内容不代表本站立场。

快照生成时间:2022-12-23 11:45:03

本站信息快照查询为非营利公共服务,如有侵权请联系我们进行删除。

信息原文地址:

Android用户界面程序设计案例 | 约束布局(附限免视频)
手把手地介绍约束布局设计中的控件定位。约束布局(ConstrainLayout)是Android Studio 2.2中新增的功能之一
2022-12-20 09:02:00
苹果iPhone相机应用专利曝光:优化操作逻辑,改善用户界面
...一项编号为 US11706521B2 的技术专利。该专利旨在通过优化用户界面,简化用户操作,降低使用门槛,提高易用性,改善拍摄体验。在该专利的描述中,苹果认为现有电子设备在拍
2023-08-01 22:12:00
组件库 | UI设计师必会的组件系统!
.... 什么是组件库组件库是将界面中具有通用性的元素组件/控件进行归纳整理,形成统一规范的组件集合,以此达到快速复用、批量修改的目的。组件库是一个强大的工具库,方便设计师随时调用
2023-02-23 13:00:00
苹果重新设计ipados18系统标签栏体验
...态下,标签栏现在位于这些应用的顶部,更靠近其他导航控件,而在横向模式下则会出现一个可定制的侧边栏。苹果表示,将标签栏放在应用程序的顶部和其他导航控件之间,可以减少界面占用的横
2024-06-15 03:59:00
智能对话时代来临:GUI正在向CUI演变
...变,又或者是影响到了具体的功能形态,比如传统的图形用户界面GUI,就可能会向对话式用户界面CUI过渡。那么,如何理解这一变化?这一过渡和演变,又会对产品的信息架构设计带来怎样
2023-04-19 18:00:00
ui自动化测试技术发展历程
...。UI自动化测试(UserInterfaceAutomationTesting)是对被测软件用户界面(UI)进行自动执行测试的一种方法
2024-04-04 02:40:00
iOS 18 Beta 4发布:新功能详解与变化探索
...更快速地访问到他们经常使用的相机工具。此外,手电筒用户界面也进行了更新。这个新界面以前是iPhone14Pro和iPhone15Pro的专属功能
2024-07-28 15:07:00
苹果AI智能家居新品曝光:一款挂墙上,一款长手臂
...和约会。或者,他们可以配置屏幕以突出显示关键的Home控件。还将有一个用于快速启动喜爱的应用程序的Dock和一个类似iPhone的软件图标主屏幕网格。据彭博社报道,在开发过程
2024-11-14 09:46:00
苹果公司ios17更新新功能
...重新设计。音乐播放器将展示全屏动画艺术品,与下方的控件完美融合。该应用还将显示每首歌曲的歌曲荣誉,包括乐器演奏者、音乐创作人、制作人和工程人员。苹果支付苹果公司继续向银行业进
2023-10-03 21:46:00
更多关于科技的资讯:
中新经纬1月18日电 据路透社1月18日报道,据周五提交的法庭文件显示,埃隆・马斯克正向OpenAI及微软公司索赔最高1340亿美元(约合人民币超9340亿元)
2026-01-18 12:53:00
厦门网讯(厦门日报 佘峥)1月20日起,厦门大学思明校区访客预约入校方式改变,将采用“线上预约+摇号”形式。厦大保卫处近日发布消息
2026-01-18 08:43:00
河北日报讯(记者王璐丹)近日,平方公里阵列天文台(SKAO)官网发布消息,位于南非的平方公里阵列中频射电望远镜(SKA-Mid)首次成功获得干涉条纹
2026-01-18 07:54:00
人工智能如何赋能“安徽万物”?
大皖新闻讯 1月16日,《安徽省“人工智能+万物”应用行动方案》发布,到2030年,安徽“人工智能+万物”应用落地将超万个
2026-01-17 21:56:00
鲁网1月17日讯1月13日上午,普惠(临沂)投资服务有限公司考察组一行赴临沂市供应链金融协会开展学习交流活动。临沂市供应链金融协会会长
2026-01-17 14:47:00
1月16日,全球最大、起重量达2300吨的桥面吊机在河北省秦皇岛市一装备制造企业正式下线,标志着我国在大型桥梁施工装备领域又获重大突破
2026-01-17 15:44:00
2026天然苏打水市场趋势:健康化、场景化成主流 泉匠深耕多区域市场实现销量突破
随着健康消费理念的深度渗透,天然苏打水行业正迎来高质量发展的黄金期。据行业权威报告预测,2026年中国天然苏打水市场规模将突破260亿元
2026-01-17 15:58:00
开元云与广西大学人工智能学院达成战略合作,共建AI产教融合新高地
广西大学人工智能学院常务副院长张振荣、副院长赵志刚、陈燕教授等老师,出席双方产学研合作签约仪式。2026年1月15日 广西南宁
2026-01-17 15:58:00
数据接口安全风险监测国标正式发布!深信服深度参编
根据2025年12月2日国家市场监督管理总局、国家标准化管理委员会发布的中华人民共和国国家标准公告(2025年第33号)
2026-01-17 16:00:00
近日,国网潢川县供电公司依托用电信息采集系统及“专变负载可视化”数据集,构建反向有功异常自动监测告警机制,实现非光伏用户反向用电异常精准识别处置
2026-01-17 16:00:00
新消费|万物皆可租!这届年轻人为何“能租就不买”?
租一台口袋相机只需30元一天专业优质的画质却可以让旅途回忆更生动用百来元就能配齐一整套露营装备花100元便能轻松满足整趟出国旅行的穿搭需要……如今越来越多的年轻人正通过“租赁”重新定义自己的消费方式近日
2026-01-17 16:54:00
冷暖省电双先锋!美的酷省电二代横扫抖音商城三榜冠军
2026刚开年,空调行业首款爆品已然出现——全新上市美的酷省电二代便凭硬核实力脱颖而出,强势斩获抖音商城智能空调爆款榜
2026-01-17 16:00:00
厦门钨业通过技术创新与人才创新,不断攻克行业技术难题,塑造发展新动能让“有色”更出色东南网1月17日讯 (福建日报记者 戴敏 李向娟)近日
2026-01-17 11:38:00
在漳州龙文区,智能机器人等一批前沿项目正在聚集,新质生产力蓬勃生长——“未来场景”来到家门口东南网1月17日讯 (福建日报报业集团记者 杨凌怡 通讯员 张小惠)广场前
2026-01-17 11:41:00
中国姚绣站上巴黎大展C位
1月15日至19日,非遗苏绣品牌姚绣(Yao Silk)再度亮相巴黎M&O展,成为本届展会Fine Craft(精品工艺)展区唯一中国品牌
2026-01-17 09:40:00