Android开发之自定义圆角矩形图片ImageView
android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆角矩形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap,然后进行裁剪对应的圆角矩形的bitmap,然后在onDraw()进行绘制圆角矩形图片输出。
自定义的圆形的ImageView类的实现代码如下:
package com.xc.xcskin.view;import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; 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;/*** 自定义的圆角矩形ImageView,可以直接当组件在布局中使用。* @author caizhiming**/ public class XCRoundRectImageView extends ImageView{private Paint paint;public XCRoundRectImageView(Context context) { this(context,null); } public XCRoundRectImageView(Context context, AttributeSet attrs) { this(context, attrs,0); } public XCRoundRectImageView(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) { Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); Bitmap b = getRoundBitmap(bitmap, 20); 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,圆角的弧度* @return Bitmap* @author caizhiming*/private Bitmap getRoundBitmap(Bitmap bitmap, int roundPx) { 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()); 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(Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } }
注:getRoundBitmap(Bitmap bitmap, int roundPx)中第二个参数为图片的圆角弧度
xml布局文件中直接引用即可:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" ><com.xc.xcskin.view.XCRoundRectImageViewandroid:id="@+id/roundRectImageView" android:layout_centerInParent="true" android:layout_width="200dp" android:layout_height="80dp"android:src="@drawable/roundimageview"/></RelativeLayout>
最后:效果图如下:
Android开发之自定义圆角矩形图片ImageView相关推荐
- Android开发之自定义圆角矩形图片ImageView的实现 - Jamy Cai
android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆角矩形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap ...
- Android自定义圆角矩形图片ImageView
//自定义的圆形的ImageView类的实现代码如下:package com.xc.xcskin.view;import android.content.Context; import android ...
- 【Android开发】自定义圆角button样式
[Android开发]自定义圆角button样式 结果图 步骤 在res/drawable中新建一个drawable文件,自定义命名为btu.xml; 在btu.xml中设置圆角大小和填充颜色,代码如 ...
- 自定义圆角矩形图片/圆形图片
图片的圆形/圆角矩形的处理方式有很多,网上也有很多例子,最近项目比较清闲,就试着自己写了一个通用的图片处理,可以根据参数的不同自动生成原型图片或者圆角矩形图片的自定义view大致的效果如下图,两个vi ...
- android 使用shape自定义圆角矩形
今天项目中需要用到圆角矩形边框,就自己定义了一个,虽然很简单,但也记录一下. 在eclipse中新建shape文件步骤: 1.选中res下面的drawable目录,点击鼠标右键New->Andr ...
- Android自定义圆角圆形图片
转载请注明出处:http://blog.csdn.net/binbinqq86/article/details/79463977 说起Android里面的自定义圆角圆形图片,已经算是老生常谈的话题了, ...
- 在Android中绘制圆角矩形图片
圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,下面在Android中实现将普通的矩形图片绘制成圆角矩形. 先来看一下普通矩形图片的显示,代码很简单,从r ...
- Android中绘制圆角矩形图片及任意形状图片
转自http://blog.csdn.net/silangquan/article/details/8056583 圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,因为 ...
- Glide加载常用类型图片(带白色边框的圆形图、圆角矩形图片、圆形图片)
一:依赖包: Glide_github implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com. ...
最新文章
- 全国大学生智能汽车竞赛获奖证书文字
- Ext4 MVC CRUD操作
- rs 实用工具 (rs.exe) (SSRS)SQL server report service
- rabbitmq java 应用实例
- Android中SlidingDrawer开发报错You need to use a Theme.AppCompat theme (or descendant) with this activity.
- 【知识连载】 如何用钉钉宜搭制定企业疫情防控数字化管理方案
- ES11新特性_动态import---JavaScript_ECMAScript_ES6-ES11新特性工作笔记065
- 何时弃用 MongoDB?| 技术头条
- python中csv库写入表头_python的pandas工具包,保存.csv文件时不要表头的实例
- 加州出台严格无人车路测新政:要求各公司尽快申请部署许可
- RC952-FXE1-BL用户使用手册(存档)
- 主要厂商在大数据领域的布局状况
- EPUB电子书专用阅读软件
- H12-211数通HCNA题库解析(二)
- 浏览器HTML5 写入文件
- 《Nature》《Science》封面发表的AI相关文章
- 手机参数中的4+64G到底是什么?
- KVC原理分析及应用
- 微服系列之Feign使用HttpClient和OkHttp网络请求框架
- 【论文翻译】UniT: Unified Knowledge Transfer for Any-Shot Object Detection and Segmentation