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

Android入门教程 | Fragment 基础概念

可能还想扩展几个子类,而非 Fragment 基类: DialogFragment 显示浮动对话框。...将作为扩展布局项的 ViewGroup。传递 container 对系统向扩展布局的根视图(由其所属的视图指定)应用布局参数具有重要意义。...如果要向同一容器添加多个片段,则添加片段的顺序将决定它们视图层次结构中出现的顺序。...Fragment 提供一个新的方式让你在不同的设备上统一你的 UI。 Fragment 解决 Activity 间的切换不流畅,轻量切换。...同时也可以该回调中将传入的Arguments提取并解析,在这里强烈推荐通过setArguments给Fragment传参数,因为应用被系统回收Fragment不会保存相关属性。

3.5K40

ApacheCN 译文集 20211225 更新

十四、对话框窗口 十五、数组、地图和随机数 十六、适配器和回收 十七、数据持久化和共享化 十八、本地化 十九、动画和插值 二十、绘制图形 二十一、线程和启动实时绘图应用 二十二、粒子系统和处理屏幕触摸...编程初学者手册 零、前言 一、和 Kotlin 入门 二、Kotlin、XML 和用户界面设计 三、探索 AndroidStudio 和项目结构 四、布局和材质设计入门 五、卡片视图和滚动视图的漂亮布局...十三、让小部件栩栩如生 十四、对话窗口 十五、处理数据和生成随机数 十六、适配器和回收 十七、数据持久化和共享 十八、本地化 十九、动画和插值 二十、绘制图形 二十一、线程和启动实时绘图应用...库 六、回收视图 七、权限和谷歌地图 八、服务、工作管理和通知 九、JUnit、Mockito 和 Espresso 的单元测试和集成测试 十、架构组件 十一、持久化数据 十二、ButterKnife...五、了解游戏循环和帧速率 六、提高 2D/3D 游戏的性能 七、使用着色 八、性能和内存优化 九、测试代码和调试 十、虚拟现实游戏中的应用范围 十一、使用 C++ 和 OpenGL 开发游戏

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

DialogFragment 使用

随屏幕旋转(横竖屏幕切换)DialogFragment对话框随之自动调整对话框大小。AlertDialog和PopupWindow随屏幕切换而消失,并且如果处理不当很可能引发异常。...DialogFragment宽高设置无效 DialogFragmentonCreate()和onCreateView()中设置布局大小无效,因为onCreate()和onCreateView()生命周期...= null) { window.setLayout(lp.width, lp.height); } } } DialogFragment消失操作 DialogFragment正常Dismiss并不会直接从当前的栈中移除...,而是DialogFragment中的onDestroyView()回调,才会对DialogFragment进行出栈操作,所以如果你如果需要在Activity中频繁的显示隐藏一个DialogFragment...,那么dismiss需要手动的调用dismissAllowingStateLoss()方法,并且再次show不能用上一个DialogFragment实例。

1.6K10

浅谈移动端 View 的显示过程 顶

从上图中我们可以看出,每隔 16ms ,会发出一个 VSync 信号,收到信号 CPU 开始处理下一帧的的内容,GPU CPU 处理结束之后,将会进行光栅化,此时屏幕上显示的是上一帧已经处理完成的页面...specMode 有三种类型: 1.UNSPECIFIED 视图对子视图没有任何限制,可以将视图按照开发者的意愿设置成任意的大小一般开发过程中不会用到。... onMeasure() 方法中: ? 调用 getDefaultSize() 方法来获取视图大小: ?...进入该方法,我们可以发现里面是空的,这是因为子视图的具体位置是相对于视图而言的,所以 View 的 onLayout 为空实现。 ?...需要注意的是,View 的 onDraw() 方法是空的,这是因为每个视图的内容都不相同,这个部分交由子类根据自身的需要来处理,才更加合理: ? 渲染机制的整体流程 ?

60020

Android技能树 — Fragment总体小结

