LayoutTransition的四种状态动画:
APPEARING——出现的VIEW动画
DISAPPEARING——消失的VIEW动画
CHANGE_APPEARING——出现时位置改变的VIEW动画
CHANGE_DISAPPEARING——消失时位置改变的VIEW动画
前两个接受ObjectAnimator的动画
后两个接受ValueAnimator的动画
Canvas的clip第二个参数 Region.Op
DIFFERENCE——抛开裁剪区域的区域
REPLACE——裁剪区域
REVERSE_DIFFERENCE——是第二次不同于第一次的部分显示
INTERSECT——交集显示
UNION——全部显示
XOR——补集
使用自定义attires中format值
reference——引用,就是一切“@”开头的资源均为引用,在TypeArray中的getResourceId()方法来获取其id,通过Resources来获取具体的值
string——字符串
float——浮点数,如1.0
color——颜色,#FFFF0000
boolean——布尔值,true or false
enum——枚举,例如"<Activity>"标签中的"screenOrientation"属性,分为"portrait"和"landscape"等等
dimension——尺寸,后面有"dp"、"px"的均为尺寸
fraction——百分数,后面有"%"的均为fraction,例如"<translate>"标签中的"fromXDelta"属性
flag——位或运算,可以为十六进制也可以为整数等等,可以进行位运算,主要作用可以进行位运算来标识特性
integer——整数
ViewGroup与其中View的OnMeasure()与OnLayout()调用顺序
不管是OnMeasure()还是OnLayout()都是先调用View后调用ViewGroup
结论:先确定子View的大小与位置,再确定ViewGroup的大小与位置
从子View获得父ViewGroup和从父ViewGroup获得子View
1.如果从ViewGroup中获得其中的子View的话,常用的几种
getChildAt(int index)——index为索引,意为获取索引位置的View
findViewById(int id)——id为想要获取的View的ID,而View的ID是由继承的方法getId()来决定的
findViewWithTag(Object tag)——tag为想要获取的View的标签,一般来说标签为String,不过此方法不建议使用,因为String容易遗忘,也不容易操作
2.如果从子View获得其父ViewGroup的话,通过调用方法
getParent()——获得ViewParent对象,然后强制向上转型即可
OnMeasure(int widthMeasureSpec,int heightMeasureSpec)的两个参数含义
OnMeasure()这个函数经常被重写,主要是用来测量View的大小,现在来说下其中参数的作用:
1.可以通过MeasureSpec.getSize()获得从父ViewGroup中传递过来的实际宽(高)
2.可以通过MeasureSpec.getMode()获得测量模式
实现原理是位运算
其中测量模式分为这三种:
1.EXACTLY——表示父ViewGroup希望子View的精确值
2.AT_MOST——表示的大小最大为Size
3.UNSPECIFIED——表示父ViewGroup不限制子View的大小(到现在都没有用到过)
由于3没用到过,所以这里只说一下1和2.
1.如果在这个函数中给LayoutParams的宽和高都设置了具体值,那么在最后调用的父类OnMeasure()函数中要传递模式为EXACTLY的测量说明表示传递的是精确的值,如:
super.OnMeasure(MeasureSpec.makeMeasureSpec(width,MeasureSpec.EXACTLY),MeasureSpec.makeMeasureSpec(height,MeasureSpec.EXACTLY))
2.比如说你修改了LayoutParams的宽和高为WRAP_CONTENT的话,这里你就需要用
AT_MOST模式,例子如
super.OnMeasure(MeasureSpec.makeMeasureSpec(width,MeasureSpec.WRAP_CONTENT),MeasureSpec.makeMeasureSpec(height,MeasureSpec.WRAP_CONTENT))
ImageView对于图片的缩放
默认为保持比例放大图片,如果想使图片充满整个View的话,在xml下使用android:scaleType="fitXY",动态设置为setScaleType(ScaleType.FIT_XY)
WebView读取assets文件夹内的html文件
如果没有Assets文件夹的话,那么要创建一个assets文件.我用的是android studio,需要在src/main下创建一个assets文件夹,然后可以查看app.iml文件中,<option>标签内name为
ASSETS_FOLDER_RELATIVE_PATH的值是否为"/src/main/assets"
之后就可以在assets文件夹内创建html文件,WebView加载的URL为"file:///android_asset/xxx.html",其中“xxx.html”就是你创建的html文件