简单的自定义圆形图片(不能与BitmapUtils一起使用)

来源:互联网 发布:自动设计软件 编辑:程序博客网 时间:2024/05/20 22:36

自定义类继承ImageView

package com.dzt.newsfast.DIYviews;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.PorterDuff.Mode;import android.graphics.PorterDuffXfermode;import android.graphics.Rect;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.widget.ImageView;public class RoundPicture extends ImageView{    private Paint paint ;    public RoundPicture(Context context) {          this(context,null);      }      public RoundPicture(Context context, AttributeSet attrs) {          this(context, attrs,0);      }      public RoundPicture(Context context, AttributeSet attrs, int defStyle) {          super(context, attrs, defStyle);         paint = new Paint();    }      /**     * 绘制圆形图片     * @author caizhiming     */    @Override      protected void onDraw(Canvas canvas) {          Drawable drawable = getDrawable();          if (null != drawable) {              BitmapDrawable bd=(BitmapDrawable) drawable;            Bitmap bitmap = (bd).getBitmap();              Bitmap b = getCircleBitmap(bitmap);              final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight());              final Rect rectDest = new Rect(0,0,getWidth(),getHeight());            paint.reset();              canvas.drawBitmap(b, rectSrc, rectDest, paint);          } else {              super.onDraw(canvas);          }      }      /**     * 获取圆形图片方法     * @param bitmap     * @param pixels     * @return Bitmap     * @author caizhiming     */    private Bitmap getCircleBitmap(Bitmap bitmap) {          Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),                  bitmap.getHeight(), Config.ARGB_8888);          Canvas canvas = new Canvas(output);          final int color = 0xff424242;        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());          paint.setAntiAlias(true);          canvas.drawARGB(0, 0, 0, 0);          paint.setColor(color);          int x = bitmap.getWidth();         canvas.drawCircle(x / 2, x / 2, x / 2, paint);          paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));          canvas.drawBitmap(bitmap, rect, rect, paint);          return output;      }  }

xml布局中

//自己定义的包名加类名 <com.example.yue.myimageview.RoundPicture          android:paddingLeft="5dp"        android:paddingTop="10dp"        android:layout_height="80dp"        android:layout_width="80dp"        android:id="@+id/image"        />

注意不能与BitmapUtils一起使用冲突

0 0
原创粉丝点击