package com.bawei.demo.view.activity;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Build;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import com.bawei.demo.R;
import java.util.TimerTask;
/**
-
作者: 姓名
-
日期: 2019/7/20 17:44
*/
public class MyView extends View{
private ValueAnimator animator;
private int measuredHeight;
private int measuredWidth;
private int wendu;
private int i=0;
public MyView(Context context) {
super(context);
}public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyView);
wendu = typedArray.getInteger(R.styleable.MyView_wenDu, 0);
}public int getWendu() {
return wendu;
}public void setWendu(int wendu) {
this.wendu = wendu;
invalidate();
}@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
measuredHeight = getMeasuredHeight();
measuredWidth = getMeasuredWidth();
}@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int cx = measuredWidth / 2;
int cy=measuredHeight-400;
int r=50;
int w=25;
int left=cx-w/2;
int right=left+w;
int bottom=cy;
int top=bottom-500;Paint paint = new Paint(); paint.setColor(Color.YELLOW); canvas.drawCircle(cx,cy,50,paint); Paint paint1 = new Paint(); paint1.setColor(Color.RED); paint1.setStrokeCap(Paint.Cap.ROUND); Rect rect = new Rect(left,wendu,right,bottom); canvas.drawRect(rect,paint); Paint paint2 = new Paint(); paint2.setColor(Color.BLUE); paint2.setStrokeCap(Paint.Cap.ROUND); paint2.setColor(Color.argb(99,88,88,88)); Rect rect1 = new Rect(left-5,top-400,right+5,bottom-r); canvas.drawRect(rect1,paint2); int startx=left-20; int stop=left-5; for (int i = 0; i < 25; i++) { canvas.drawLine(startx,cy-r-i*25,startx,cy-r-i*20,paint1); }
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
if (i0){
i=1;
startAnimator();
}else if (i1){
animator.pause();
i=2;
}else {
animator.resume();
i=1;
}
break;
}return true;
}
private void startAnimator(){
animator = ValueAnimator.ofInt(50, measuredHeight);
animator.setDuration(2000);
animator.setRepeatCount(-1);
animator.setRepeatMode(ValueAnimator.REVERSE);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
wendu = (int) animation.getAnimatedValue();
invalidate();
}
});
animator.start();
}
}