Shape与DrawableCompat
2016-05-02 22:10
232 查看
Shape基础
在定义ShapeDrawable时,需要传入一个Shape对象。它代表着一个具体的形状。其类结构图如下:其中倒数第二个OvalShadow是CircleImageView中的内部类,外部无法使用。
PathShape
根据一个Path路径创建一个Shape。如下:Path path = new Path();//创建Path path.moveTo(10, 10); path.lineTo(70, 70); path.lineTo(30, 20); path.close(); PathShape shape = new PathShape(path, 100, 100);//创建PathShape ShapeDrawable drawable = new ShapeDrawable(shape);//创建ShapeDrawable Drawable wrap = DrawableCompat.wrap(drawable.mutate()); wrap.setBounds(0, 0, getWidth(), getHeight());//一定要设置bounds,否则不显示 DrawableCompat.setTint(wrap,Color.GREEN);//设置该Drawable显示的颜色 drawable.draw(canvas);
RectShape
矩形。直接new一个对象传到ShapeDrawable中当参数即可。想控件显示样式,可通过Drawable#getPaint()获取Paint对象,而且设置即可。OvalShape
椭圆。其椭圆为由setBounds()指定的内接椭圆。ArcShape
椭圆的一部分。该椭圆是通过setBounds()定义的内接椭圆。RoundRectShape
圆角矩形。第一个参数为圆角的半径。注:该圆角为某个椭圆的一部分,而椭圆的长短半轴由第一个参数中相应的位置指定。
第二个参数为内矩形与外矩形各边的距离。
第三个参数为内矩形的圆角半径。与第一个参数一样。如下:
RoundRectShape shape = new RoundRectShape(new float[]{10, 20, 30, 40, 10, 20, 30, 40}, new RectF(30,30,30,30), new float[]{ 30, 40, 10, 20, 30,10, 20, 40}); ShapeDrawable drawable = new ShapeDrawable(shape);
效果图如下,其中中间的空白区域为内矩形,红色的厚度为第二个参数指定的。
DrawableCompat
v4包中提供的一个Drawable的兼容类。主要方法有:wrap():代理一个drawable对象,后继的操作应该是该方法的返回值。示例如PathShape的例子。
setTint():设置当前drawable的颜色。
相关文章推荐
- 1、变量提升
- fdisk(分区管理)
- JavaScript选项卡/页签/Tab的实现
- Public and Private Interfaces in ruby
- 字符串压缩
- 自定义FragmentTabHost中点击事件
- 递归与递推 - 青蛙过河
- jmeter笔记1
- 冲刺——第七天
- Public and Private Interfaces in ruby
- 理解GBDT算法(三)——基于梯度的版本
- 深入理解:overflow:hidden——溢出,坍塌,清除浮动
- 面向对象
- [转载]50个Demo展示HTML5无穷的魅力
- 菜逼的Unity学习笔记(二)
- 第6周 C语言及程序设计提高例程-22 用指针法访问数组元素
- 数据分析与挖掘 - R语言:K-means聚类算法
- 阿里云X-Forwarded-For 发现tomcat记录的日志全部来自于SLB转发的IP地址,不能获取到请求的真实IP。 - Draco - 博客频道 - CSDN.NET
- Linux系统服务
- 火车头采集器 截取字符串 正则表达式