• 我的订阅
  • 科技

多个用户界面的程序设计案例 | 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
更多关于科技的资讯:
像导游一样的前台、会直播的销售 去酒店上班,也要懂自媒体运营
今年,杭州的酒店屡上热搜,先是酒店外摆卖美食,再是40元打包酒店自助餐……那些“第一个吃螃蟹”的酒店借着流量火了一波,证实了酒店在公域耕耘的重要性
2025-12-29 08:42:00
解码当下流行文化:腾讯QQ流行文化观察(2025)
卷首语从通讯工具到数字生活空间当我们在2025年审视QQ,看到的早已不是一个简单的即时通讯应用。它更像一座自然形成的数字城市
2025-12-29 08:43:00
“数据合规与保护专业能力评价”首次考试圆满举行
2025年12月27日,由中国计算机行业协会主办的“数据合规与保护专业能力评价”首次考试顺利举行,作为国内第一个数据合规领域的标准化能力评价考试
2025-12-29 09:13:00
中新经纬12月29日电 据韩联社报道,韩国电商巨头酷澎(Coupang)创始人、其美国母公司酷澎Inc.董事会主席金范锡(音)12月28日就近期引起广泛关注的用户信息外泄事件首次公开致歉
2025-12-29 10:16:00
2025年,兴业银行石家庄分行以“安愉人生”养老金融服务品牌为核心,围绕“生态构建、服务升级、安全守护”三大维度发力,全方位推进养老金融高质量发展
2025-12-29 10:29:00
做用户信赖的智家服务守护者——记泰安联通岱岳分公司夏张营业部王景峰
鲁网12月29日讯泰安联通岱岳夏张营业部智家工程师王景峰,坚守装维服务一线,以精益求精的服务态度、扎实过硬的专业能力,成为用户口中“信得过
2025-12-29 11:02:00
预计年产值20亿元!杭州新开工项目,2028年投用!
近日,杭州赋厨人工智能产业发展有限公司新建AI+智能厨电研发及生产项目正式开工建设。据悉,该项目位于杭州富春湾新城,总投资10亿元
2025-12-29 08:11:00
RUA RUA PANDA大熊猫主题全球巡展伦敦站期间,来自德国、法国、荷兰的粉丝专程“打飞的”到Bamboo Zoo快闪店抢购侦探熊猫
2025-12-29 07:40:00
中新经纬12月27日电 据“网信中国”微信号,27日,国家互联网信息办公室起草了《人工智能拟人化互动服务管理暂行办法(征求意见稿)》
2025-12-28 09:18:00
杭州发放10000张无门槛停车券!今天开抢
好消息:2025年12月28日至2026年1月3日,连续7天,“杭州停车”微信小程序将每天放出停车优惠券,总计10000张
2025-12-28 11:45:00
以安全智造引领行业高质量发展
坐落于青岛胶州市上合示范区的海尔上合冰箱互联一工厂,是海尔自创立以来在全球投资最大、智能化程度最高、产业链配套最完整、生态体系最健全的安全生产标杆项目
2025-12-28 15:05:00
永辉南京首家胖东来模式新店落户江宁宝龙,万达茂店焕新压轴开业
岁末钟声渐近,金陵城中,两处商业地标正悄然点亮品质生活的新图景。12月29日,永辉超市南京江宁宝龙广场店将盛大开业,这是永辉在南京全新开设的首家胖东来模式门店
2025-12-28 21:29:00
AIGC视听产业人才新生态大会在京举办
中国青年报客户端讯(中青报·中青网记者余冰玥)12月27日,2025首创郎园AIGC视听产业人才新生态大会在北京举办。面对AI创作人才日益年轻化
2025-12-28 21:31:00
国际热核聚变实验堆ITER计划校正场线圈采购包任务在合肥竣工交付
大皖新闻讯 12月28日,由中国科学院合肥物质科学研究院等离子体物理研究所(以下简称合肥物质院等离子体所)承担的国际热核聚变实验堆ITER计划校正场线圈采购包圆满完成全部的制造任务
2025-12-28 15:14:00
江南时报讯 12月27日,以“智赋江苏,聚势腾飞”为主题的2025江苏省人工智能产业发展大会在南京举行。大会设置江苏“人工智能+”创新成果展区
2025-12-28 21:23:00