Android组件之Fragment(一)---基础知识与运用
发布时间:2025-05-12 08:52:50 发布人:远客网络
一、Android组件之Fragment(一)---基础知识与运用
Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑,当然现在他仍然是平板APP UI设计的宠儿,而且我们普通手机开发也会加入这个Fragment,我们可以把他看成一个小型的Activity,又称Activity片段!想想,如果一个很大的界面,我们就一个布局,写起界面来会有多麻烦,而且如果组件多的话是管理起来也很麻烦!而使用Fragment我们可以把屏幕划分成几块,然后进行分组,进行一个模块化的管理!从而可以更加方便的在运行过程中动态地更新Activity的用户界面!另外Fragment并不能单独使用,他需要嵌套在Activity中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响,比如Activity被destory销毁了,他也会跟着销毁!
引用官方的一张图片,其实已经说明问题了,就是为了更好的适配大屏,在大屏的时候,不需要去在一个activity内部通过复杂的布局和界面去实现,只需要去在一个activity内部,通过多个fragment来做界面布局实现即可,而且针对于多个fragment来说,每个fragment有单独的生命周期,
Demo样例,我们在一个界面中,有上下两个fragment,如图所示:
Step 2: Fragment创建,视图加载,数据赋值
Step 3: Activity在onCreate()方法中调用setContentView()之后调用FragmentTransaction进行事务提交
在xml中声明两个fragment,指定为具体的fragment
Step 1:定义Fragment的布局,就是fragment显示内容的
Step 2:自定义一个Fragment类,需要继承Fragment或者他的子类,重写onCreateView()方法在该方法中调用:inflater.inflate()方法加载Fragment的布局文件,接着返回加载的view对象
Step 3:在需要加载Fragment的Activity对应的布局文件中添加fragment的标签,记住,name属性是全限定类名哦,就是要包含Fragment的包名,如:
Step 4: Activity在onCreate()方法中调用setContentView()加载布局文件即可!
针对在一个Activity中的某个Layout中切换Fragment,,无非两种方法:
源码方法注释里面说的很明白,这个方法会移除所有的fragment,然后添加当前的fragment。
这时分为两种情况,一种是fragment已有并且在前台展示,一种是未有或者在后台,针对于前者,此时replace,生命周期不会发生变化,针对后者,生命周期会重新走
分为两种情况,一种fragment已存在,一种未存在,针对于前者,生命周期无变化,但是会回调onHiddenChanged方法,针对于后者,生命周期会创建一次。
1.Fragment是Google官方引入的一个为了适配大屏、多页面的一个组件。您可以理解为它就是一个类而已,只不过里面包含了View,并且与activity的生命周期进行了关联。
2.动态加载与静态加载相对来说,建议使用动态加载,静态加载固定在了xml文件中,永远不变。
3.replace的fragment如果不在前台,会执行所有生命周期,反之不会执行任何生命周期方法;hide+show生命周期并不会发生变化,但是会回调onHiddenChanged方法,在实际开发中,建议add之后,使用hide+show来操作fragment,一方面减少资源的重复加载和创建,另外一方面提升用户体验感。
4.fragment的生命周期大体上和activity一致,但是前期和后期多了一些东西,因为fragment内部有view,那么这个view需要进行创建、然后添加到activity内部,所以相应的在onCreate与onStart之间就多了几个方法-onCreateView、onViewCreated。相同的道理,fragment的view与activity解绑,也相应的在onStop与onDestory之间多个方法-onDestroyView。onAttach与onDetach可以理解为视图与activity产生关联和接触关联,是最开始和最后的步骤。
二、如何反编译android应用并重新打包
第一:使用apktool直接反编译apk
第三:进入到hellodemo\smali\com\example\hello,打开MainActivity.smali。找到:
const-string v1,"\u4f60\u597d",
第四:然后在命令行输入:apktool b hellodemo hellodemo1.apk。这回重新打包成hellodemo1.apk。
第五:然后给新生成的apk进行签名。把这个apk拷贝到autosign的目录下面,然后切换过去,在命令行输入:java-jar signapk.jar testkey.x509.pem testkey.pk8 hellodemo1.apk hellodemo.apk。
第六:把生成的hellodemo.apk安装到手机,可以看到主界面上已经显示的是hello,而不再是你好。说明反编译重新打包成功!
三、从事Android开发需要自己买Android设备吗
一般情况下不需要,但是如果你的PC内存低于4G,CPU也不太给力,还是买个便宜的手机,如果PC还可以的话,可以使用android虚拟机进行开发。
你只需要去android官网下载android sdk开发包,里面会自带一个模拟器,但是这里需要注意的是由于"墙"的原因官网访问不了,你可以android studio中文社区下载SDK开发包:
点击SDK Manager去下载自己想要的sdk和模拟器的image
上面的截图就是所有模拟设备的镜像文件,你想要开发什么样的设备就可以选择其中的一个进行下载,里面包含了64位intel, ARM手机,TV, Wear手表等设备的镜像。
下载完成后回到SDK根目录。启动AVD Manager(android虚拟设备管理器)
点击右侧的create进行创建自己想要的设备:
这里有不同的设备,对应不同的分辨率,具体就不再描述细节了,创建好后点击确定
出现上面画面,点击start后就可以了,第一次加载比较耗时,请耐心等待。