自定义控件动画TextView

来源:互联网 发布:r语言和c语言哪个难 编辑:程序博客网 时间:2024/05/23 16:01
public class CTextView extends android.support.v7.widget.AppCompatTextView {    private Paint paint;    public CTextView(Context context) {        this(context, null);    }    public CTextView(Context context, @Nullable AttributeSet attrs) {        this(context, attrs, 0);    }    public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        initParams();    }    private int viewWidth, viewHeight;//控件宽高    private void initParams() {//        viewWidth = viewHeight = 200;        paint = new Paint();        paint.setColor(Color.parseColor("#FFB300"));        paint.setStrokeWidth(1);        paint.setAntiAlias(true);        paint.setStyle(Paint.Style.STROKE);        setGravity(Gravity.CENTER);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);        viewWidth = getMeasuredWidth();        viewHeight = getMeasuredHeight();    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.drawCircle(viewWidth / 2f, viewHeight / 2f, viewWidth / 2f - paint.getStrokeWidth(), paint);    }    public void startAnim() {        ObjectAnimator sx = ObjectAnimator.ofFloat(this, "scaleY", 0.5f, 1f);        ObjectAnimator sy = ObjectAnimator.ofFloat(this, "scaleX", 0.5f, 1f);        ObjectAnimator fadeOutIn = ObjectAnimator.ofFloat(this, "alpha", 0f, 1f, 0.9f, 1f, 0f);        AnimatorSet animSet = new AnimatorSet();        animSet.play(sx).with(sy).with(fadeOutIn);        animSet.setDuration(2000);        animSet.start();        animSet.addListener(new AnimatorListenerAdapter() {            @Override            public void onAnimationEnd(Animator animation) {                super.onAnimationEnd(animation);                animFinishListener.onFinish();            }        });    }    public interface onAnimFinishListener {        void onFinish();    }    private onAnimFinishListener animFinishListener;    public void setOnAnimFinishListener(onAnimFinishListener animFinishListener) {        this.animFinishListener = animFinishListener;    }}
原创粉丝点击