package com.sandro.custom.widget; 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.Bitmap.Config; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.Log; import android.widget.ImageView; import com.sandro.util.DeviceUtil; import com.sandro.util.DrawUtil; /** * * @ClassName: CustomBackageImageView * @Description:对imageview中的背景做特殊处理 * @author: Sandro * @date: 2012-11-19 下午07:12:04 * */ public class CustomBackageImageView extends ImageView{ private Paint mPaint; private DrawUtil mCenterRect; private Bitmap mSCBitmap; public CustomBackageImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); } public CustomBackageImageView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public CustomBackageImageView(Context context) { super(context); init(context); } private void init(Context context){ } @Override protected void onDraw(Canvas canvas){ drawInit(); super.onDraw(canvas); canvas.drawBitmap(mSCBitmap, 0, 0, mPaint); } private void drawInit(){ if(mCenterRect == null){ int w = this.getWidth(); int h = this.getHeight(); int d = Math.min(w, h); mCenterRect = new DrawUtil(); mCenterRect.init(w / 4, h / 4, d / 4 * 3, d / 4 * 3, 0, 360); mCenterRect.mPaints.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); Drawable bg=this.getBackground(); BitmapDrawable bd = (BitmapDrawable) bg; Bitmap mBitQQ = bd.getBitmap(); mSCBitmap = Bitmap.createBitmap(mBitQQ.getWidth(), mBitQQ.getHeight(), Config.ARGB_8888); Log.i("xformode", "w : " + w + " ,h: " + h + " ,mBitQQ.w : " + mBitQQ.getWidth() + " ,mBitQQ.h : " + mBitQQ.getHeight()); Log.i("xformode", "getScreenWidth"+ DeviceUtil.getScreenWidth()+ " ,screenHeight : " + DeviceUtil.getScreenHeight()); mPaint = new Paint(); Canvas canvas = new Canvas(); canvas.setBitmap(mSCBitmap); canvas.drawBitmap(mBitQQ, 0, 0, null); mCenterRect.draw(canvas); this.setBackgroundColor(0x00000000); } } }