public class MyView2 extends View {
private Paint paint;
private int progress;
private String timeString;
public MyView2(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
paint=new Paint();
paint.setTextSize(50);
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
paint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
RectF rectF = new RectF(20, 20, 100, 100);
canvas.drawArc(rectF,270,progress,false,paint);
canvas.drawText(timeString,50,65,paint);
}
public void start(int time) {
ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 360);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(@NonNull ValueAnimator animation) {
progress=(int)valueAnimator.getAnimatedValue();
invalidate();
}
});
valueAnimator.setDuration(time*1000);
valueAnimator.start();
ValueAnimator valueAnimatorText = ValueAnimator.ofInt(time, 0);
valueAnimatorText.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(@NonNull ValueAnimator animation) {
timeString=String.valueOf(valueAnimatorText.getAnimatedValue());
invalidate();
}
});
valueAnimatorText.setDuration(time*1000);
valueAnimatorText.start();
valueAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
onAnim.Anim();
}
});
}
interface OnAnim{
void Anim();
}
OnAnim onAnim;
public void setOnAnim(OnAnim onAnim) {
this.onAnim = onAnim;
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="100dp"
tools:context=".WelcomeActivity2">
<com.baicai.day10photoview.MyView2
android:id="@+id/my_view2"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
public class WelcomeActivity2 extends AppCompatActivity {
private MyView2 myView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome2);
myView2=findViewById(R.id.my_view2);
myView2.start(5);
ObjectAnimator TranslationX = ObjectAnimator.ofFloat(myView2, "TranslationX",0,400,200,0);
TranslationX.setRepeatCount(4);//设置重复次数
TranslationX.setDuration(3000);
TranslationX.start();
myView2.setOnAnim(new MyView2.OnAnim() {
@Override
public void Anim() {
Intent intent = new Intent(WelcomeActivity2.this, PickerActivity.class);
startActivity(intent);
}
});
}
}