正文: 1.Fragment的添加 我们知道Fragment是一个"碎片(或者片段)",添加在Activity中。如果我现在问你,Activity要显示一个按钮Button,你会怎么做? 1....2.1 FragmentManager相关 1. getFragmentManager(): 获取Fragment容器的管理,但是现在该方法Activity中已经被标记不推荐使用了。...所以我们比如一些对象可以保持fragment中,这时候Activity重新恢复,其他对象可以从fragment中找回。...,会重新构建它所管理的Fragment,原先的Fragment的字段值将会全部丢失(因为当切换横竖屏,Fragment会调用自己的无参构造函数,那么构造函数传参就会失效),但是通过 Fragment.setArguments...其实这个本来也想多写点,但是我估计这个基本开发都使用过,所以就直接用网上其他作者的基础介绍文章: Android 必知必会 - DialogFragment 使用总结 同时具体的自定义DialogFragment

19810

Android技能树 — Fragment总体小结

我们知道Fragment是一个"碎片(或者片段)",添加在Activity中。如果我现在问你,Activity要显示一个按钮Button,你会怎么做? 1....2.1 FragmentManager相关 1. getFragmentManager(): 获取Fragment容器的管理,但是现在该方法Activity中已经被标记不推荐使用了。...所以我们比如一些对象可以保持fragment中,这时候Activity重新恢复,其他对象可以从fragment中找回。...,会重新构建它所管理的Fragment,原先的Fragment的字段值将会全部丢失(因为当切换横竖屏,Fragment会调用自己的无参构造函数,那么构造函数传参就会失效),但是通过 Fragment.setArguments...其实这个本来也想多写点,但是我估计这个基本开发都使用过,所以就直接用网上其他作者的基础介绍文章: Android 必知必会 - DialogFragment 使用总结 同时具体的自定义DialogFragment

1.1K20

扒一扒渲染原理

导语: 测试流畅度的过程中,必不可免的要与FPS,Jank等指标接触,但为了加深理解,今天来简单扒一扒的渲染原理; PerfDog使用Jank作为来代表游戏流畅度的指标,详情可以看 APP&游戏需要关注...二.Android系统绘图机制 现在的终端通常在一个典型显示系统中首先由CPU发出图像绘制指令要让GPU去画一个样式,但CPU不能直接和GPU通信,也要遵守相应的规则,就和现在我们干什么事都要走个流程一样的嘛...View)元素,这些元素是以树形结构来组织,最终构成所谓视图树的结构; 绘制一个Android应用程序窗口的UI之前,要确定它里面的各个子View元素元素里面的大小以及位置。...确定各个子View元素View元素里面的大小以及位置的过程又称为测量过程和布局过程。...(高、宽) 布局——递归(深度优先)确定所有视图的位置 绘制——画布canvas上绘制应用程序窗口所有的视图 经过多次绘制,这一帧内要显示的所有view都已经被绘制完毕,注意绘制View层次结构这些操作是图形缓冲区中绘制完成的

98710

浅谈移动端 View 的显示过程

作者:个推开发工程师 一七 随着科技的发展,各种移动端早已成为人们日常生活中不可或缺的部分,人们使用移动端产品工作、社交、娱乐……移动端界面的流畅性已经成为影响用户体验的重要因素之一。...[d30bbcae6d7d9055d5f82d8e9856f619.jpg] 从上图中我们可以看出,每隔 16ms ,会发出一个 VSync 信号,收到信号 CPU 开始处理下一帧的的内容,GPU...第一个 Display 中,由于 GPU 处理 B 画面的时间过长,导致系统发出 VSync 信号, Display不能及时地显示出 B 画面,而重复显示A页面,造成卡顿。...specMode 有三种类型: 1.UNSPECIFIED 视图对子视图没有任何限制,可以将视图按照开发者的意愿设置成任意的大小一般开发过程中不会用到。...进入该方法,我们可以发现里面是空的,这是因为子视图的具体位置是相对于视图而言的,所以 View 的 onLayout 为空实现。

