ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> Android开发 >> android-自定义ImageView-圆形图片绘制代码详解

android-自定义ImageView-圆形图片绘制代码详解(3/6)

来源:网络整理     时间:2015-10-18     关键词:gravity,博客,Canvas,Activity

本篇文章主要介绍了"android-自定义ImageView-圆形图片绘制代码详解",主要涉及到gravity,博客,Canvas,Activity方面的内容,对于Android开发感兴趣的同学可以参考一下: andorid中圆形图片很早就有啦,今天算是搞了一把,自己写了出来,并且可以实际使用的代码。 先看效果图: 图片的原图是: 先看看xml的布局文件是怎么样的:...

第二种方式,PorterDuff.Mode.DST_IN
代码如下:

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.graphics.Xfermode;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ImageView;

/**
 * Created by husy on 2015/10/18.
 * @link http://blog.csdn.net/u010156024
 * @description:
 */publicclassPorterDuffViewImageextendsImageView {private Paint mpaint;
    privatestatic Xfermode xfermode;
    privatestatic Bitmap bitmap;
    private RectF rect;
    publicPorterDuffViewImage(Context context) {
        super(context);
        init();
    }

    publicPorterDuffViewImage(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    publicPorterDuffViewImage(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }
    privatevoidinit(){
        setLayerType(LAYER_TYPE_SOFTWARE, null);
        xfermode = new PorterDuffXfermode(PorterDuff.Mode.DST_IN);
        mpaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    }

    @OverrideprotectedvoidonDraw(Canvas Canvas) {
        super.onDraw(Canvas);
        int width = getWidth();
        int height = getHeight();
        Bitmap.Config config = Bitmap.Config.ARGB_8888;
        Canvas Canvas1=null;
        BitmapDrawable drawable = (BitmapDrawable)getDrawable();
        drawable.setBounds(0, 0, width, height);
        drawable.draw(Canvas);
        if (bitmap == null){
            Log.i("porterduffviewimage","bitmap==null");
            Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
            rect = new RectF(0,0,width,height);
            bitmap = Bitmap.createBitmap(width, height, config);
            Canvas1 = new Canvas(bitmap);
            Canvas1.drawOval(rect, paint);
        }
        mpaint.setXfermode(xfermode);
        Canvas.drawBitmap(bitmap,0,0,mpaint);
    }

}

布局文件:

相关图片

相关文章