失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 《Android群英传》读书笔记

《Android群英传》读书笔记

时间:2021-12-28 21:36:42

相关推荐

《Android群英传》读书笔记

1.Android5.0之后,ART模式取代dalvik,ART采用的是安装时编译,而不是运行时编译。

2.Activity、Service、Application都是继承自Context。

3.getApplicationContext()方法可以获取整个APP的Context,但是通过getApplicationContext()获得的是整个应用的上下文引用,这个与某个组件的上下文引用有的时候是不一样 的。

4.ADB命令 push 和install 都可以安装apk但是安装的目录不一样,Install安装在data/data目录下,而push则是安装在手机的存储系统中。

5 View的测量是在onMeasure()方法中进行的。

6.View的测量模式有三种分别是EXACTLY、AT_MOST、UNSPECIFIED.;

EXATTLY 是精确值模式,如:100dp,match_parent;

AT_MOST是最大值模式,如:控件宽高都是自适应的,不超过父控件的最大尺寸就好了;

UNSPECIFIED是不指定器大小测量的模式。通常自定义View时使用。

7.View的onMeasure()方法默认只支持EXACTLY模式,所以自定义View大小为自适应时需要重写该方法。

8.在自定义ViewGroup时,需要重写onLayout()方法,来控制其子View显示的位置,大小也是通过onMeasure()方法来实现。

9.自定义View一些重要的回调方法:

onFinishInflate():从xml加载组件后回调;

onSizeChange():组件大小改变时回调;

onMeasure90:回调该方法进行测量;

onLayout():回调该方法确定显示的位置;

onTouchEvent():监听到触摸事件的回调。

10.super.onDraw()来实现原生控件的功能,但是在调用该方法之前和之后,我们都可以实现自己的逻辑,分别是在系统执行功能前后实现自己的操作!

11.强制刷新View的方法:

invalidate() UI线程更新视图

postInvalidate():在新线程中更新视图

12.ViewHolder模式充分利用ListView的师徒缓存机制,避免了每次在调用getView()时候都去通过findBiewByid()来实例化控件。

13.ListView设置分割线属性:

android:divider="@android:color/darker_gray"

android:dividerHeight="10dp"

设置分割线透明android:divider="@null"

设置滚动条不出现 android:scrollbars="none"

设置Listview的点击效果可以修改listSelector来修改。

14.ListView.setSelection(N);N表示需要显示的第N个item,该方法是瞬间完成的,还可以用mListView.smoothSrcllBy(distance,duration);

mListView.smoothScrollByOffset(offset);mListView.smoothScrollToPosition(index);

15.ListView提供setEmptyView方法来处理空数据,显示无数据时的界面。

16,。在Android中将屏幕的左上角的顶点作为Android坐标系的原点。从这个点向右叫做x轴正方向,向下叫y轴的正方向。(注意与视图坐标系的区别)。

17.获取坐标的不同方法:

View 提供的:

getTop():获取到View自身的顶边对其父控件顶边的距离;

getLeft():获取到View自身的左边对其父控件左边的距离;

getRight():获取到View的自身的右边对其父控件左边的距离;

getBottom():获取到View的自身的底边对其父控件顶边的距离。

MotionEvent提供的方法:

getX():获取点击事件距离控件左边的距离,即:视图坐标;

getY():获取点击事件距离控件顶边的距离,即:视图坐标;

getRawX():获取点击事件距离整个屏幕左边的距离;即:绝对坐标;

getRawY():获取点击事件距离整个屏幕顶边的距离;即:绝对坐标。

18.offsetLeftAndRight(offsetX)同时对left和right进行偏移;

offsetTopAndBottom(offsetY)同时对Top和Bottom进行偏移。

19.LayoutParams是一个View布局参数。getLayOutParas必须要有一个父布局,不然系统无法取得LayoutParas,所以,需要用 LinearLayout.LayoutParas 或者是RelativeLayout.LayoutParas = View.getLayoutParas();

20.scrollTo 是移动要具体的某一点,scrollBy是移动某一个增量。如果直接scrollTo,无法直接移动View,移动的是View的content,如TextView移动的是文本,ImageView移动的是drawable对象。需要用((View)getParent).scrollTo(offsetX,offsetY);想要移动到具体某一点需要改为((View)getParent).scrollTo(-offsetX,-offsetY)

21.Scroller类可以实现平滑移动的效果,而不是瞬间完成的移动,与scrollTo和scrollBy不同。模拟滑动需要重写Scroller类中的computeScroll()方法;

之后调用startScroll()方法。

22.系统通过提供Canvas对象提供回话方法,各种方法如下:

drawPoint(点),drawLine(线),drawRect(矩形),drawVertices(多边形),drawArc(弧),drawCircle(圆)等。

23.XML绘图:

shape 属性有Corner(半径),gradient(渐变),padding(边距),size(大小),solid(填充颜色),stroke(指定边框)

Layer 图层,通过layer、layer-list实现的图层效果,图片会一次叠加。

Selector 背景选择器

可以多个结合一起使用!

24.Layer图层

通过mCanvas中的saveLayer()、saveLayerAlpha()方法将一个图层入栈,使用restore()、restoreToCount()方法讲图层出栈,入栈的时候,后面的 所有操作都发生在这个图层上面,而出栈的时候则会把图像绘制到上层的Canvas上。

25.Android动画分为属性动画和师徒动画

视图动画有透明度动画、旋转动画、位移动画、缩放动画等。

属性动画和视图动画的区别在于:视图动画并不改变事件相应的位置,只是单纯的修改了显示。并不支持点击。

26.启动模式

singleTop和singleTask的区别:singleTop是检测栈顶元素是否是需要启动的Activity,而singleTask是检测整个Activity栈中是否存在当前需要启动的 Activity,如果存在,就将该Activity置于栈顶并将Activity以上的Activity销毁,并开辟新的任务栈。

27.Android性能优化可分为布局优化和内存优化

1.布局优化时可以使用ViewStub控件延迟显示。一旦ViewStub被显示或者是inflate之后就消失了,故无法操作两次的显示。其中,ViewStub和 View.GONE不一样的地方是View.GONE钢价在布局时就已经添加到布局树上,而ViewStub是在显示时才渲染布局的。所以,ViewStub更加高效。

2. 内存优化

Bitmap优化:

1.使用适当分辨率和大小的图片;

2.及时回收内存

3.使用图片缓存,通过内存缓存(LruCache)和硬盘缓存(DiskLruCache)可以更好的使用BItmap.

3.代码优化

如果觉得《《Android群英传》读书笔记》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。