Android应用开发:Fragment的非中断保存setRetaineInstance 引言 首先,要明确什么叫“非中断保存”。...熟悉Fragment的开发人员都知道,Fragment是依附于Activity的。当Activity销毁时,Fragment会随之销毁。...而当Activity配置发生改变(如屏幕旋转)时候,旧的Activity会被销毁,然后重新生成一个新屏幕旋转状态下的Activity,自然而然的Fragment也会随之销毁后重新生成,而新生成的Fragment...生命周期 Activity的生命周期在配置发生改变时: onPuase->onStop->onDestroy->onStart->onResume 比如在Activity中发生屏幕旋转,其生命周期就是如此...需要注意的是,要使用这种操作的Fragment不能加入backstack后退栈中。并且,被保存的Fragment实例不会保持太久,若长时间没有容器承载它,也会被系统回收掉的。
最近在使用 canvas 画图的时候,遇到了图像文字模糊的问题,解决思路就是根据分辨率绘制不同尺寸的画布。...以下是创建高分辨率画布的代码: /** * 创建高分辨率画布 * @param w 画布宽 * @param h 画布高 * @param ratio 屏幕分辨率 */ function...不创建高分辨率画布 const canvas = document.createElement("canvas"); canvas.width = 100; canvas.height = 100; // 创建使用默认分辨率的画布...const myCanvas = this.createHiDPICanvas(100, 100); // 创建分辨率为 3 的画布 const myCustomCanvas = this.createHiDPICanvas...(100, 100, 3); 最后,贴一个高分辨率画布的开源库 https://github.com/jondavidjohn/hidpi-canvas-polyfill
:PhotoView:2.3.0和com.bm.photoview:library:1.4.1,从使用对比的效果来说,个人更倾向于com.bm.photoview,这个除了有上面的那个的功能外,还可以加入图像的旋转...我们在加载图像存放在PhotoView中用到了Glide这个开源库,在《学习|Android播放网络视频综合运用》中也简单介绍了一下,正好这篇中我们再加上一个glide-transformations的组件...,这个是在Glide的基础可以对图像进行一次处理,如:模糊处理、灰度处理、圆角处理等。...微卡智享 要使用两个PhotoView及Glide和相关的transformations时,我们要在项目的build.gradle中加入对应的依赖项。...) 从上面我们可以看出,要使用glide-tranformations的话主要是把我们的效果放入到apply里面即可。
第三步变换图片:比如需要裁剪,切割圆角,旋转,添加高斯模糊等属性。...glide设置显示的时候可以添加动画效果02.图片内存计算方式2.1 如何计算占用内存如果图片要显示下Android设备上,ImageView最终是要加载Bitmap对象的,就要考虑单个Bitmap对象的内存占用了...给 LruCache 确定一个合适的缓存大小非常重要,我们需要考虑几个因素:应用剩余多少可用内存?需要有多少张图片同时显示到屏幕上?有多少图片需要准备好以便马上显示到屏幕?设备的屏幕大小和密度是多少?...解决这个问题很自然想到的两步走,首先是要自动识别图像方向,计算旋转角度,然后对图像进行旋转并显示。...这些Metadata信息总的来说大致分为三类:日期时间、空间信息(经纬度、高度)、Camera信息(孔径、焦距、旋转角、曝光量等等)。关于图像旋转获取了图片的旋转方向后,然后再设置图像旋转。
第三步变换图片:比如需要裁剪,切割圆角,旋转,添加高斯模糊等属性。...glide设置显示的时候可以添加动画效果02.图片内存计算方式2.1 如何计算占用内存如果图片要显示下Android设备上,ImageView最终是要加载Bitmap对象的,就要考虑单个Bitmap对象的内存占用了...给 LruCache 确定一个合适的缓存大小非常重要,我们需要考虑几个因素:应用剩余多少可用内存?需要有多少张图片同时显示到屏幕上?有多少图片需要准备好以便马上显示到屏幕?设备的屏幕大小和密度是多少?...解决这个问题很自然想到的两步走,首先是要自动识别图像方向,计算旋转角度,然后对图像进行旋转并显示。...7.4 如何处理图片旋转:解决这个问题很自然想到的两步走,首先是要自动识别图像方向,计算旋转角度,然后对图像进行旋转并显示。
在这篇文章中,笔者将讲解一张看似普通的Bitmap对内存的占用,介绍Android Studio中帮助我们分析图片占用内存的工具,举例说明流行的两大图片加载框架:Glide、Picasso在加载图片时使用内存的不同方式...方式一:通过Android Studio直接查看 如果dump文件来源自Android版本为7.1.1(Android N,API=25)及以下的设备,可以使用这种方法。...Glide Glide则采用截然不同的处理方式,它最终使用的宽高是目标ImageView的宽高。...答案是有的,基于两步简单的推导: 图片所在资源目录、设备密度两者决定图片最终显示在屏幕上的像素尺寸; 像素尺寸、图片质量共同决定分配内存。 其中第2点已经在上文讲解过,这里主要分析第1点。...可以在初始化Glide时进行这样的配置。需要留意的是不要对含透明区域的图片采用这种优化方案。
在这里你将获得 android Glide 教程的入门介绍 Glide是一个安卓库,允许我们通过单行代码从互联网或网址获取图像。在我之前的一篇教程中,我向您展示了毕加索图像库的用法。...Glide是毕加索图书馆的一个很好的选择。大多数功能在两者中都很常见。 Glide是谷歌推荐的流行的Android图像库,甚至Google也在各种应用程序中使用它。以下是此库的一些功能。...Glide胜过 Picasso 的最大优势之一是Glide支持GIF。 ---- Android Glide教程 让我们快速跳转到实际的教程部分。 如何使用Glide获取图像?...您还可以添加异常处理,以防在获取图像时发生任何错误。...- Android Glide示例 让我们做一个简单的Android应用程序,显示Glide图像库的用法。
谷歌曾于2017年夏季,推出了Android版Motion Stills(动图制作软件),为大量Android设备提供出色的视频捕捉和观看体验。...用户触摸屏幕时,Motion Stills会将虚拟3D对象“粘贴”到相应位置,使其看起来像是真实场景的一部分。...通过假定追踪设备与地平面平行,并根据设备中加速度计传感器提供的,该设备相对地平面的初始定向,可以为摄像头提供6DoF追踪(3个平移DoF,3个旋转DoF),准确地改变和渲染真实场景中的虚拟3D对象。...对平面而言,重力矢量将平行于跟踪平面的法线,并可精确地提供该设备的初始定向。而即时运动追踪的核心是,将摄像头的平移估计和旋转估计分离,将其视作独立的优化问题。 ?...谷歌最后表示:“Motion Stills系统可单独处理平移和旋转,所以我们的实时运动追踪不需要经过校准,可在任何带有陀螺仪的Android设备上运行。”
CAShapeLayer) Animation形式的xml文件 UI布局的xml文件 => storyboard file Java的POJO类 => Swift 外部的库Glide的转换 正在开发中的功能...image TextView的屏幕截图: ? image 使用普通键盘的EditText的屏幕截图: ? image 带电话拨号键盘的EditText的屏幕截图: ?...mipmap目录的图片资源:Android工程的mdpi,hdpi,xhdpi和xxhdpi的图像资源被映射到iOS工程的1x,2x和3x图像资源路径里面。...Vector图片形式的xml被转换成Storyboard上能够使用的.pdf文件。...---- 以下是使用截图: Android和iOS设备的显示了各种资产的使用情况的屏幕截图: ? image ---- Android Studio布局编辑器: ?
在图形上,就相当于产生"模糊"效果,"中间点"失去细节。 为了得到不同的模糊效果,高斯模糊引入了权重的概念。上面分别是原图、模糊半径3像素、模糊半径10像素的效果。模糊半径越大,图像就越模糊。...接下来的问题就是,既然每个点都要取周边像素的平均值,那么应该如何分配权重呢?如果使用简单平均,显然不是很合理,因为图像都是连续的,越靠近的点关系越密切,越远离的点关系越疏远。...LruCache 缓存 最后我们还可以再做一些优化,数据没有改变时不去刷新数据,还有就是采用 LruCache 缓存,相同的高斯模糊图像直接从缓存获取。...是根据每个 App 的内存情况,以及不同手机设备的版本和分辨率,计算出一个比较合理的初始值。...最后总结 工具的使用其实并不难,相信我们在网上找几篇文章实践实践,就能很熟练找到其原因。难度还在于我们需要了解 Android 的底层源码,第三方开源库的原理实现。
我们想要实现的是,当设备在横向和纵向之间移动时,相机界面可以适当地旋转。 △ 本例中的相机界面 MotionLayout 旋转动画 我们可以使用 MotionLayout 实现这一功能。...在本例中,我们可以改变设备姿态来测试旋转屏幕效果。在下图中可以看到,随着我向一侧旋转设备,模拟器的界面也在更新,从而与传感器保持同步旋转。...△ 示例界面 Android 12L 新增了设备类的概念,其首要任务便是处理不同类型的大屏幕设备间的视图兼容性问题。Android Studio 的图形编辑器提供了许多参考设备。...△ 实时更新的模糊状态 上面的示例顺带试用了 Android 12 中的模糊处理。我们在布局预览和设计预览时均支持模糊效果。 这是一个很激动人心的功能。...我们正在优化 Android Studio 中的各项功能,以便在您处于轻量模式时适当地帮您减少工作量。例如,布局编辑器将执行开销较小的图像缩放和抗锯齿等任务。
3、屏幕分辨率 屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点,比如我们经常说的宽高像素为:4896*6528。 上面三个概念模糊吗?...这里也有个有意思的现象,在Android4.4到Android 8.0以下的机器,当你把这个图片放在不同的文件夹下面时,图片占据的内存是不一样的,那是因为图片内存的加载,是在Java 堆栈,所以你可能会遇到...3、网络图片加载内存占用现象 (1) Glide加载图片的方法 glide加载图片资源的方式有两个: 无回调,使用如下方式加载 Glide.with(context) .load(url...这个表示: 当你的资源原始尺寸大于width * height(屏幕宽、高像素)时,以width * height为准。 当你的资源原始尺寸小于width * height时,以原始尺寸为准。...网络加载框架Glide等,最好根据屏幕宽、高设置需要加载的图片宽、高,不要使用图片原始大小加载,否则容易出现崩溃。
在Presentation创建的时候关联一个目标设备,确定Presentation要显示在那个设备上,根据这个设备的信息来配置Presentation的context和resources信息。...使用流程 微卡智享 # 需要掌握的技能 1 通过DisplayManager获取Display个数,如果大于1就说明有多个屏幕,然后获取自己要定义的display 2 创建类继承自Presentation...,使用这个还是非常简单的,我的代码中使用了JzVideo的第三方框架,具体怎么用可以看《学习|Android播放网络视频综合运用》 布局文件 主界面中一个EditText,一个Button和一个TextView...import android.os.Bundle import android.view.Display import android.widget.Toast import com.bumptech.glide.Glide...小贴士:如果自己没法外接屏幕的话,手机可以打开开发者选项--绘图--模拟辅助显示设备,自己选一个大小的屏幕也可实现双屏的效果
'com.android.support:support-v4:22.0.0' } 当然现在v4包已经是android项目标配了 Glide的with方法不光接受Context,还接受...fitCenter即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围,该图像将会完全显示,但可能不会填满整个ImageView。...DiskCacheStrategy.RESULT 仅仅缓存最终的图像,即降低分辨率后的(或者是转换后的) DiskCacheStrategy.ALL 缓存所有版本的图像(默认行为) 8...一些基于Glide的优秀库 1.glide-transformations 一个基于Glide的transformation库,拥有裁剪,着色,模糊,滤镜等多种转换效果,赞的不行不行的~~ 2.GlidePalette...一个可以在Glide加载时很方便使用Palette的库。
或FIT_CENTER时可能就傻眼了。...这样图片就只会占据半个屏幕的宽度了,说明我们的代码奏效了。...为了让效果更加明显,这里我就不使用百度首页的Logo图了,而是换成必应首页的一张美图。在不应用任何图片变换的情况下,使用Glide加载必应这张图片效果如下所示。 ?...:2.0.2' } 现在如果我想对图片进行模糊化处理,那么就可以使用glide-transformations库中的BlurTransformation这个类,代码如下所示: Glide.with(this...而且我们还可以将多个图片变换效果组合在一起使用,比如同时执行模糊化和黑白化的变换: Glide.with(this) .load(url) .bitmapTransform(new
DraggableView - 具有旋转和倾斜/缩放效果的可拖动图像。...自定义圆形图片 - 将图片设置为圆形显示的组件。 glide - Glide 是一个针对 openharmony 的快速高效的图像加载库,专注于平滑滚动。...Glide 提供了易于使用的 API,高性能和可扩展的资源解码管道以及自动资源池。...Glide hmos testapplication +移植的代码项目 Glide 支持获取,解码和显示视频静止图像,图像和动画 GIF。...Glide 的主要重点是使任何种类的图像列表尽可能平滑和快速地滚动,但是 Glide 在几乎所有需要获取,调整大小和显示远程图像的情况下也很有效。
因为 Android 设备通常具有不同的尺寸、形状和屏幕像素密度,所以我更喜欢用与分辨率无关的矢量资源(vector assets)。但它们究竟是什么?有什么益处?需要什么成本?什么时候应该使用它们?...随着设备具有越来越高的屏幕密度,应用开发者对相同的资源必须不断创建、囊括、转换更多的版本。...这是位图与矢量图的基本权衡。矢量图提供上述好处,但代价是渲染更加昂贵。在 Android 早期, 设备性能差一点,屏幕密度差别不大。现在,Android 设备性能越来越好,屏幕密度却各不相同。...它们在编码摄影类型图像时非常糟糕,因为这种图像内容很难被描述为一系列形状的组合。位图格式(如 webp)此时会更有效率。这当然是一个范围,取决于你的资源的复杂度。...它是强大、成熟的建模工具,它同时也是一个强大的标准。它包括许多复杂的功能,如执行任意 javascript,模糊和滤镜效果或嵌入其他图像,甚至 GIF 动画。
ImageLoader:旨在为图像加载,缓存和显示提供强大,灵活可定制的工具。...他提供了大量的配置选项和良好的控制图像加载和缓存过程。...2.图片框架ImageLoader,Picasso,Fresco,Glide对比 ImageLoader 比较老的框架,稳定,加载速度适中,缺点在于不支持GIF图片加载,使用稍微繁琐,并且缓存机制没有和...并且默认使用ARGB_8888格式缓存图片,缓存体积大 Glide 支持GIF图片的加载,图片缓存也会自动缩放,默认使用RGB_565格式缓存图片,是Picasso缓存体积的一半 Fresco 优点:...2.渐进式加载JPEG图片,支持图片从模糊到清晰加载 3.图片可以以任意的中心店显示在ImageView,而不仅仅是图片的中心 4.JPEG图片改变大小也是在native进行的,不是在虚拟机的堆内存,同样减少
1、 内存缓存: Glide使用LruResourceCache来实现内存缓存,它会根据最近最少使用(LRU)算法来管理内存中的图片资源。 当内存不足时,会自动清除最久未使用的图片资源。...2、 磁盘缓存: Glide使用DiskLruCache来实现磁盘缓存,它会将图片资源存储在设备存储中。 磁盘缓存可以避免重复的网络请求,并且即使应用被关闭,图片资源仍然可以被保留。...解答: Glide使用请求队列来管理并发请求,确保以最佳顺序加载图片。 1、 请求队列: 当多个图片请求被触发时,Glide会将这些请求添加到一个队列中。...4、 生命周期管理: Glide会根据Activity或Fragment的生命周期自动暂停或恢复图片加载请求。 面试题目4:如何使用Glide实现渐进式图像加载?...3、 性能监控: 可以使用Android的Profiler工具监控Glide的内存使用和CPU占用。