61920

Android性能测试——发现和定位内存泄露和卡顿

一般流畅度测试,关注图片处理每秒刷新的帧数(FPS),他用来指示页面是否平滑的渲染。高的帧率可以得到更流畅,更逼真的动画,不过帧率达到60fps以上,人眼主观感受到的差别就不大了。...b、打开开发者选项勾选”GPU呈现模式分析”选择“屏幕上显示为条形图”这样可以直观的看出每个时间点的帧数大小。如下图: ?   ...蓝色代表测量绘制的时间,或者说它代表需要多长时间去创建和更新你的DisplayList.Android中,当你看到蓝色的线很高的时候,有可能是因为你的一堆视图突然变得无效了(即需要重新绘制),或者你的几个自定义视图的...Process 对应于红色线:是消耗Android的2D渲染执行显示列表的时间。你的视图层次越多,要执行的绘图命令就越多。   ...2、FPS Meter测试帧数   FPSMeter是一款非常实用的小软件,能够用数字实时显示界面的每秒帧数,非常直观。此外,FPS Meter还可以显示最大帧数、最小帧数以及平均帧数。

2.5K20

2021 最新 IntelliJ IDEA 详细配置步骤演示(图文版)

在这种情况下,代码片段(例如通常以红色突出显示的错误或通常为绿色的字符串)将改变颜色(红色将变为橙色,绿色将变为蓝色)。测试运行中进度条的颜色也将进行调整,以便可以轻松识别。 3....UI Options(界面设置) 用户界面选项 Show tree indent guides(显示树状缩进级别的垂直线) 树状视图中(例如在“项目”工具窗口中)显示标记缩进级别的垂直线。...Presetation Mode(演示模式) 选择演示模式的字体大小。更改字体大小,退出并进入演示模式。 2....Data Sharing(数据共享) 选中这个发送使用情况统计信息复选框,将会允许JetBrains收集你使用IntelliJ IDEA最常使用的功能和操作的统计信息。 4....Android SDK 配置sdk 4. File Colors(文件颜色) 使用此页面可以设置不同的背景颜色,以区分特定范围的项目文件。 \1.

74310

第八夜 玛丽莲梦露

我们经常会根据数据的数量,动态的调整显示条目的个数。譬如一个社交应用显示好友信息。当好友数目增加或减少时,需要动态的增加或减少显示好友条目。...事件发生将调用的该方法。我们用setOnClickListener的方法,让MainActivity同时监听两个按钮的点击事件。当事件触发调用onClick()方法。...提供了ArrayAdapter类,可以综合以上功能。它可以为每个数据元素赋予相同的视图格式。将ListView与ArrayAdapter绑定就可以动态的调整条目了。 ?...会重复利用消失条目的视图树,以节省重新建立条目视图所需要的时间。convertView中就包含了这样一个重复利用的条目视图。如果没有可以重复利用的条目视图,那么该参数就为null。...创建对象,我把上面的条目布局,即R.layout.list_category作为参数传给构造: package me.vamei.vamei; import java.util.ArrayList

60310

折叠屏丨华为专家深度解读折叠屏连续性和拖拽适配介绍

