首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android入门教程 | Fragment 基础概念

实际上,如果要将现有 Android 应用转换为使用片段,可能只需将代码从 Activity 的回调方法移入片段相应的回调方法中。...onCreateView() 系统会在片段首次绘制其界面时调用此方法。如要为片段绘制界面,从此方法中返回的 View 必须是片段布局的根视图。如果片段未提供界面,可以返回 null。...(在本例中,此值为 false,因为系统已将扩展布局插入 container,而传递 true 值会在最终布局中创建一个多余的视图组。) 接下来,需将该片段添加到您的 Activity 中。...系统会直接插入片段返回的 View,从而代替  元素。...宿主 Activity 已停止,或片段已从 Activity 中移除,但已添加到返回栈。已停止的片段仍处于活动状态(系统会保留所有状态和成员信息)。

3.5K40

《移动互联网技术》第五章 界面开发: 掌握Activity的基本概念,Activity的堆栈管理和生命周期

的生命周期;重点掌握视图结构、布局模型、事件处理模型和信息传递方式Intent;对于界面的组成元素,重点掌握常用的几种控件:列表控件(ListView)、滑动页面控件(ViewPager)、碎片(Fragment...Intent除了启动同一个应用中的活动外,还可以打开移动设备上其他应用的活动,实现不同应用功能的共享。...如果要展示的数据很多,那就需要先将数据准备好,这些数据可以从网上下载,也可以从数据库中读取,具体视应用程序的场景来决定。 有了数据以后,需要用适配器对象把数据和界面视图联系起来。...“State”表示适配器只保留当前页面,当页面切换出屏幕时,就会被回收,并释放资源;当页面需要显示时,将生成新的页面。采用这种方式,ViewPager就能够拥有很多的页面,并且不会占用大量的内存。...,实现了活动的重用和共享。

22510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android训练课程(Android Training) - 高效的显示图片

    为了有效的利用内存,这些组件在滚动时会回收重用它们的子视图控件。如果每个子控件都在AsyncTask中引发,那么当任务完成时就无法得到保证,导致被关联到的视图还没有被回收,就使用在其他子视图中了。...ListView 和 GridView 组件及其他需要回收他们子视图的组件。...有些组件 通过回收移除屏幕的子视图的方式 可以保持较少的内存使用 。加入你没有或者更长久的活动引用,垃圾回收器将会释放你加载的图片。...下面是一个 拥有ImageView子元素的 ViewPager的实现,主Actvity 持有了 ViewPager和 adapter。...然而,由于 GridView 回收它们的子视图,你仍然需要一个并发问题的方式。

    2.9K00

    ViewPager 详解(二)—详解四大函数

    .ViewPager使用回调函数来表示一个更新的步骤,而不是使用一个视图回收机制。...在需要的时候pageradapter也可以实现视图的回收或者使用一种更为巧妙的方法来管理视图,比如采用可以管理自身视图的fragment。...数据集合的改变包括页面的添加删除和修改位置。viewpager要维持当前页面是活动的,所以你必须提供getItemPosition方法。...其实我的理解是可以代表当前页面的任意值,只要你可以与你增加的View一一对应即可,比如position变量也可以做为Key(最后我们举个例子试试可不可行) 心得 : 1、从说明中可以看到,在代码中,我们的责任是将指定...only must ensure this is done by the time it returns fromfinishUpdate(ViewGroup).”这句话在destroyItem()的函数说明中同样出现过

    44730

    Android开发笔记(一百七十二)第二代翻页视图ViewPager2

    接着新建一个活动页面,往该页面的XML文件添加如下所示的ViewPager2标签:     viewpager2.widget.ViewPager2         android...只要以下寥寥几行代码就搞定了:     // 从布局文件中获取名叫vp2_content的二代翻页视图     ViewPager2 vp2_content = findViewById(R.id.vp2...ViewPager2不仅支持循环适配器,同样支持翻页适配器,还是新的哦。...的视图对象,再利用TabLayoutMediator把标签布局跟翻页视图连为一体,关键代码示例如下:     // 从布局文件中获取名叫tab_title的标签布局     TabLayout tab_title...= findViewById(R.id.tab_title);     // 从布局文件中获取名叫vp2_content的二代翻页视图     ViewPager2 vp2_content = findViewById

    2.3K30

    Android开发笔记(六十七)嵌入页面的碎片

    Fragment 概念 Android从3.0之后引入了Fragment,可以把它理解为页面的一个片段,比如一个html网页就包含一个header头部片段,以及一个body身体片段。...设计Fragment的目的是让页面布局更加灵活,不但可以随意组装和拼接各个片段,还可以只更新某个片段实现页面局部更新的功能(这个类似网页的ajax技术)。...Fragment可以协助我们完成如下任务: 1、在一个页面中嵌入多个连续可翻页的子视图,方面使用ViewPager统一管理; 2、开发一些通用的小部件,内部封装好代码逻辑,可直接嵌入到任意页面。...对象构造而来,每个元素返回的又是已初始化的Fragment对象;最后对ViewPager设置该适配器,从而把ViewPager与多个Fragment页面关联起来。...静态注册主要用于多个Activity共享一个子页面,比如说顶部广告、底部推广、嵌入地图等等,最常见的是百度地图SDK的运用,app要想在页面上展示百度地图,只需在布局中加上一个百度地图的fragment

    1.3K60

    Android知识点基础篇(二)

    与 TextureView 主线程Looper.loop为什么不会造成死循环 ViewPager的原理 BroadcastReceiver使用总结 AndroidP新特性 Asset目录与res目录的区别...从定义来讲Binder是一种Android中实现跨进程的方式;也是一种虚拟的物理设备驱动,连接Service进程、Client进程和ServiceManager进程;而对于Android代码来说,Binder...一个进程空间分为用户空间和内和空间,进程间用户空间数据不可共享而内核空间是可以共享的,因为所有进程共用一个内核空间。用户空间可以和内核空间通过系统调用交互,从而实现内存共享。...从源码我们可以看到ActivityThred在main函数中创建了Looper,这也是为什么我们再主线程使用Handler不需要自己构建Looper的原因。...ViewPager的原理   ViewPager实现视图左右滑动,原理在于创建了三个视图,屏幕中间展示的是中间的视图,而屏幕两侧隐藏着的则是预加载的视图,当左右滑动时,将预加载的视图显示出来,并且缓存当前视图

    95731

    Android开发笔记(一百零一)滑出式菜单

    办法肯定是有的,在《Android开发笔记(三十五)页面布局视图》中,我们提到margin和padding都可用来设置空隙,空隙的数值都是正数,其实空隙值也能是负数,负数表示该视图被隐藏了一部分,仿佛一张纸插了部分纸面到书中...方法设置内容布局,调用setBehindContentView方法设置菜单布局,注意两个初始布局都是空的; 4、从自己写的Fragment类分别构造出实际的内容布局和菜单布局,然后调用FragmentManager...即ViewPager自身就是作为内容布局的Fragment嵌入到SlidingMenu中,然后ViewPager的子页面也是作为Fragment嵌入到ViewPager,这样就造成了一个问题:Fragment...的子页面来说,仅仅是做了detach操作,并没有做remove或destroy操作,也就是说,ViewPager子页面根本就没被回收;所以点击菜单重新回到替换后的ViewPager时,系统发现头两页没有回收...不知道这个情况算不算Fragment的一个bug,不管怎样,系统没有自动回收嵌套的Fragment,就得我们自己手动回收了。

    1.2K70

    很全面的Android面试题

    Activity中提供了一个 onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用, 可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。...每个保存方法需要传入两个参数,第一个参数是键,用于后面从 Bundle中取值,第二个参数是真正要保存的内容。...以下几种情况的分析都遵循该原则 当用户按下HOME键时 长按HOME键,选择运行其他的程序时 锁屏时 从activity A中启动一个新的activity时 屏幕方向切换时 如何退出Activity?...活动传递给Fragment:为了方便碎片和活动之间进行通信, FragmentManager提供了一个类似于findViewById()的方法,专门用于从布局文件中获取碎片的实例,前提是自己在布局文件中定义...当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。

    5.9K70

    很全面的Android面试题

    Activity中提供了一个 onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用, 可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。...每个保存方法需要传入两个参数,第一个参数是键,用于后面从 Bundle中取值,第二个参数是真正要保存的内容。...以下几种情况的分析都遵循该原则 当用户按下HOME键时 长按HOME键,选择运行其他的程序时 锁屏时 从activity A中启动一个新的activity时 屏幕方向切换时 如何退出Activity?...活动传递给Fragment:为了方便碎片和活动之间进行通信, FragmentManager提供了一个类似于findViewById()的方法,专门用于从布局文件中获取碎片的实例,前提是自己在布局文件中定义...当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。

    54910

    2021年Android面试题及答案收集(不断更新中)

    在以下情况中垃圾回收机制会被触发: (1)所有实例都没有活动线程访问 ;(2)没有其他任何实例访问的循环引用实例;(3)Java中有不同的引用类型。...对于List的随机访问来说,就是只是随机来检索位于特定位置的元素,List的get(int index)方法返回集合中由参数index指定的索引位置的对象,索引下标从0开始。...Map映射是一种把关键字对象映射的集合,他的每一个元素都包括一堆键对象和值对象,Map没有继承Collection接口,从Map集合中检索元素时只要给出键对象,就会返回对应的值对象。...,仅次于寄存器,栈数据可以共享,但其在栈中的数据大小和生存期必须是确定的; 栈内存和堆内存都属于Java内存的一种,系统会自动去回收它,但对于堆内存开发人员一般会自动回收。...在优先级别最低的线程中进行,所以当应用繁忙时,GC就不会被调用; Java堆内存不足时,主GC会被调用,当应用线程正在运行,并在运行过程中创建新对象时,若这时内存空间不足,JVM会强制调用主GC,以便回收内存用于新的分配

    90620

    Android开发笔记(二十一)横幅轮播页Banner

    ViewPager ViewPager的概念 在前面的博文《Android开发笔记(十九)底部标签栏TabBar》中,我们提到可以在一个主页面里通过选项卡方式,切换到不同的子页面。...ViewPager的基本思想跟适配视图差不多,都是定义一组元素,通过适配器来展示与响应不同元素的处理,适配视图的相关说明参见《Android开发笔记(三十八)列表类视图》。...如果ViewPager里面的视图是View与View的子类,那么适配器都用PagerAdapter;如果ViewPager里面的视图Fragment,那么适配器就要用FragmentStatePagerAdapter...下面是这两个工具的使用说明: 1、在布局文件中,二者需要作为ViewPager的的下级节点; 2、在布局文件中,二者本身无需另外定义id,代码中一般也不需要取出它们的对象做什么处理; 3、二者除了展示标题之外...5、多页面的的页码指示器 ViewPager有对应的PagerTabStrip和PagerTitleStrip,可以自动显示页码文字;ViewFlipper则没有相关的页码类,如果需要的话,只能自己定义一个新类

    3.7K30

    使用 Material Design 组件实现 Material 动效

    如果您熟悉 Android 共享元素过渡,它与容器转换的设置非常相似。 首先,确定两个共享元素的视图,并为每一个视图添加 过渡名称。...注意,两个共享元素不需要使用相同的过渡名称。 这两个视图会被我们的容器转换使用。...共享轴过渡会在操作两个目标的同时创建最终的、编排过的过渡效果。这意味着 "成对" 的过渡会一起运行去创建连续的定向的动画。...这样,我们就在进出搜索页面时有了一个漂亮的共享 z 轴过渡!共享轴是一个非常灵活的过渡,可以应用于许多不同的场景,从页面过渡到智能回复选择,再到进入或者垂直的步骤流程。...在 Reply 应用中,我们将用不同的电子邮件列表 (带有新参数的 HomeFragment) 替换电子邮件列表 (HomeFragment)。

    1.9K20

    2018-05-03 Java高级面试题及答案各自的子类比较对比一:

    因此,ArrayList的性能比Vector好。 2、当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样。...2、如果集合中的元素的数目大于目前集合数组的长度时,在集合中使用数据量比较大的数据,用Vector有一定的优势。...2、ConcurrentHashMap采用锁分段技术,将整个Hash桶进行了分段segment,也就是将这个大的数组分成了几个小的片段segment,而且每个小的片段segment上面都有锁存在,那么在插入元素的时候就需要先找到应该插入到哪一个片段...弱引用:第二次垃圾回收时回收的引用,短时间内通过弱引用取对应的数据,可以取到,当执行过第二次垃圾回收时,将返回null。...为什么要用线程池那先要明白什么是线程池线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程。

    73050

    Android基础部分再学习---activity的生命周期

    关于activity的生命周期:要知道的知识点 1.每个生命活动执行的顺序、 2.每个生命周期我们应该做怎么样的处理:每个方法保留的时间有多久;那个方法是活动阻塞的,他没有做完,别的人做不了;那个方法让我们暂时回收内存...在整个生命周期的活动中,系统可能会调用onStart()和onStop()多次,因为活动之间交替进行隐藏或显示给用户。...它仍然保持着自身的所有实例和状态,所以根本不用担心它在返回到onResume方法时,实例会变为null,或者控件的事件监听不了(我以前就担心过这个问题)。...即便是内存不足,被回收了,再次Recreate的话,又是一次新的生命周期的开始,又会执行onCreate方法。...a、将被杀掉的进程 和 当前进程 处于同一个包或者应用程序中;android:process b、将被杀掉的进程 是由当前应用程序所创建的附加进程; c、将被杀掉的进程 和 当前进程 共享了普通用户的

    91320

    浏览器要原生实现React的并发更新了?

    整个过程有很多可以优化体验的地方,比如: 从旧图到新图的渐变过渡效果 点击缩略图发起图片请求后,大图区域可以先显示旧图(而不是立刻显示loading效果),待新图请求成功后再过渡到新图 这里解释下第二点...,对于切换类的交互,相比于「当视图切换时立刻显示loading效果,待新视图加载完成后过渡到新视图」,「当视图切换时先显示旧视图,待新视图加载完成后过渡到视图」在延迟不高的情况下体验会更好。...::view-transition-old(root)中 新视图保存在::view-transition-new(root)中 对于上述相册示例,挂载的伪元素树结构如下: 之所以要挂载一棵伪元素树,主要是因为两个原因...方便对整个页面中不同「视图切换」分组 比如,在上述相册示例中,视图切换的元素包括两部分: 新/旧视图之间的切换(下图红框部分) 新/旧图片名称的切换(下图绿框部分) 相册对应的HTML结构如下: img...{ view-transition-name: figure-caption; } 会得到一棵新的伪元素树,其中「视图部分」和「图片名称部分」伪元素是分离开的: 通过给页面中不同HTML元素定义不同的

    17210

    ViewPager快速实现引导页

    一、ViewPager简介 ViewPager是android扩展包v4包中的类,这个类可以让用户左右滑动切换当前的view。...适配器有责任增加即将创建的View视图到给定的container中,确保在finishUpdate(viewGroup)返回时,增加视图的事情已经完成。...destroyItem(ViewGroup, int, Object):移除给定位置的view,适配器有责任将该view从container中移除,确保在finishUpdate(viewGroup)返回时...finishUpdate (ViewGroup container):展示界面中的改变完成时调用。在这个时间点上,你必须确保所有的页面已被合适的从container中添加或移除。...继续使用WidgetSample工程的advancedviewsample模块,在src/main/res/layout/目录下创建viewpager_layout.xml文件,在其中填充如下代码片段:

    1.4K70

    ZGC关键技术分析

    通过设置地址元位的状态,可以形成不同地址视图,ZGC同一物理堆内存被映射到虚拟地址空间三次,从而产生同一物理内存的三个“视图”,GC活动的不同时期会只存在一个活跃视图,根据垃圾回收的周期ZGC通过切换不同视图标来记出对象的颜色...活动信息是页面上的活动字节数,用于选择将要回收的页面,这些对象将作为堆碎片整理的一部分进行重新定位。...并发转移准备(EC)并发转移准备任务:筛选所有可以被回收的页面选择垃圾比较多的页面作为页面转移集初始转移(STW3)初始转移主要以下过程:调整地址视图:将地址视图从M0或者M1调整为Remapped,说明进入真正的转移...重定位TLAB:因为地址视图调整,所以要调整TLAB中地址的视图。开始转移:从根集合出发,遍历根对象的直接引用的对象,对这些对象进行转移。...在图8(8)中,并发标记阶段 (M/R) 通过查询转发表失效的指标被映射到新位置。最后,在图8(9)中,上一周期EC页面的转发表被回收,为即将到来的并发转移 (RE) 阶段做准备。

    41430

    Mono for Android 实现高效的导航

    本文提到的导航都是根据 Android 4.0 设计规范中推荐的 ActionBar 实现的, 因此整个应用程序启用带 ActionBar 的主题, 如果使用 Java 的话, 需要手工编辑 AppManifest.xml..., 继承自 /// Mono.Android.Support.V4.View.PagerAdapter, 所有加载过视图都保存在内存中, /// 如果视图占用内存过多, 考虑替换成 FragmentStatePagerAdapter...> 下拉列表 下拉列表导航是在 ActionBar 中显示一个下拉列表 (Spinner), 就像一个菜单, 只显示选中的菜单项对应的视图, 如下图所示: ?...点击图标返回应用程序的上一级 Activity , 注意是上一级 Activity , 不是上一个 Activity , 关于向上与返回的区别, 可以看看 Android SDK 中的 Providing...if (NavUtils.ShouldUpRecreateTask(this, upIntent)) { // 上级 Activity 没有起动过, 需要创建一个新的导航栈道 TaskStackBuilder.Create

    75611
    领券