Android Animation动画

Animation 动画

帧动画

animationDrawable = (AnimationDrawable) imageView.getBackground();创建animationDrawable对象
animationDrawable.start():开启动画
animationDrawable.stop():停止动画

xml实现
图片

// An highlighted block
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/p1" android:duration="50"/>
    <item android:drawable="@drawable/p2" android:duration="50"/>
    <item android:drawable="@drawable/p3" android:duration="50"/>
    <item android:drawable="@drawable/p4" android:duration="50"/>
    <item android:drawable="@drawable/p5" android:duration="50"/>
    <item android:drawable="@drawable/p6" android:duration="50"/>
    <item android:drawable="@drawable/p7" android:duration="50"/>
    <item android:drawable="@drawable/p8" android:duration="50"/>
</animation-list>
// An highlighted block
@ContentView(R.layout.activity_xml)
public class XmlActivity extends AppCompatActivity {
    @ViewInject(R.id.xml_start)
    private Button start;

    @ViewInject(R.id.xml_stop)
    private Button stop;

    @ViewInject(R.id.xml_img)
    private ImageView imageView;

    private AnimationDrawable animationDrawable;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        x.view().inject(XmlActivity.this);
        animationDrawable = (AnimationDrawable) imageView.getBackground();
    }

    @Event(value = {R.id.xml_start,R.id.xml_stop},type = View.OnClickListener.class)
    private void click(View view){
        switch (view.getId()){
            case R.id.xml_start:
                startAnimatiomn();
                break;
            case R.id.xml_stop:
                stopAnimation();
                break;
        }
    }

    private void stopAnimation() {
        animationDrawable.stop();
    }

    private void startAnimatiomn() {
        animationDrawable.start();
    }
}

在这里插入图片描述
代码实现
添加要设置动画的图片

// An highlighted block
animationDrawable = new AnimationDrawable();

        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p1),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p2),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p3),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p4),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p5),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p6),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p7),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p8),50);

        imageView.setImageDrawable(animationDrawable);
// An highlighted block
@ContentView(R.layout.activity_java)
public class JavaActivity extends AppCompatActivity {
    @ViewInject(R.id.java_start)
    private Button start;

    @ViewInject(R.id.java_stop)
    private Button stop;

    @ViewInject(R.id.java_img)
    private ImageView imageView;

    private AnimationDrawable animationDrawable;
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        x.view().inject(JavaActivity.this);
        initAnimation();
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private void initAnimation() {
        animationDrawable = new AnimationDrawable();

        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p1),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p2),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p3),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p4),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p5),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p6),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p7),50);
        animationDrawable.addFrame(getResources().getDrawable(R.drawable.p8),50);

        imageView.setImageDrawable(animationDrawable);
    }

    @Event(value = {R.id.java_start,R.id.java_stop},type = View.OnClickListener.class)
    private void click(View view){
        switch (view.getId()){
            case R.id.java_start:
                startAnimation();
                break;
            case R.id.java_stop:
                stopAnimation();
                break;
        }
    }

    private void stopAnimation() {
        if(animationDrawable.isRunning()){
            animationDrawable.stop();
        }
    }

    private void startAnimation() {
        if(!animationDrawable.isRunning()){
            animationDrawable.start();
        }
    }
}

补间动画

setFillBefore(true):设置动画演示完是否返回动画最初效果
setRepeatCount(5):设置动画效果执行次数
setDuration(5000):设置动画效果每次执行时间
setRepeatMode():设置动画模式
setInterpolator():设置动画的插值器
startAnimation():开启动画
透明动画

// An highlighted block
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="0.0"
    android:toAlpha="1.0"
    android:fillBefore="true"
    android:duration="5000"
    >

</alpha>

在这里插入图片描述
旋转动画

// An highlighted block
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="720"
    android:pivotX="100"
    android:pivotY="100"
    android:duration="5000"
    android:fillBefore="true"
    >

</rotate>

在这里插入图片描述
缩放动画

// An highlighted block
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="1.0"
    android:toXScale="3.0"
    android:fromYScale="1.0"
    android:toYScale="4.0"
    android:pivotY="100"
    android:pivotX="200"
    android:duration="5000"
    android:fillBefore="true"
    >

</scale>

在这里插入图片描述
平移动画

// An highlighted block
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="300"
    android:duration="500"
    android:fillBefore="true"
    >

</translate>

在这里插入图片描述
动画集合

// An highlighted block
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:fillBefore="true"
        android:duration="5000"
        ></alpha>
    <rotate
        android:fromDegrees="0"
        android:toDegrees="720"
        android:pivotX="100"
        android:pivotY="100"
        android:duration="5000"
        android:fillBefore="true"
        ></rotate>
    <scale
        android:fromXScale="1.0"
        android:toXScale="3.0"
        android:fromYScale="1.0"
        android:toYScale="4.0"
        android:pivotY="100"
        android:pivotX="200"
        android:duration="5000"
        android:fillBefore="true"
        ></scale>
    <translate
        android:fromXDelta="0"
        android:toXDelta="300"
        android:duration="500"
        android:fillBefore="true"
        >
    </translate>
</set>

在这里插入图片描述

// An highlighted block
@ContentView(R.layout.activity_tween)
public class TweenActivity extends AppCompatActivity {
    @ViewInject(R.id.tween_alpha)
    private Button alpha;

    @ViewInject(R.id.tween_scale)
    private Button scale;

    @ViewInject(R.id.tween_rotate)
    private Button rotate;

    @ViewInject(R.id.tween_translate)
    private Button teanslate;

    @ViewInject(R.id.tween_set)
    private Button set;

    @ViewInject(R.id.tween_img)
    private ImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        x.view().inject(TweenActivity.this);

    }

    @Event(value = {R.id.tween_alpha,R.id.tween_scale,R.id.tween_rotate,R.id.tween_translate,R.id.tween_set},type = View.OnClickListener.class)
    private void click(View view){
        switch (view.getId()){
            case R.id.tween_alpha:
                setalpha();
                break;
            case R.id.tween_rotate:
                setrotate();
                break;
            case R.id.tween_scale:
                setscale();
                break;
            case R.id.tween_translate:
                settranslate();
                break;
            case R.id.tween_set:
                set();
                break;
        }
    }

    private void set() {
        Animation animation = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.set);
        imageView.startAnimation(animation);
    }

    private void settranslate() {

        Animation animation = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.translate);
        imageView.startAnimation(animation);


    }

    private void setscale() {
//        Animation animation = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.scale);
//        imageView.startAnimation(animation);
        ScaleAnimation scaleAnimation = new ScaleAnimation(1,3,1,4,ScaleAnimation.ABSOLUTE, 200,ScaleAnimation.ABSOLUTE,100);
        scaleAnimation.setFillBefore(true);
        scaleAnimation.setRepeatCount(5);
        scaleAnimation.setDuration(5000);
        scaleAnimation.setRepeatMode(ScaleAnimation.REVERSE);

        scaleAnimation.setInterpolator(new BounceInterpolator());


        imageView.startAnimation(scaleAnimation);
    }

    private void setrotate() {
        Animation animation = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.rotate);
        imageView.startAnimation(animation);

    }

    private void setalpha() {
        Animation animation = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.alpha);
        imageView.startAnimation(animation);


    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值