• Android 自定义的圆角矩形ImageView 工具类


    上图看效果

    自定义圆角矩形ImageView工具类

     1 package com.wechaotou.utils;
     2 
     3 import android.content.Context;
     4 import android.graphics.Bitmap;
     5 import android.graphics.Bitmap.Config;
     6 import android.graphics.Canvas;
     7 import android.graphics.Paint;
     8 import android.graphics.PorterDuff.Mode;
     9 import android.graphics.PorterDuffXfermode;
    10 import android.graphics.Rect;
    11 import android.graphics.RectF;
    12 import android.graphics.drawable.BitmapDrawable;
    13 import android.graphics.drawable.Drawable;
    14 import android.util.AttributeSet;
    15 import android.widget.ImageView;
    16 
    17 /**
    18  * 自定义的圆角矩形ImageView,可以直接当组件在布局中使用。
    19  * @author caizhiming
    20  *
    21  */
    22 public class XCRoundRectImageView extends ImageView {
    23 
    24     private Paint paint;
    25 
    26     public XCRoundRectImageView(Context context) {
    27         this(context,null);
    28     }
    29 
    30     public XCRoundRectImageView(Context context, AttributeSet attrs) {
    31         this(context, attrs,0);
    32     }
    33 
    34     public XCRoundRectImageView(Context context, AttributeSet attrs, int defStyle) {
    35         super(context, attrs, defStyle);
    36         paint  = new Paint();
    37     }
    38 
    39     /**
    40      * 绘制圆角矩形图片
    41      * @author caizhiming
    42      */
    43     @Override
    44     protected void onDraw(Canvas canvas) {
    45 
    46         Drawable drawable = getDrawable();
    47         if (null != drawable) {
    48             Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
    49             Bitmap b = getRoundBitmap(bitmap, 20);
    50             final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight());
    51             final Rect rectDest = new Rect(0,0,getWidth(),getHeight());
    52             paint.reset();
    53            canvas.drawBitmap(b, rectSrc, rectDest, paint);
    54 
    55         } else {
    56             super.onDraw(canvas);
    57         }
    58     }
    59 
    60     /**
    61      * 获取圆角矩形图片方法
    62      * @param bitmap
    63      * @param roundPx,一般设置成14
    64      * @return Bitmap
    65      * @author caizhiming
    66      */
    67     private Bitmap getRoundBitmap(Bitmap bitmap, int roundPx) {
    68         Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
    69                 bitmap.getHeight(), Config.ARGB_8888);
    70         Canvas canvas = new Canvas(output);
    71 
    72         final int color = 0xff424242;
    73 
    74         final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
    75         final RectF rectF = new RectF(rect);
    76         paint.setAntiAlias(true);
    77         canvas.drawARGB(0, 0, 0, 0);
    78         paint.setColor(color);
    79         int x = bitmap.getWidth();
    80 
    81         canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
    82         paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    83         canvas.drawBitmap(bitmap, rect, rect, paint);
    84         return output;
    85 
    86 
    87     }
    88 }

     布局文件使用

            <com.wechaotou.utils.XCRoundRectImageView
                android:id="@+id/image_head"
                android:layout_width="77dp"
                android:layout_height="77dp"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="68dp"
                android:gravity="center_vertical"
                android:src="@drawable/text_order" />
    
  • 相关阅读:
    次小生成树
    乘法逆元(递推)
    乘法逆元(快速幂)
    带偏移量的并查集
    Tarjan 强连通分量
    Luogu_P2461 [SDOI2008]递归数列 【题解】 矩阵乘法
    Luogu_P2243 电路维修【题解】 双端队列bfs
    Luogu_ P2962 [USACO09NOV] 灯 【题解】 双向搜索
    luogu_P2044【题解】 随机数生成器 矩阵乘法
    luogu_P2054 bzoj 1965 洗牌 【题解】 快速幂 快速乘
  • 原文地址:https://www.cnblogs.com/monkey0928/p/10279786.html
Copyright © 2020-2023  润新知