所有方式均继承了ImageView
圆形图片实现一:BitmapShader
package com.open.widget;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Shader.TileMode;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;
/**
* 1.BitmapShader
*
* @author Administrator
*
*/
public class CircularImageView extends ImageView {
private BitmapShader mBitmapShader;
private Paint mBitmapPaint = new Paint();
private RectF mRoundRect=new RectF();
public CircularImageView(Context context) {
super(context);
initObjectAttribute();
}
public CircularImageView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CircularImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initObjectAttribute();
}
@Override
public void setImageResource(int resId) {
super.setImageResource(resId);
createBitmapShader();
}
@Override
public void setImageBitmap(Bitmap bm) {
super.setImageBitmap(bm);
// createBitmapShader();
}
@Override
public void setImageDrawable(Drawable drawable) {
super.setImageDrawable(drawable);
createBitmapShader();
}
private void initObjectAttribute()
{
mBitmapPaint.setAntiAlias(true);
// if(getScaleType() != ScaleType.CENTER_CROP)
// {
// setScaleType(ScaleType.CENTER_CROP);
// }
}
private void createBitmapShader()
{
mBitmapShader = null;
Drawable mDrawable = getDrawable();
if (mDrawable == null)
{
return;
}
if(mDrawable instanceof Bi