android中XML的使用主要分以下几个大类
-
Animation
-
Animator
-
Drawable
-
Layout
-
Menu
-
Values
这些文件均在R中存在映射可以通过R.xxx.xxx得到映射值最后转换成我们所需的对象。
Animation
在res里建立文件夹anim用于存放所有Animation的XML资源
- 传统补间动画
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fillAfter="true"
android:fillBefore="false">
<alpha
android:fromAlpha="1"
android:toAlpha="0"></alpha>
<rotate
android:fromDegrees="0"
android:pivotX="25%"
android:pivotY="50%"
android:toDegrees="180"></rotate>
<scale
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="25%"
android:pivotY="50%"
android:toXScale="3"
android:toYScale="1"></scale>
<translate
android:fromXDelta="-500"
android:toXDelta="0"></translate>
</set>
可用set标签组合起来,让这些动画同时播放,也可以为单个动画指定标签,区分:前者可多动画同时进行并且可以通过android:fillAfter=“true”,android:fillBefore="false"设定动画结束停留在最后一帧率,停留第一帧值相反,后者无法设定。
注意:
pivotX,pivotY设定的是中心点,可填Integer,X%(自身宽高比例),X%p (父容器宽高比例)
取值范围:
scale : 0-1;
alpha :0-1 ;
rotate: Integer
translate : 同pivot
控件中应用
Animation animator = AnimationUtils.loadAnimation(MainActivity.this,R.anim.s);
btn.startAnimation(animator);
Activity中应用
overridePendingTransition(R.anim.anim_exit, R.anim.enter);
放在startActivity()后即可。
FragmentDialog中应用
参考这篇文章
使用FragmentDialog自定义底部弹出Dialog,动画无效的问题
layoutAnimation
用于listView,RecycleView控制不同的child按规定时间间隔分别播放动画
anim下建立la.xml文件
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="0.2"
android:animationOrder="normal"
android:animation="@anim/alpha">
</layoutAnimation>
- delay:指每个Item的动画开始延时,取值是android:animation所指定动画时长的倍数,取值类型可以是float类型,也可以是百分数,默认是0.5;比如我们这里指定的动画是@anim/slide_in_left,而在slide_in_left.xml中指定android:duration=”1000”,即单次动画的时长是1000毫秒,而我们在这里的指定android:delay=”1”,即一个Item的动画会在上一个item动画完成后延时单次动画时长的一倍时间开始,即延时1000毫秒后开始。
- animationOrder:指viewGroup中的控件动画开始顺序,取值有normal(正序)、reverse(倒序)、random(随机)
- animation:指定每个item入场所要应用的动画。仅能指定res/aim文件夹下的animation定义的动画,不可使用animator动画。
如何在控件中定义layoutAnimation
android:layoutAnimation="@anim/la"
在控件Xml中添加这行即可。
代码实现:
Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.alpha);
LayoutAnimationController controller = new LayoutAnimationController(animation); //设置控件显示的顺序;
controller.setOrder(LayoutAnimationController.ORDER_REVERSE); //设置控件显示间隔时间;
controller.setDelay(0.2f); //为RecycleView设置LayoutAnimation
recyclerView.setLayoutAnimation(controller);
recyclerView.startLayoutAnimation();
这里不能直接加载la.xml。
##Animator##
同样可以是set标签
<set xmlns:android="http://schemas.android.com