自定义View 之ImageView(二) 圆角ImageView
来源:互联网 发布:未来教育计算机二级vb 编辑:程序博客网 时间:2024/06/15 10:29
很多场景下我们需要ImageView带有圆角,这样布局看上去会更漂亮。官方ImageView没有默认该项属性,所以需要我们自定义一个ImageView
具体代码如下:
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.Rect;import android.graphics.RectF;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.widget.ImageView;/** * Created by sunwenbin on 2017/6/8. */public class RoundRectImageView extends ImageView { private Paint paint; public RoundRectImageView(Context context) { this(context,null); } public RoundRectImageView(Context context, AttributeSet attrs) { this(context, attrs,0); } public RoundRectImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); paint = new Paint(); } /** * 绘制圆角矩形图片 * @author sunwenbin */ @Override protected void onDraw(Canvas canvas) { Drawable drawable = getDrawable(); if (null != drawable) { Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); Bitmap b = getRoundBitmap(bitmap, 10); // 该函数中的bitmap就是被修改的图片,后面的int值,就是圆角的半径。 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 roundPx,一般设置成14 * @return Bitmap * @author sunwenbin */ private Bitmap getRoundBitmap(Bitmap bitmap, int roundPx) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); int x = bitmap.getWidth(); canvas.drawRoundRect(rectF, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; }}
阅读全文
0 0
- 自定义View 之ImageView(二) 圆角ImageView
- 自定义view (二<ImageView>)
- 自定义View 之 ImageView(一) 自定义圆形ImageView
- 自定义View圆角ImageView
- 自定义View圆角ImageView
- 自定义view(imageview)
- 自定义view之圆形ImageView
- android自定义view之自定义imageview
- android自定义view-打造圆形ImageView(二)
- Android自定义View之圆形ImageView--RoundImageView
- Android自定义View之圆形ImageView
- 自定义view之imageview图片处理
- 自定义view之圆角imageview
- Android 自定义View (ImageView )
- 自定义View--圆形ImageView
- Android自定义View(ImageView画圆)
- android自定义View之仿携程首页点击缩放ImageView
- 安卓开发之自定义View------> 圆形头像ImageView
- 设计模式之单例模式
- STM32F4工程模板建立与时钟的设置方法
- in和exists
- thinkphp框架page类与bootstrap分页(美化)
- Weblogic部署项目三种方式
- 自定义View 之ImageView(二) 圆角ImageView
- Akka(10): 分布式运算:集群-Cluster
- GLSurfaceView的简单分析及巧妙借用
- Redis相关基本知识
- leetcode第十三周解题总结--动态规划(二)
- LeetCode Algorithms 113. Path Sum II
- OpenCV Error: Unspecified error "..., 321OpenCV Error: Unspecified error (The function is not implem
- 文章标题
- activemq连接方式