Android中shape自定义形状遇到问题
来源:互联网 发布:淘宝商品销量查询工具 编辑:程序博客网 时间:2024/06/01 08:34
可绘制对象资源
可绘制对象资源是一般概念,是指可在屏幕上绘制的图形,以及可以使用 getDrawable(int) 等 API 检索或者应用到具有 android:drawable 和 android:icon 等属性的其他 XML 资源的图形。共有多种不同类型的可绘制对象;
这里笔者要说的是形状可绘制对象,这是在XML中定义的一般形状。
语法:
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval" | "line" | "ring"] > <corners android:radius="integer" android:topLeftRadius="integer" android:topRightRadius="integer" android:bottomLeftRadius="integer" android:bottomRightRadius="integer" /> <gradient android:angle="integer" android:centerX="float" android:centerY="float" android:centerColor="integer" android:endColor="color" android:gradientRadius="integer" android:startColor="color" android:type=["linear" | "radial" | "sweep"] android:useLevel=["true" | "false"] /> <padding android:left="integer" android:top="integer" android:right="integer" android:bottom="integer" /> <size android:width="integer" android:height="integer" /> <solid android:color="color" /> <stroke android:width="integer" android:color="color" android:dashWidth="integer" android:dashGap="integer" /></shape>
元素: <shape>
:形状可绘制对象,必须是根元素;
属性:
xmlns:android 字符串;必备,定义 XML 命名空间,且必须是”http://schemas.android.com/apk/res/android“。
android:shape 关键字;定义形状的类型,有效值为:
rectangle:填充包含视图的矩形,默认形状。
oval:适应包含视图尺寸的椭圆形状。
line:跨越包含视图宽度的水平线。此形状需要<stroke>
元素定义线宽。
ring:环形;
仅当 android:shape=”ring” 如下时才使用以下属性:
android:innerRadius 尺寸;环内部(中间的孔)的半径,以尺寸值或尺寸资源表示。
android:innerRadiusRatio 浮点型;环内部的半径,以环宽度的比率表示。
android:thickness 尺寸;环的厚度,以尺寸值或尺寸资源表示。
android:thicknessRatio 浮点型;环的厚度,表示为环宽度的比率。
android:useLevel 布尔值;如果这用作 LevelListDrawable,则此值为“true”。这通常应为“false”,否则形状不会显示。
<corners>
:为形状产生圆角,仅当形状为矩形时适用;
属性:
android:radius 尺寸;所有角的半径,以尺寸值或尺寸资源表示。对于每个角,这会被以下属性覆盖。
android:topLeftRadius 尺寸;左上角的半径,以尺寸值或尺寸资源表示。
android:topRightRadius 尺寸;右上角的半径,以尺寸值或尺寸资源表示。
android:bottomLeftRadius 尺寸;左下角的半径,以尺寸值或尺寸资源表示。
android:bottomRightRadius 尺寸;右下角的半径,以尺寸值或尺寸资源表示。
注意:(最初)必须为每个角提供大于 1 的角半径,否则无法产生圆角。如果希望特定角不要倒圆角,解决方法是
使用 android:radius 设置大于 1 的默认角半径,然后使用实际所需的值替换每个角,为不希望倒圆角的角提供零(“0dp”)。
<gradient>
:指定形状的渐变颜色;
属性:
android:angle 整型;渐变的角度(度)。0 为从左到右,90 为从上到上。必须是 45 的倍数。默认值为 0。
android:centerX 浮点型;渐变中心的相对 X 轴位置 (0 - 1.0)。
android:centerY 浮点型;渐变中心的相对 Y 轴位置 (0 - 1.0)。
android:centerColor 颜色;起始颜色与结束颜色之间的可选颜色,以十六进制值或颜色资源表示。
android:endColor 颜色;结束颜色,表示为十六进制值或颜色资源。
android:gradientRadius 浮点型;渐变的半径。仅在 android:type=”radial” 时适用。
android:startColor 颜色;起始颜色,表示为十六进制值或颜色资源。
android:type 关键字;要应用的渐变图案的类型。
有效值为:
linear:线性渐变;这是默认值;
radial:径向渐变;起始颜色为中心颜色;
sweep:流线型渐变;
android:useLevel 布尔值;如果这用作 LevelListDrawable,则此值为“true”。
<padding>
:要应用到包含视图元素的内边距(这会填充视图内容的位置,而非形状)。
属性:
android:left 尺寸;左内边距,表示为尺寸值或尺寸资源;
android:top 尺寸;上内边距,表示为尺寸值或尺寸资源;
android:right 尺寸;右内边距,表示为尺寸值或尺寸资源;
android:bottom 尺寸;下内边距,表示为尺寸值或尺寸资源;
<size>
:形状的大小。
属性:
android:height 尺寸;形状的高度,表示为尺寸值或尺寸资源;
android:width 尺寸;形状的宽度,表示为尺寸值或尺寸资源;
<solid>
:用于填充形状的纯色。
属性:
android:color 颜色;应用于形状的颜色,以十六进制值或颜色资源表示;
<stroke>
:形状的笔划中线。
属性:
android:width 尺寸;线宽,以尺寸值或尺寸资源表示;
android:color 颜色;线的颜色,表示为十六进制值或颜色资源;
android:dashGap 尺寸;短划线的间距,以尺寸值或尺寸资源表示。仅在设置了 android:dashWidth 时有效;
android:dashWidth 尺寸;每个短划线的大小,以尺寸值或尺寸资源表示。仅在设置了 android:dashGap 时有效;
笔者代码所犯的错误如下:
reset_setup_back_ground.xml:
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!--android:angle是渐变角度,必须为45的整数倍。--> <!--android:angle="100" 这是错误的写法--> <gradient android:angle="45" android:endColor="#ffffff" android:startColor="#000000" /> <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" /> <corners android:radius="5dp" /></shape>
reset_setup_background.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <!--自定义的背景图片--> <item android:state_pressed="true" android:drawable="@drawable/reset_setup_back_ground" /> <item android:drawable="@android:color/transparent" /></selector>
<TextView android:id="@+id/reset_setup_text_view" android:background="@drawable/reset_setup_background" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="重新进入设置向导" android:textSize="18sp" android:textColor="#000000"/>
错误信息如下: FATAL EXCEPTION: mainProcess: neu.edu.cn.mobilesafer, PID: 16032java.lang.RuntimeException: Unable to start activity ComponentInfo{neu.edu.cn.mobilesafer/neu.edu.cn.mobilesafer.activity.SetupOverActivity}: android.view.InflateException: Binary XML file line #65: Error inflating class TextView
......省略
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #6 tag requires ‘angle’ attribute to be a multiple of 45
没有按照示例,也没有仔细看官方文档 ,犯下这个小错误,不过看错误提示,还是很容易定位到,错误在哪里的,有错误不怕,慢慢定位,慢慢排除,还有就是,如果不是很确定,还是要认真看官方文档的,仔细看一下里面的要求;
参考文档:Google官方文档
- Android中shape自定义形状遇到问题
- Android UI---自定义形状shape
- Android UI---自定义形状shape
- Android UI---自定义形状shape
- Android UI---用xml自定义形状shape
- Android中自定义shape
- Android Shape 形状
- Android Shape 形状
- Android shape属性详解(自定义图片和形状)
- 安卓自定义形状shape
- Shape 自定义控件的形状
- Android中自定义Shape小结
- Android中使用shape来实现控件形状的设置
- Android中自定义TextView的形状
- Android开发中自定义按钮的形状
- 自定义Button形状(圆形、椭圆) shape
- 18 UI美化自定义形状shape
- android中使用shape自定义图形
- 用FFmpeg玩转Android视频录制与压缩
- 203. Remove Linked List Elements(链表)
- 每天一个linux命令(31): /etc/group文件详解
- [RK3288][Android7.1.2] 预装APK
- Hello 移动Web--pixel像素基础
- Android中shape自定义形状遇到问题
- win10设置环境变量,命令行下输入python,pip可运行
- java服务端–微信APP支付接口
- C++ 设计模式
- HDU
- 2018网易校招编程题(4)操作序列
- 访问我的常用网站
- 表单获取val值
- 直接插入排序(php代码实现)