29
2020
04

Serializable 和 Parcelable 的区别

在使用内存的时候,Parcelable 类比 Serializable 性能高,所以推荐使用 Parcelable 类。Serializable 在序列化的时候会产生大量的临时变量,从而引起频繁的 GC。Parcelable 不能使用在要将数据存储在磁盘上的情况。尽管 Serializable 效率低点,但在这 种情况下,还是建议你用 Serializable 。
29
2020
04

Bitmap的处理

1.当使用ImageView的时候,可能图片的像素大于ImageView,此时就可以通过BitmapFactory.Option来对图片进行压缩,inSampleSize表示缩小2^(inSampleSize-1)倍。2.BitMap的缓存:1.同步加载只创建一个线程然后按照顺序进行图片加载2.异步加载使用线程池,让存在的加载任务都处于不同线程3.为了不开启过多的异步任务,只在列表静止的时候开启图片加载1.使用LruCache进行内存缓存。2.使用DiskLruCache进行硬盘缓存。3.实现一
29
2020
04

过度绘制、卡顿优化:

1.过度绘制:1.移除Window默认的Background:getWidow.setBackgroundDrawable(null);2.移除XML布局文件中非必需的Background3.减少布局嵌套(扁平化的一个体现,减少View数的深度,也就减少了View树的遍历时间,渲染的时候,前后期的工作,总是按View树结点来)4.在引入布局文件里面,最外层可以用merge替代LinearLayout,RelativeLayout,这样把子UI元素直接衔接在include位置5.工具:Hierar
29
2020
04

view绘制机制和加载过程,请详细说整个流程

1.ViewRootImpl会调用performTraversals(),其内部会调用performMeasure()、performLayout、performDraw()。2.performMeasure()会调用最外层的ViewGroup的measure()-->onMeasure(),ViewGroup的onMeasure()是抽象方法,但其提供了measureChildren(),这之中会遍历子View然后循环调用measureChild()这之中会用getChildMeasur
29
2020
04

Bitmap图像模式有哪几种,给出一张1080 * 1920的,ARGB 8888格式的占用内存是多大

Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位Bitmap.Config RGB_565:每个像素占四位,即R=5,G=6,B=5,没有透明度,那么一个像素点占5+6+5=16位Bitmap.Config ALPHA_8:每个像素占四位,只有透明度,没有颜色。ARGB:指的
29
2020
04

图片优化

对图片本身进行操作。尽量不要使用setImageBitmap、setImageResource、BitmapFactory.decodeResource来设置一张大图,因为这些方法在完成decode后, 最终都是通过java层的createBitmap来完成的,需要消耗更多内存.图片进行缩放的比例,SDK中建议其值是2的指数值,值越大会导致图片不清晰。不用的图片记得调用图片的recycle()方法
29
2020
04

Android UI适配

字体使用sp,使用dp,多使用match_parent,wrap_content,weight 图片资源,不同图片的的分辨率,放在相应的文件夹下可使用百分比代替。
29
2020
04

Android中的几种动画

帧动画:Drawable Animation,指通过指定每一帧的图片和播放时间,有序的进行播放而形成动画效果,比如想听的律动条。补间动画:View Animation(Tween Animation),指通过指定View的初始状态、变化时间、方式,通过一系列的算法去进行图形变换,从而形成动画效果,主要有Alpha、Scale、Translate、Rotate四种效果。注意:只是在视图层实现了动画效果,并没有真正改变View的属性,比如滑动列表,改变标题栏的透明度。属性动画:Property An
29
2020
04

HybridApp WebView和JS交互

Android与JS通过WebView互相调用方法,实际上是: Android去调用JS的代码通过WebView的loadUrl(),使用该方法比较简洁,方便。但是效率比较低,获取返回值比较困难。通过WebView的evaluateJavascript(),该方法效率高,但是4.4以上的版本才支持,4.4以下版本不支持。所以建议两者混合使用。 JS去调用Android的代码通过WebView的addJavascriptInterface()进行对象映射 ,该方法使用简单,仅将Android对象和
29
2020
04

解决ScrollView嵌套ListView和GridView冲突的方法

重写ListView的onMeasure方法,来自定义高度: 解决ScrollView嵌套ListView和GridView冲突的方法 重写ListView的onMeasure方法,来自定义高度:@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int expandSpec = MeasureSpec.makeMeasureSpec