android动画
android动画
梦想家Peng 发表于2年前
android动画
  • 发表于 2年前
  • 阅读 21
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

补间动画【Tween Animation】

对res点击鼠标右键,创建Android XML File,在Resource Type栏选择Tween Animation,通常选择Root Element为set,创建新的文件之后,该文件会出现在res的anim文件夹下,所有的Tween动画配置文件都应该在该文件夹中。
1) alpha动画:淡入淡出动画
fromAlpha / toAlpha:表示透明度,取值为float类型,值应该为0~1之间,0表示完全透明,1表示完全不透明

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="3000"
        android:fromAlpha="0.3"
        android:toAlpha="1"
        />
</set>

2) rotate:旋转动画
fromDegrees / toDegrees:表示旋转角度,取值为整型,值应该为0~N之间。
pivotX / pivotY:旋转的中心点坐标,取值通常使用百分比

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="720" />

</set>

3) scale:缩放动画
fromXScale / toXScale / fromYScale / toYScale:表示缩放比例,取值通常为百分比
pivotX / pivotY:参考上述rotate中的同名属性

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    
    <scale 
        android:fromXScale="0"
        android:toXScale="100%"
        android:fromYScale="0"
        android:toYScale="100%"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="3000"
        />

</set>

4) translate:平移动画
fromXDelta / toXDelta fromYDelta / toYDelta:表示平移位置,也可以理解为以左上角顶点为基准的移动位置,取值通常为百分比

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:fromXDelta="0"
        android:toXDelta="100%"
        android:fromYDelta="0"
        android:toYDelta="0"
        android:duration="3000"
        />

</set>

5) 通用属性:
duration:持续时长,取值为整型数,单位为毫秒
repeatCount:重复次数,取值为整型数,动画的第1次执行并不会计入重复次数之内,所以,如果希望动画能执行2次,则取值应该为1
repeatMode:重复模式,取值为restart或reverse,当取值为restart时,重复时会直接从初始状态再次执行动画效果,当取值为reverse时,重复时会逆向执行动画效果回到初始状态,再继续后面的重复,该属性仅当repeatCount的值大于0时有效
startOffset:开始执行动画的时间偏移量,取值为整型数,单位为毫秒,表示过多长时间以后再开始执行动画,通常用于动画集中
6) 根节点属性:
fillAfter:是否停留在动画结束之后的状态,取值为布尔值
interpolator:执行动画的加速度,取值为@android :anim/decelerate_interpolator时表示减速度,取值为@android :anim/accelerate_interpolator时表示加速度,取值为@android :anim/accelerate_decelerate_interpolator表示先加速度后减速度
7) 使用动画:
通过AnimationUtils的静态方法loadAnimation()将动画的配置文件加载为Animation对象,并使用控件(例如TextView)的startAnimation()开始动画

public class MainActivity extends Activity implements View.OnClickListener {
    private TextView tvHelloWorld;
    private Animation alpha;
    private Animation rotate;
    private Animation scale;
    private Animation translate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvHelloWorld = (TextView) findViewById(R.id.tv_hello_world);

        findViewById(R.id.btn_start_alpha).setOnClickListener(this);
        findViewById(R.id.btn_start_rotate).setOnClickListener(this);
        findViewById(R.id.btn_start_scale).setOnClickListener(this);
        findViewById(R.id.btn_start_translate).setOnClickListener(this);

        alpha = AnimationUtils.loadAnimation(this, R.anim.alpha);
        rotate = AnimationUtils.loadAnimation(this, R.anim.rotate);
        scale = AnimationUtils.loadAnimation(this, R.anim.scale);
        translate = AnimationUtils.loadAnimation(this, R.anim.translate);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_start_alpha:
            tvHelloWorld.startAnimation(alpha);
            break;

        case R.id.btn_start_rotate:
            tvHelloWorld.startAnimation(rotate);
            break;
            
        case R.id.btn_start_scale:
            tvHelloWorld.startAnimation(scale);
            break;
            
        case R.id.btn_start_translate:
            tvHelloWorld.startAnimation(translate);
            break;
        }

    }

}
  • Activity之间切换时自定义动画切换效果
    -----------------------------------
    在调用了startActivity()之后,调用overridePendingTransition(int enterAnim, int exitAnim)方法即可。




共有 人打赏支持
粉丝 0
博文 33
码字总数 15605
×
梦想家Peng
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: