Android-ObjectAnimator实现动画开始,暂停,继续,结束
前言
本人计机专业大学学生,这是第一篇博客。在某些地方的术语可能有所偏颇,酌情参考。接下来的博客内容都围绕大学Android移动应用开发中设计一个角色扮演游戏APP中遇到的开发问题并相应的解决问题。
问题
当设计两个角色对战界面时候,需要根据进度条动画显示可选技能界面,用户选择技能后继续进行进度条动画。这里就需要解决进度条动画开始、暂停、继续、结束后执行相应的操作的问题。这个问题在Android自带的ObjectAnimator中的start(),pause(),resume(),stop()可以解决
ObjectAnimator的使用
ObjectAnimator的创建
private ObjectAnimator objectAnimator;
imageView=findViewById(R.id.iv);
objectAnimator= ObjectAnimator.ofFloat(imageView, "alpha",1f,0f,1f);
objectAnimator创建函数
第一个参数:传入一个object对象我们想要对哪个对象进行动画操作就传入相应的对象,这里传入了一个imageView即前面实例化的图片。
第二个参数:想要对该对象进行的动画操作类型(alpha、scale、translate、rotate等等)。
后面的参数:不固定长度,根据完成动画输入相应的值。
ObjectAnimator的属性设置
objectAnimator.setDuration(4000);/*动画时间*/
objectAnimator.setRepeatCount(ObjectAnimator.INFINITE);/*重复次数*/
通过set函数设置动画相关的属性
ObjectAnimator的使用
objectAnimator.pause();/*暂停*/
objectAnimator.start();/*开始*/
objectAnimator.resume();/*继续*/
objectAnimator.stop();/*停止*/
在类中任何地方调用上述函数即可实现想要的四种功能。
完整java代码
package com.example.test;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.animation.ObjectAnimator;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ImageView imageView;
private Button button1,button2;
private ObjectAnimator objectAnimator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=findViewById(R.id.iv);
button1=findViewById(R.id.bt_1);/*暂停按钮*/
button2=findViewById(R.id.bt_2);/*继续按钮*/
objectAnimator= ObjectAnimator.ofFloat(imageView,
"alpha",1f,0f,1f);/*创建*/
/*设置属性*/
objectAnimator.setDuration(4000);
objectAnimator.setRepeatCount(ObjectAnimator.INFINITE);
objectAnimator.start();
button1.setOnClickListener(this);
button2.setOnClickListener(this);
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)/*api版本*/
public void onClick(View v){
switch(v.getId()){
case R.id.bt_1:
objectAnimator.pause();/*点击暂停动画*/
break;
case R.id.bt_2:
objectAnimator.resume();/*点击继续动画*/
break;
}
}
}