餐饮加盟资讯
当前位置:  首页 > 创业资讯 > 餐饮加盟资讯 > 多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)
多个用户界面的程序设计案例 | Fragment控件编程(附限免视频)
2023-01-07 01:45 来源: 988创业网

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

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

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

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

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

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

整个布局由两部分构成,一部分是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不同,在ListViewFragment类中增加ListView的控件变量listview,String类型的成员变量mItemContent,用于保存选择的ListView子项内容。这里将mItemContent变量的访问属性设置为public,以便在MainActivity类中对该变量进行访问。在onCreateView函数中通过findViewById获得fragment_list_view.xml中的listView1控件并将之与listview变量绑定,通过setOnItemClickListener方法设置listview的监听器,当ListView中的子项被选中后,该子项的内容被保存到mItemContent变量中。

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

在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页面初次显示时能得到这些数据。具体代码如下。

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

01

参考书籍

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

作者:傅由甲 杨承玉

定价: 79

扫码优惠购书

编辑推荐

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

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

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

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

(5)配套丰富的教学资源:微课视频、程序代码、教学课件、教学大纲、习题答案等。

下一篇:返回列表 下一篇:《速9》导演林诣彬解释,为何他一直回归到范迪塞尔的“大家庭”
资讯推荐
猜你喜欢

Copyright © 988创业网

全国免费服务热线:

友情提示:投资有风险,咨询请细致,以便成功加盟。