在Android中如何使用clipPath()方法实现简单的裁剪圆形图片

  • Post author:
  • Post category:其他

裁剪圆形图片的方式有很多,这篇文章主要为大家介绍如何使用clipPath()方法裁剪圆形图片。
首先,我们先看效果图:
裁剪前:
这里写图片描述
裁剪后:
这里写图片描述
接下来,我们来一步一步的实现。

1.新建一个module

2.新建一个自定义view类,继承View,并重写两参构造器和onDrawn方法

/**
 * Created by zhaoxin on 17/8/31.
 */

public class MyAnimationView extends View {

    public MyAnimationView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);


    }

3.新建一个布局,在布局中通过包名.类导入自定义view

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.example.zhaoxin.mycustomviewanimation.MyAnimationView
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

4.接下来就是重要的裁剪圆形图片部分

/**
 * Created by zhaoxin on 17/8/31.
 */

public class MyAnimationView extends View {

    private Bitmap mBitmap;
    private Path mPath;

    public MyAnimationView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        Paint paint = new Paint();

        mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic);
        mPath = new Path();

        mPath.addCircle(mBitmap.getWidth() / 2, mBitmap.getHeight() / 2, mBitmap.getWidth() / 2, Path.Direction.CCW);
        canvas.clipPath(mPath);
        canvas.drawBitmap(mBitmap, 0, 0, paint);
    }
}

至此,简单的圆形图片的裁剪已全部完成。


版权声明:本文为xingxingchance原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。