Android圆角图片封装类
来源:互联网 发布:网络安全教育论文 编辑:程序博客网 时间:2024/06/15 06:03
你还在为处理圆角而在项目里到处copy 处理代码吗?你还在不停动态生成圆角bitmap后再使用吗?no,代码里不需要知道这些,
如果一个view需要圆角,xml直接使用下面的RoundImageView即可,
代码逻辑根本不需要任何干涉,代码中你依然当做这个是一个普通的ImageView完全没有问题,这就是关键。
而且省去了bitmap的动态生成,避免了内存开销,跟界面卡顿(原始处理圆角的方法,再处理图片比较多的时候,如果不用单独thread性能并不好)
注:如果你想让一个布局you圆角效果也是完全做到的,用这个思路即可,或者@我qq群:37493362,呼呼
如果一个view需要圆角,xml直接使用下面的RoundImageView即可,
代码逻辑根本不需要任何干涉,代码中你依然当做这个是一个普通的ImageView完全没有问题,这就是关键。
而且省去了bitmap的动态生成,避免了内存开销,跟界面卡顿(原始处理圆角的方法,再处理图片比较多的时候,如果不用单独thread性能并不好)
注:如果你想让一个布局you圆角效果也是完全做到的,用这个思路即可,或者@我qq群:37493362,呼呼
标签: Android
[1].[文件] RoundImageView.java ~ 2KB 下载(107) 跳至 [1]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package
com.phodev.andtools.widget;
import
android.content.Context;
import
android.graphics.Canvas;
import
android.graphics.Color;
import
android.graphics.Paint;
import
android.graphics.PorterDuff;
import
android.graphics.PorterDuffXfermode;
import
android.graphics.RectF;
import
android.util.AttributeSet;
import
android.widget.ImageView;
/**
* 圆角ImageView
*
* @author skg
*
*/
public
class
RoundImageView
extends
ImageView {
public
RoundImageView(Context context, AttributeSet attrs) {
super
(context, attrs);
init();
}
public
RoundImageView(Context context) {
super
(context);
init();
}
private
final
RectF roundRect =
new
RectF();
private
float
rect_adius =
6
;
private
final
Paint maskPaint =
new
Paint();
private
final
Paint zonePaint =
new
Paint();
private
void
init() {
maskPaint.setAntiAlias(
true
);
maskPaint.setXfermode(
new
PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
//
zonePaint.setAntiAlias(
true
);
zonePaint.setColor(Color.WHITE);
//
float
density = getResources().getDisplayMetrics().density;
rect_adius = rect_adius * density;
}
public
void
setRectAdius(
float
adius) {
rect_adius = adius;
invalidate();
}
@Override
protected
void
onLayout(
boolean
changed,
int
left,
int
top,
int
right,
int
bottom) {
super
.onLayout(changed, left, top, right, bottom);
int
w = getWidth();
int
h = getHeight();
roundRect.set(
0
,
0
, w, h);
}
@Override
public
void
draw(Canvas canvas) {
canvas.saveLayer(roundRect, zonePaint, Canvas.ALL_SAVE_FLAG);
canvas.drawRoundRect(roundRect, rect_adius, rect_adius, zonePaint);
//
canvas.saveLayer(roundRect, maskPaint, Canvas.ALL_SAVE_FLAG);
super
.draw(canvas);
canvas.restore();
}
}
0 0
- Android圆角图片封装类
- Android圆角图片封装类
- Android圆角图片封装类
- Android圆角图片封装类(直接使用)
- android 圆角图片的实现和封装
- Android 图片处理工具类封装
- Android 图片处理工具类封装2
- 图片圆角处理封装
- 图片圆角处理封装
- 封装Android加载网络图片
- 84 Android Hnadler 封装下载图片工具类
- Android 图片三级缓存机制工具类封装
- Android 图片三级缓存机制工具类封装
- Android 图片三级缓存机制工具类封装
- Android 图片三级缓存机制工具类封装
- Android图片加载库的封装实战
- Android图片加载库的封装实战
- php封装图片上传类
- 查看linux系统的当前版本
- JavaWeb如何将后台数据传递到前台页面HttpServletResponse和HttpServletRequest
- 使用Linux strace命令来跟踪 bdump目录的x权限丢失时sqlplus / as sysdba 的输出
- ModelAndView 应该如何使用(SpringMVC)
- 外文博客
- Android圆角图片封装类
- 行政区域区域码操作
- 简历技巧
- ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
- 快速查找list中的大多数元素(数目超过一半的元素)
- spark 操作 hbase
- c++ 面向对象编程 成员函数调用
- mysql日志 一
- 两数求和