Android 使用自定义Drawable 设置圆角矩形或者圆形图片
转自 Android Drawable 那些不为人知的高效用法
本文出自:【张鸿洋的博客】 http://blog.csdn.net/lmj623565791/article/details/43752383
调用方式:
imageView.setImageDrawable(new RoundImageDrawable(BitmapFactory.decodeResource(getResources(), R.mipmap.login)));
RoundImageDrawable.java
package de.bvb.rxdemo.widget; import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.RectF;
import android.graphics.Shader;
import android.graphics.drawable.Drawable; /**
* 设置圆形图片,调用方式为为:
* imageView.setImageDrawable(new RoundImageDrawable(BitmapFactory.decodeResource(getResources(), R.mipmap.login)));
*/
public class RoundImageDrawable extends Drawable {
private Bitmap bitmap;
private Paint paint;
private RectF rectF; public RoundImageDrawable(Bitmap bitmap) {
this.bitmap = bitmap;
paint = new Paint();
paint.setAntiAlias(true);
paint.setDither(true);
paint.setShader(new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));
} @Override
public void setBounds(int left, int top, int right, int bottom) {
super.setBounds(left, top, right, bottom);
rectF = new RectF(left, top, right, bottom);
} @Override
public void draw(Canvas canvas) {
canvas.drawRoundRect(rectF, 40, 40, paint);
} @Override
public int getIntrinsicHeight() {
return bitmap.getHeight();
} @Override
public int getIntrinsicWidth() {
return bitmap.getWidth();
} @Override
public void setAlpha(int alpha) {
paint.setAlpha(alpha);
} @Override
public void setColorFilter(ColorFilter colorFilter) {
paint.setColorFilter(colorFilter);
} @Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
}
CircleImageDrawable.java
package de.bvb.rxdemo.widget; import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Shader;
import android.graphics.drawable.Drawable; /**
* 设置圆形图片,调用方式为为:
* imageView.setImageDrawable(new CircleImageDrawable(BitmapFactory.decodeResource(getResources(), R.mipmap.login)));
*/
public class CircleImageDrawable extends Drawable { private Bitmap bitmap;
private Paint paint;
private int radius; public CircleImageDrawable(Bitmap bitmap) {
this.bitmap = bitmap;
paint = new Paint();
paint.setAntiAlias(true);
paint.setDither(true);
paint.setShader(new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));
radius = Math.min(bitmap.getWidth(), bitmap.getHeight()) / 2;
} @Override
public int getIntrinsicWidth() {
return radius * 2;
} @Override
public int getIntrinsicHeight() {
return radius * 2;
} @Override
public void draw(Canvas canvas) {
canvas.drawCircle(radius, radius, radius, paint);
} @Override
public void setAlpha(int alpha) {
paint.setAlpha(alpha);
} @Override
public void setColorFilter(ColorFilter colorFilter) {
paint.setColorFilter(colorFilter);
} @Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
}
Android 使用自定义Drawable 设置圆角矩形或者圆形图片的更多相关文章
- android 利用Bitmap获取圆角矩形、圆形图片
1.在很多时候,我们要显示图片资源,需要将他的资源显示为圆角的:示例源码如下: public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,fl ...
- iOS设置圆角矩形和阴影效果
1.设置圆角矩形 //设置dropview属性 _dropView.backgroundColor=[[UIColor whiteColor] colorWithAlphaComponent:0.8] ...
- Android 中shape的使用(圆角矩形)
一.在res/drawable文件夹下创建一个名为gradient_box的xml文件: <?xml version="1.0" encoding="utf-8&q ...
- 详解使用CSS3绘制矩形、圆角矩形、圆形、椭圆形、三角形、弧
1.矩形 绘制矩形应该是最简单的了,直接设置div的宽和高,填充颜色,效果就出来了. 2.圆角矩形 绘制圆角矩形也很简单,在1的基础上,在使用css3的border-radius,即可. 3.圆 根据 ...
- android通过Canvas和Paint截取无锯齿圆形图片
一个通过Canvas和Paint截取无锯齿圆形图片. /** * 根据原图和变长绘制圆形图片 * * @param source * @param min * @return */ public st ...
- Android 利用Sharp样式设置文本框EditText圆角形状
1.首先新建样式文件editsharp.xml: <?xml version="1.0" encoding="utf-8"?> <shape ...
- Android中的Drawable资源
在Android应用中,常常会用到Drawable资源,比如图片资源等,在Android开发中我们是用Drawable类来Drawable类型资源的. Drawable资源一般存储在应用程序目录的\r ...
- android自定义控件,动态设置Button的样式
原文 http://www.cnblogs.com/landptf/p/4562203.html 今天来看一个通过重写Button来动态实现一些效果,如圆角矩形.圆形.按下改变字体,改变背景色,改变 ...
- Android圆形图片不求人,自定义View实现(BitmapShader使用)
在很多APP当中,圆形的图片是必不可少的元素,美观大方.本文将带领读者去实现一个圆形图片自定View,力求只用一个Java类来完成这件事情. 一.先上效果图 二.实现思路 在定义View 的onMea ...
随机推荐
- python wmi远程数据获取
- android.mk-include
-- include $(BUILD_STATIC_LIBRARY)表示编译成静态库 include $(BUILD_SHARED_LIBRARY)表示编译成动态库. include $(BUILD_ ...
- Git<一> 手工编辑冲突
一:背景 Neo君之前在写东西时,都是自己负责各自的模块,没有出现代码拉下来冲突的情况.最近Neo君在搞一搞前端的东东,跟同事功能有些冲突,所以就难免会冲突. 所以简单总结下,这次针对的情况是不同的用 ...
- 常用学习&面试资源网站
https://github.com/MZCretin/RollToolsApi 开源通用API https://github.com/SenhLinsh/Android-Hot-Libraries ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_10-SpringSecurityOauth2研究-校验令牌&刷新令牌
3.5校验令牌 Spring Security Oauth2提供校验令牌的端点,如下: Get: http://localhost:40400/auth/oauth/check_token?token ...
- 终极解决办法rvct Cannot obtain license for Compiler (feature compiler) with license version >= 3.1
参考:https://blog.csdn.net/nic_r/article/details/7458038 ARM C/C++ Compiler, RVCT4. [Build ] armcc : e ...
- Java如何获取ResultSet结果中的每一列的数据类型
示例代码片段: ResultSet resultSet = statement.executeQuery(sql); ResultSetMetaData metaData = resultSet.ge ...
- Docker镜像的构建(五)
目录 构建镜像 1.使用 commit 命令构建 1.1 运行一个要进行修改的容器 1.2 安装 Apache 软件包 1.3 提交定制容器 2.使用 Dockerfile 构建 2.1 我们的第一个 ...
- 当后端返回的数据是以属性做开头,怎么用length取值
在我们前端开发中,一般需要的数据是分条的如 [{},{},{},{}] ,这样的数据方便我们用length取值,尤其是在表格中.在控制台看的时候能轻易的看出1 2 3 4条,但有时候后台返回的数据不是 ...
- php open_basedir的使用与性能分析
php open_basedir的使用与性能分析 使用方法 <pre>/*限制打开的目录*/ini_set('open_basedir', __DIR__.'/');</pre> ...