• 我的订阅
  • 科技

多个用户界面的程序设计案例 | 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
苹果iPhone相机应用专利曝光:优化操作逻辑,改善用户界面
...一项编号为 US11706521B2 的技术专利。该专利旨在通过优化用户界面,简化用户操作,降低使用门槛,提高易用性,改善拍摄体验。在该专利的描述中,苹果认为现有电子设备在拍
2023-08-01 22:12:00
组件库 | UI设计师必会的组件系统!
.... 什么是组件库组件库是将界面中具有通用性的元素组件/控件进行归纳整理,形成统一规范的组件集合,以此达到快速复用、批量修改的目的。组件库是一个强大的工具库,方便设计师随时调用
2023-02-23 13:00:00
智能对话时代来临:GUI正在向CUI演变
...变,又或者是影响到了具体的功能形态,比如传统的图形用户界面GUI,就可能会向对话式用户界面CUI过渡。那么,如何理解这一变化?这一过渡和演变,又会对产品的信息架构设计带来怎样
2023-04-19 18:00:00
ui自动化测试技术发展历程
...。UI自动化测试(UserInterfaceAutomationTesting)是对被测软件用户界面(UI)进行自动执行测试的一种方法
2024-04-04 02:40:00
苹果公司ios17更新新功能
...重新设计。音乐播放器将展示全屏动画艺术品,与下方的控件完美融合。该应用还将显示每首歌曲的歌曲荣誉,包括乐器演奏者、音乐创作人、制作人和工程人员。苹果支付苹果公司继续向银行业进
2023-10-03 21:46:00
VEGAS Pro 19中文版下载_VEGAS Pro(视频编辑)直装版-vegas pro 19中文破解版
...改进了设置以减少为渲染和播放调整它们的需要。20、新用户界面:对VEGAS用户界面进行大修,为用户提供所需的灵活性并轻松访问他们最需要的控件。21、项目笔记的时间码标记:项目
2023-01-25 11:00:00
微软推送 Win11 226x1.2050 更新
...国),后续将添加扩展更多语言。QuickSetting中的全新音量控件微软在快速设置(QuickSettings)中引入了增强型的音量控件体验
2023-07-22 19:46:00
微软win11build25300预览版更新日志发布
...:重新设计MicrosoftStore主页面上的特色产品布局,全新的用户界面和动画效果更加人性化。页面支持任何类型的输入(触摸
2023-02-17 14:20:00
更多关于科技的资讯: