Android开发总结笔记 Drawable (上) 3-1
来源:互联网 发布:淘宝如何处理中差评 编辑:程序博客网 时间:2024/06/09 15:14
Android中的Drawable分为两种
一种是普通的图片资源,放到res/mipmap下的,
另外一种是xml形式的drawable资源,一般放到res/drawable下
下面就来看一下Android提供的13种Drawable
1.ColorDrawable
最简单且最常用的一种Drawable
可以通过Java代码新建一个,也可以通过xml文件配置,常用的就是在xml中设置,创建一个res/colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="normal_white">#FFFFFF</color>
<color name="normal_black">#000000</color>
<color name="dark_gray">#B3B3B3</color>
<color name="orange">#FF5000</color>
<color name="green">#5DC971</color>
<color name="divier_color">#F3F2F7</color>
<color name="light_blue">#5AD7FD</color>
<color name="dark_blue">#329DDF</color>
</resources>
可以通过@color获得对应的color值, 在Java中
int orange = getResourcecs().getColor(R.color.orange);
也可以使用系统的color,在xml中用@android:color/orange
view.setBackgroundColor(Color.BLUE);
//获取
int color = Resources.getSystem().getColor(android.R.color.holo.orange.light);
还能用argb值设置
Color.argb(a,r,g,b);//透明,红色,绿色,蓝色
2.NinePatchDrawable
也叫.9图,可以实现图片的拉伸自适应。
另外,9patch图必须放到drawable目录下。
具体怎么绘制9patch:链接
3.ShapeDrawable
定义形状的一个Drawable,百度了一下,发现这个Drawable有点奇怪,因为接下来要讲的一个GradientDrawable也是在同一个标签<shape>里面定义,这篇文章说了,<shape>标签实际上是属于GradientDrawable的,而ShapeDrawable只能通过Java代码画出来。。
4.GradientDrawable
名字上是渐变,但事实上还有很多可以配置的属性。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
</shape>
rectangle 矩阵,默认的shape
oval 椭圆
line 一条水平的直线。必须使用 <stroke> 元素来定义线的宽度
ring 圆环
下面的属性,只有android:shape被设置为ring的时候才能用,写在shape开标签里
android:innerRadius 内环的半径
android:innerRadiusRatio 内部环的比例,如果等于"5“那么内部半径等于环的宽度除以5,这个值会被android:innerRadius重写,默认值是9
android:thickness 环的宽度
android:thicknessRadio 厚度的比例,如果等于"2",那么厚度等于环的宽度除以2,这个值会被android:thickness重写默认值是3,
android:userLevel:如果用在LevelListDrawable里面,就是true,如果通常不出现则为false
<corner>
为shape创建圆角
注意:圆角半径都必须大于1,不然就没有圆角了
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"
android:radius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp" />
</shape>
<gradient>
创建渐变颜色
<gradient
android:angle="90" //渐变的角度,0代表LTR,90代表BTT,需为45的倍数,默认0
android:centerX="0.5" //渐变中心的相对X坐标,在0到0.1之间
android:centerY="0.5" //渐变中心的相对Y坐标,在0到0.1之间
android:centerColor="@color/green" //可选颜色值,基于startColor和EndColor之间
android:endColor="@color/dark_blue" //结束的颜色
android:startColor="@color/normal_black" //开始的颜色
android:gradientRadius="5dp" //渐变的半径,android:type设置为radial时用
android:type="linear" //渐变的模式,默认linear线性,radial辐射,sweep扫描线
android:useLevel="true"/> //如果在LeveListDrawable中使用为true
<padding>
内容与视图边界的距离
<padding
android:left="1dp"
android:right="1dp"
android:top="1dp"
android:bottom="1dp"/>
<size>
这个shape的大小
<size
android:width="50dp"
android:height="50dp" />
默认情况下,这个shape会缩放到和他所在容器大小成正比,当你在一个ImageView中使用这个shape.可以用android:scaleType="center"来限制这种缩放
<solid>
填充色
<solid
android:color="@color/normal_black"/>
<stroke>
描边色,当android:shape="line"的时候,必须设置该元素
<stroke
android:width="2dp" //表示描边的宽度
android:color="@color/dark_blue" //表示描边的颜色
android:dashGap="10dp"//表示描边为虚线时,虚线之间的间隔
android:dashWidth="2dp"/> //表示描边为虚线时,虚线宽度
5.BitmapDrawable
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@mipmap/ic_launcher" //drawable资源来源
android:antialias="true" //是否开启抗锯齿
android:dither="true" //如果位图于屏幕的像素配置不同时,是否允许抖动。
android:filter="true"//是否允许对位图进行滤波,对位图进行收缩,或者延展使用滤波可以获得平滑的外观效果
android:gravity="bottom"
android:tileMode="clamp" //图片填充容器的模式,设置后gravity会被忽略,disabled平铺拉伸,clamp原图,repeat平铺,mirror镜像平铺
android:tint="@color/colorAccent" //着色颜色
android:alpha="20"
android:tileModeX="clamp"X方向的填充模式
android:tileModeY="clamp"Y方向的填充模式
android:mipMap="true" //是否使用mipmap渲染
android:tintMode="multiply"//着色模式,具体有六种,add,screem,src_over,src_in,multiple ,src_atop
android:autoMirrored="true"//是否需要镜像翻转
表示一个drawable嵌入到另外一个drawable内部,并且在内部留一些间距。表示两个drawable和容器之间的边距,当控件需要的边框比实际的边框小的时候比较适合使用insetDrawable
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@mipmap/ic_launcher"
android:inset="10dp"
android:insetBottom="10dp"
android:insetLeft="10dp"
android:insetRight="10dp"
android:insetTop="10dp">
</inset>
7.ClipDrawable
ClipDrawble可以对一个drawable进行剪切操作,可以控制drawable的剪切区域,以及相对于容器的对其方式,系统的进度条就是用这个来实现的,根据level值(0[不显示]~10000[完全显示])的大小决定剪切区域的大小,可以在Java代码中通过setLevel方法设置
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@mipmap/ic_launcher" //资源
android:clipOrientation="horizontal" //剪切方向
android:gravity="bottom"> //制定从哪个地方开始切
</clip>
top将这个对象放在容器的顶部,不改变其大小。当clipOrientation 是"vertical",裁剪发生在drawable的底部(bottom)
bottom将这个对象放在容器的底部,不改变其大小。当clipOrientation 是 "vertical",裁剪发生在drawable的顶部(top)
left将这个对象放在容器的左部,不改变其大小。当clipOrientation 是 "horizontal",裁剪发生在drawable的右边(right)。默认的是这种情况。
right将这个对象放在容器的右部,不改变其大小。当clipOrientation 是 "horizontal",裁剪发生在drawable的左边(left)。
center_vertical将对象放在垂直中间,不改变其大小。裁剪的情况和”center“一样。
fill_vertical垂直方向上不发生裁剪。(除非drawable的level是 0,才会不可见,表示全部裁剪完)
center_horizontal将对象放在水平中间,不改变其大小。裁剪的情况和”center“一样。
fill_horizontal水平方向上不发生裁剪。(除非drawable的level是 0,才会不可见,表示全部裁剪完)
center将这个对象放在水平垂直坐标的中间,不改变其大小。当clipOrientation 是 "horizontal"裁剪发生在左右。当clipOrientation是"vertical",裁剪发生在上下。
fill填充整个容器,不会发生裁剪。(除非drawable的level是 0,才会不可见,表示全部裁剪完)。
clip_vertical额外的选项,它能够把它的容器的上下边界,设置为子对象的上下边缘的裁剪边界。裁剪要基于对象垂直重力设置:如果重力设置为top,则裁剪下边,如果设置为bottom,则裁剪上边,否则则上下两边都要裁剪。
clip_horizontal:额外的选项,它能够把它的容器的左右边界,设置为子对象的左右边缘的裁剪边界。裁剪要基于对象垂直重力设置:如果重力设置为right,则裁剪左边,如果设置为left,则裁剪右边,否则则左右两边都要裁剪。
- Android开发总结笔记 Drawable (上) 3-1
- Android开发总结笔记 Drawable (下) 3-3
- Android开发总结笔记 Drawable (中) 3-2
- Android样式开发--drawable总结
- Android开发总结笔记 Btimap (上) 3-4
- Android开发总结笔记 Fragment(上) 1-2-11
- Android开发总结笔记 属性动画(上) 4-1
- Android开发笔记(七)初识Drawable
- Android开发笔记(九十五)自定义Drawable
- Android开发总结笔记 ListView(列表视图[上]) 1-3-1
- Android 开发艺术探索笔记 第六章 Android的Drawable
- android Drawable 学习总结
- Android Drawable总结
- android Drawable总结
- android drawable资源总结
- android drawable总结
- android Drawable总结
- android开发drawable-nodpi
- 【Java】HTTP Web调试工具Fiddler介绍和使用教程
- 小小了解一下NIO
- 设计模式——宏观总结(二)
- 关于QQ邮箱“命令顺序不正确。 服务器响应为:Error: need EHLO and AUTH first !”问题
- Lua 调用自定义C模块(练习)
- Android开发总结笔记 Drawable (上) 3-1
- 圆环进度条,动态递增数据
- tomcat在linux中的启动和查看相关信息
- iOS多线程GCD
- Linux 下 Qt Creator 的安装,并使用它开发你的第一个 Qt 项目全过程
- 蓝牙后台接收数据(BLE4.0)
- 数据结构课程设计——图书信息管理系统设计
- action使用addFieldError显示提示信息
- javascript核心概念