1)页面不重启,动态调整布局: 这种方式适用于需要调整显示内容较少的场景,通过onConfigurationChanged方法中通过代码动态调整UI来适配;重新初始化View,将View和数据重新绑定...问题2:折叠展开页面跳转 应用适配过程中,遇到过折叠、展开页面消失,显示了应用主页面或其他页面的情况。经过分析发现这是由于应用在重启过程中触发了页面保护机制造成的。...问题3:折叠展开或者分屏显示异常 当应用设置了页面不重启,但是onConfigurationChanged方法中没有动态调整布局,会导致折叠展开或者分屏显示异常,这时应用的窗口宽度发生变化。...华为技术专家建议大家可以采用远程真机、模拟以及屏幕规格模拟这三种方式进行调测。 1)远程真机 远程真机是华为部署云测平台的真机,可以远程接入想调测的机型,直观了解应用在真机上的运行表现。...2)模拟 从Android Studio 3.5Canary版本开始,开发者可创建一个运行Q Beta 2版本的折叠屏虚拟设备,其支持的硬件配置分别为7.3英寸(折叠后为4.6英寸),以及8英寸(

1K20

第八夜 玛丽莲梦露

我们经常会根据数据的数量,动态的调整显示条目的个数。譬如一个社交应用显示好友信息。当好友数目增加或减少时,需要动态的增加或减少显示好友条目。...事件发生将调用的该方法。我们用setOnClickListener的方法,让MainActivity同时监听两个按钮的点击事件。当事件触发调用onClick()方法。...提供了ArrayAdapter类,可以综合以上功能。它可以为每个数据元素赋予相同的视图格式。将ListView与ArrayAdapter绑定就可以动态的调整条目了。 ?...会重复利用消失条目的视图树,以节省重新建立条目视图所需要的时间。convertView中就包含了这样一个重复利用的条目视图。如果没有可以重复利用的条目视图,那么该参数就为null。...创建对象,我把上面的条目布局,即R.layout.list_category作为参数传给构造: package me.vamei.vamei; import java.util.ArrayList

1.9K90

2019 Android 高级面试题总结 从java语言到AIDL使用与原理

因为可以说,应用的整个生命周期就是运行在这个消息循环中的,是由事件驱动的,Looper.loop不断的接收处理事件,每一个点击触摸或者Activity每一个生命周期都是Looper.loop的控制之下的...利用这种特性,即使是上千张的图片,也只会仅仅只需要占用屏幕所能够显示的图片数量的内存大小,但复用存在一些限制,具体体现在:Android 4.4之前只能重用相同大小的Bitmap的内存,而Android...冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示界面上。...,但其实只是一种表象,让应用启动的更快,有一种思路,将 Application 中的不必要的初始化动作实现懒加载,比如,SpashActivity 显示再发送消息到 Application,去初始化...方式二:使TreeSet集合自身具有比较功能,定义一个比较Comparator,将该类对象作为参数传递给TreeSet集合的构造函数 说下AIDL的使用与原理 aidl是中的一种进程间通信方式 说下你对广播的理解

81120

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

UI线程外处理位图(Processing Bitmaps Off the UI Thread) 位图处理(调整大小,从远程资源下载等)不应该占用主UI线程。...为了有效的利用内存,这些组件滚动时会回收重用它们的子视图控件。如果每个子控件都在AsyncTask中引发,那么当任务完成就无法得到保证,导致被关联到的视图还没有被回收,就使用在其他子视图中了。...有些组件 通过回收移除屏幕的子视图的方式 可以保持较少的内存使用 。加入你没有或者更长久的活动引用,垃圾回收将会释放你加载的图片。...LruCache 类(Support Library 支持可 API 4 中)很适合 缓存图像的任务,它以LinkedHashMap 中的强引用方式 保持最近被引用的对象和 缓存数量超过指定的数量移除最近最少使用的成员...activity被重新创建,这个重新创建的(保留的)的 Fragment 被重新附加,这样你重新通过它获得到缓存对象,允许图像被快速提取和重新填充到 ImageView 对象。

2.9K00

《QQ音乐小电台》小程序开发

前端异常上报,当小程序发生脚本错误,或者 api 调用失败,会触发 onError 并返回错误信息,获取设备信息,方便后期定位问题 音乐播放控制bug&fix 下,暂停不能继续播放的问题 原因是暂停再播放...IOS、播放暂停切歌 IOS,机下播放过程中先暂停在切换歌曲,发现播放的歌曲为原先的歌曲。...参数说明: Page object 参数说明: 一个page的生命周期从onLoad开始,整个生命周期内onLoad、onReady、onUnload这三个事件仅执行一次,而onHide和onShow每次页面隐藏和显示都会触发...5、列表渲染 wx:key 当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染的效率。...当用户离开小程序,音乐将暂停播放;当用户点击“显示聊天顶部”,音乐不会暂停播放;当用户在其他小程序占用了音乐播放,原有小程序内的音乐将停止播放。

4.6K10

一个漏洞为何能影响数千万服务以及66%手机?

目前有超过66%的手机和1000万Linux PC和服务都受到这项内存泄露漏洞的影响。 漏洞介绍 Perception Point研究团队发现了一个Linux内核的本地提权漏洞。...这个漏洞会影响到数以千万计的Linux 个人计算机和服务,以及大约66%的设备(包括手机和平板)。...从用户空间触发这个漏洞是非常简单的,正如下面代码片段所示,这里导致了100个keyring泄露引用: 下面的输出显示leaked-keyring已经有100个引用。...一种是使用一个进程来是keyring usage字段溢出到0,通过密钥环子系统的垃圾回收算法,将对象释放,因为一旦密钥环子系统释放对象之后,usage字段的计数就会归零。...SMEP(监督模式执行保护)&SMAP、SELinux会对这个漏洞设备上面的利用制造一定困难。或许我们后面可以讨论一下如何绕过这些缓解措施,不过当下最重要的还是请尽快打补丁!

1.1K50

你不知道的Mac屏幕显示图像

当电子枪换到新的一行,准备进行扫描显示会发出一个水平同步信号(horizonal synchronization),简称 HSync;而当一帧画面绘制完成,电子枪回复到原位,准备画下一帧前,显示会发出一个垂直同步信号...而设备直到 4.1 版本,Google 才开始引入这种机制,目前系统是三缓存+垂直同步。...对此你应用中,应该尽量减少不必要的属性修改。 当视图层次调整,UIView、CALayer 之间会出现很多方法调用与通知,所以优化性能,应该尽量避免调整视图层次、添加和移除视图。...尽管这实现起来非常麻烦,但其带来的优势也非常大,CoreText 对象创建好,能直接获取文本的宽高等信息,避免了多次计算(调整 UILabel 大小时算一遍、UILabel 绘制内部再算一遍);CoreText...所以,尽量不要让图片和视图大小超过这个值。 视图的混合 (Composing) 当多个视图(或者说 CALayer)重叠在一起显示,GPU 会首先把他们混合到一起。

2K70

AutoJs6 – v6.2.0 – JavaScript 自动化工具 (Auto.js 二次开发)

#7 修复 高版本系统可能出现部分页面与通知栏区域重叠的问题 修复 10 及以上系统无法正常运行有关设置画笔颜色的示例代码的问题 修复 示例代码 “ 音乐管理 ” 更正文件名为 “ 文件管理...Root 权限修改主页抽屉权限开关失败未继续弹出 ADB 工具对话框的问题 修复 Root 权限显示指针位置初次使用时提示无权限的问题 修复 图标选择页面的图标元素排版异常 修复 文本编辑启动可能因夜间模式设置导致闪屏的问题...(试修) 修复 文本编辑设置字体大小时可用最大值受限的问题 修复 部分系统脚本运行结束时日志中无法统计运行时长的问题 修复 使用悬浮窗菜单关闭悬浮窗重启应用时悬浮窗依然开启的问题 修复...布局层次分析时长按列表项可能导致弹出菜单溢出下方屏幕的问题 修复 7.x 系统夜间模式关闭导航栏按钮难以辨识的问题 修复 http.post 等方法可能出现的请求未关闭异常 修复 colors.toString...优化 禁用文档页面双指缩放功能避免文档内容显示异常 优化 任务面板列表项按相对路径简化显示任务的名称及路径 优化 文本编辑按钮文本适当缩写避免文本内容溢出 优化 文本编辑设置字体大小支持恢复默认值

4.3K20
领券