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

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

Fragment 概念 Android从3.0之后引入了Fragment,可以把它理解为页面的一个片段,比如一个html网页就包含一个header头部片段,以及一个body身体片段。...Fragment可以协助我们完成如下任务: 1、在一个页面中嵌入多个连续可翻页的子视图,方面使用ViewPager统一管理; 2、开发一些通用的小部件,内部封装好代码逻辑,可直接嵌入到任意页面。...对象构造而来,每个元素返回的又是已初始化的Fragment对象;最后对ViewPager设置该适配器,从而把ViewPager与多个Fragment页面关联起来。...这样,每次获取Fragment实例,都是调用newInstance方法获得,而不是调用它的构造函数。...导致状态丢失的情况有很多,其中一种是早期的Android可能在onStop之前就会结束Activity,后来从3.0开始只能在onStop之后才能结束Activity,这样早期Android如果在omPause

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

    Android后台杀死系列之一:FragmentActivity及PhoneWindow后台杀死处理机制

    对于startActivity函数的调用很多文章都有介绍,可以简单参考下老罗的博客Android应用程序内部启动Activity过程(startActivity)的源代码分析,比如在Activity A...下面结合具体的系统View控件来分析一下这两个函数的具体应用:比如ViewPager与FragmentTabHost,这两个空间是主界面最常用的控件,内部对后台杀死做了兼容,这也是为什么被杀死后,Viewpager...ViewPager应对后台杀死做的兼容 首先看一下ViewPager做的兼容,ViewPager在后台杀死的情况下,仍然能恢复到上次关闭的位置,这也是对体验的一种优化,这其中的原理是什么?...= null) { mWindow.restoreHierarchyState(windowState); } } } 从代码可以看出,其实就是获取当时保存的窗口信息...从源码很容易看出,其实就是取出SavedState,并获取到异常杀死的时候的位置,以便后续的恢复, ViewPager.java @Override public void onRestoreInstanceState

    3.1K30

    Android基础:Fragment,看这篇就够了

    如果要获取Activity对象,不建议调用getActivity(),而是在onAttach()中将Context对象强转为Activity对象。...解释如下: onAttach():Fragment和Activity相关联时调用。可以通过该方法获取Activity引用,还可以通过getArguments()获取参数。...并在Fragment合适的地方调用mListener.onItemClick("hello")将”hello”从Fragment传递给Activity。...FABridge 由于通过接口的方式从Fragment向Activity进行数据传递比较麻烦,需要在Fragment中定义interface,并让Activity实现该interface,FABridge...Activity向Fragment传递数据 Activity向Fragment传递数据比较简单,获取Fragment对象,并调用Fragment的方法即可,比如要将一个字符串传递给Fragment,则在

    4.9K122

    Android必知必会的四大组件--Activity

    生命周期&方法解释 这儿重点要知道的是下面这两对各自之间的区别。...Activity的启动过程:由AMS对栈内的Activity状态进行同步管理 & 规定:新Activity启动前,栈顶的Activity必须先onPause(),才能启动新的Activity(执行onResume...应用场景:有一个专用主页面作为基础的app,这样的app现在市面上也非常普遍存在,就比如一个Activity中嵌入ViewPager+BottomNavigationBar制作成的一个主页面一样,ViewPager...举个例子来说,就像是从Activity A一个新闻列表中选取了一条新闻,那这个时候就需要跳转进入Activity B,而查询新闻的方式我们就假设是他的id那这个时候,就需要将这个id从Activity...另一种泄漏问题就可能会引起Activity的泄漏了,就是内部存在未运行完子线程,导致Activity不能被及时清理掉。

    74530

    Android优化指南

    在Activity中使用非静态的内部类,并开启一个长时间运行的线程,因为内部类持有Activity的引用,会导致Activity本来可以被gc时却长期得不到回收 6.使用Handler处理消息前,Activity...声明handler为static类,这样内部类就不再持有外部类的引用了,就不会阻塞Activity的释放。...在Activity中尽量避免使用生命周期不受控制的非静态类型的内部类,可以使用静态类型的内部类加上弱引用的方式实现。 静态变量:不要直接或者间接引用Activity、Service等。...在从服务器获取到图片后,需要再在本地和内存中分别存一份,这样下次直接就可以从内存中直接获取了,这样就加快了显示的速度,提高了用户的体验。...ARGB保存,所以每个像素占用4个字节,很容易内存溢出 可以对图片的宽高和质量进行压缩 首先对图片进行缩放 获取屏幕宽高 //设置缩放比例 opts.inSampleSize

    1.4K70

    Android 自定义 ViewPager 打造千变万化的图片切换效果

    好,第二步,设计动画的梯度变化。 经过分析,我们总结出两个步骤,下面我们开始一步一步来打造~~~ 2、获取用户切换时当前View和切换至的目的View。...,然后滑动的时候,通过get(position)取出,比如上述效果,始终是右边的View变化,要么从小到大,要么从大到小 那么滑倒下一页:左边的View:map.get(position...0 : positionOffset; //获取左边的View mLeft = findViewFromObject(position); //获取右边的View mRight =...View,然后添加动画效果;当前这个例子添加了两个动画,一个是从0.5放大到1.0或者1.0缩小到0.5,没错由我们的positionOffset提供梯度的变化~~还有个平移的动画:下一页直接移动到当前屏幕...,最后附上一个我比较喜欢的效果:Tablet 最后,喜欢借此博客抛砖引玉~~大家对感兴趣的github上的代码,可以进行分析与自己尝试去实现,有时候会发现不是很难~你也可以做到~!

    53110

    Android面试题总结【完整详细版本”一”】(含答案)

    原因就是,其实Dialog是Activity的一个组件,此时Activity并不是不可见,而是被Dialog组件覆盖了其他的组件,此时我们无法对其他组件进行操作而已。...问题:onNewIntent()调用时机? singleTop:如果新Activity已经位于任务栈的栈顶,就不会重新创建,并回调 onNewIntent(intent) 方法。...HTTP协议是 基于TCP/IP通信协议来传输数据的,可以从服务器端获取图片等数据资源。...,当你再次访问前一个网络请求时,就可以直 接从代理服务器中获取,而不需要请求我们的web服务器】。...2)传输数据时,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份; 3)使用时,header里携带的内容过大,增加了传输成本

    1.1K20

    Android优化指南

    在Activity中使用非静态的内部类,并开启一个长时间运行的线程,因为内部类持有Activity的引用,会导致Activity本来可以被gc时却长期得不到回收 6.使用Handler处理消息前,Activity...声明handler为static类,这样内部类就不再持有外部类的引用了,就不会阻塞Activity的释放。...在Activity中尽量避免使用生命周期不受控制的非静态类型的内部类,可以使用静态类型的内部类加上弱引用的方式实现。 静态变量:不要直接或者间接引用Activity、Service等。...在从服务器获取到图片后,需要再在本地和内存中分别存一份,这样下次直接就可以从内存中直接获取了,这样就加快了显示的速度,提高了用户的体验。...ARGB保存,所以每个像素占用4个字节,很容易内存溢出 可以对图片的宽高和质量进行压缩 首先对图片进行缩放 获取屏幕宽高 //设置缩放比例 opts.inSampleSize =

    47220

    viewpager循环滚动和自动轮播的问题

    ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候会看到一个不能翻页的动画,可能影响用户体验。...此外,某些区域性的ViewPager(例如展示广告或者公告之类的ViewPager),可能需要自动轮播的效果,即用户在不用滑动的情况下就能够看到其他页面的信息。...         }     @Override public Object instantiateItem(ViewGroup container, int position) {   //对ViewPager...但是,简单的求模会出现问题:考虑用户向左滑的情形,则position可能会出现负值。所以我们需要对负值再处理一次,使其落在正确的区间内。...,主要是加载View和对ViewPager进行初始化设置。

    3.5K60
    领券