package com.mcxtzhang.cstviewdemo.widget; import android.animation.ValueAnimator; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PathEffect; import android.graphics.PathMeasure; import android.graphics.Rect; import android.graphics.RectF; import android.util.AttributeSet; import android.view.View; import com.mcxtzhang.cstviewdemo.R; public class Oval extends View implements View.OnClickListener { private Paint mPaint; private Path mPath; private PathMeasure mPathMeasure; private PathEffect mEffect; private float fraction = 0; private ValueAnimator mAnimator; public Oval(Context context) { super(context); } public Oval(Context context, AttributeSet attrs) { super(context, attrs); mPath = new Path(); mPath.reset(); mPath.lineTo(0, 0); RectF oval = new RectF(100, 100, 600, 600); mPath.arcTo(oval, 90, 180); //我画一个圆 //mPath.addRoundRect(200,200,600,600,50,50, Path.Direction.CCW); /* mPath.moveTo(50,100); mPath.lineTo(getWidth(),100);*/ mPaint = new Paint(); mPaint.setColor(Color.BLACK); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(5); } public Oval(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //canvas.drawPath(mPath, mPaint); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.wangcong); // 将画布坐标系移动到画布中央 canvas.translate(getWidth() / 2, getHeight() / 2); // 指定图片绘制区域(左上角的四分之一) Rect src = new Rect(bitmap.getWidth() / 3, bitmap.getWidth() / 3, bitmap.getWidth(), bitmap.getHeight()); // 指定图片在屏幕上显示的区域 Rect dst = new Rect(100, 100, 200, 400); // 绘制图片 canvas.drawBitmap(bitmap, src, dst, null); } @Override public void onClick(View view) { mAnimator.start(); } }