Shape Drawable解析

原创 2015年11月19日 17:11:56

shape主要有四种,分别为矩形,椭圆形,线条,环。

android:shape=["rectangle" | "oval" | "line" | "ring"] >

标签介绍

在example.xml所有标签中,以下标签只属于ring

属性 说明
android:innerRadius 内圈半径
android:innerRadiusRatio 可以根据它得出环的内圈半径,公式为innerRadius=width/innerRadiusRatio
android:thickness 环的厚度
android:thicknessRatio 可以根据它得出环的厚度,公式为thickness=width/thicknessRatio
android:useLevel 如果当做是LevelListDrawable使用时值为true,否则为false.

接下来介绍其他的标签及属性

<corners
        android:radius="integer"
        android:topLeftRadius="integer"
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />
属性 说明
android:radius 所有圆角半径
android:topLeftRadius 左上角圆角半径
android:topRightRadius 右上角圆角半径
android:bottomLeftRadius 左下角圆角半径
android:bottomRightRadius 右下角圆角半径

<gradient
        android:angle="integer"
        android:centerX="integer"
        android:centerY="integer"
        android:centerColor="integer"
        android:endColor="color"
        android:gradientRadius="integer"
        android:startColor="color"
        android:type=["linear" | "radial" | "sweep"]
        android:useLevel=["true" | "false"] />
属性 说明
android:angle 颜色渐变方向,0为从左向右,90为从下到上(逆时针方向变化)
android:centerX 水平方向渐变中间颜色所在位置
android:centerY 垂直方向渐变中间颜色所在位置
android:centerColor 颜色渐变开始到结束中间颜色值
android:endColor 渐变结束的颜色值
android:gradientRadius 颜色渐变半径,只有android:type=”radial”才可以使用
android:startColor 渐变开始的颜色值
android:type=[“linear”,”radial”,”sweep”] 渐变的方式,分为线性、放射、扫描三种。
android:useLevel=[“true”,”false”] 是否被当作LevelListDrawable

<size
        android:width="integer"
        android:height="integer" />
属性 说明
android:width shap的宽度设置
android:height shape的高度设置

<solid
        android:color="color" />
属性 说明
android:color shape颜色值

 <stroke
        android:width="integer"
        android:color="color"
        android:dashWidth="integer"
        android:dashGap="integer" />
属性 说明
android:width 划线的宽度(粗细)
android:color 划线的颜色
android:dashWidth 破折线的长度
android:dashGap 破折线之间的空隙长度

注意:
1. shape = “line”时,padding标签中的android:left,android:right会失效。
2. 使用shape=”line”绘制虚线,由于android4.0默认打开了自动加速,会导致绘制失效,显示实线。

解决办法就是关闭自动加速。一种方式为在AndroidManifest.xml中Activity标签中添加 android:hardwareAccelerated=”false”一种在java代码中调用view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);取消硬件加速导致的新问题,在使用过程中发现自定义样式的progressdialog显示会变形。

以下是Android开发文档中的内容


Shape Drawable

This is a generic shape defined in XML.

file location:
res/drawable/filename.xml
The filename is used as the resource ID.
compiled resource datatype:
Resource pointer to a GradientDrawable.
resource reference:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
syntax:
<?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="integer"
        android:centerY="integer"
        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>
elements:
<shape>
The shape drawable. This must be the root element.

attributes:

xmlns:android
String. Required. Defines the XML namespace, which must be "http://schemas.android.com/apk/res/android".
android:shape
Keyword. Defines the type of shape. Valid values are:
ValueDesciption
"rectangle" A rectangle that fills the containing View. This is the default shape.
"oval" An oval shape that fits the dimensions of the containing View.
"line" A horizontal line that spans the width of the containing View. This shape requires the <stroke> element to define the width of the line.
"ring" A ring shape.

The following attributes are used only when android:shape="ring":

android:innerRadius
Dimension. The radius for the inner part of the ring (the hole in the middle), as a dimension value or dimension resource.
android:innerRadiusRatio
Float. The radius for the inner part of the ring, expressed as a ratio of the ring’s width. For instance, if android:innerRadiusRatio="5", then the inner radius equals the ring’s width divided by 5. This value is overridden by android:innerRadius. Default value is 9.
android:thickness
Dimension. The thickness of the ring, as a dimension value or dimension resource.
android:thicknessRatio
Float. The thickness of the ring, expressed as a ratio of the ring’s width. For instance, if android:thicknessRatio="2", then the thickness equals the ring’s width divided by 2. This value is overridden by android:innerRadius. Default value is 3.
android:useLevel
Boolean. “true” if this is used as a LevelListDrawable. This should normally be “false” or your shape may not appear.
<corners>
Creates rounded corners for the shape. Applies only when the shape is a rectangle.

attributes:

android:radius
Dimension. The radius for all corners, as a dimension value or dimension resource. This is overridden for each corner by the following attributes.
android:topLeftRadius
Dimension. The radius for the top-left corner, as a dimension value or dimension resource.
android:topRightRadius
Dimension. The radius for the top-right corner, as a dimension value or dimension resource.
android:bottomLeftRadius
Dimension. The radius for the bottom-left corner, as a dimension value or dimension resource.
android:bottomRightRadius
Dimension. The radius for the bottom-right corner, as a dimension value or dimension resource.

Note: Every corner must (initially) be provided a corner radius greater than 1, or else no corners are rounded. If you want specific corners to not be rounded, a work-around is to use android:radius to set a default corner radius greater than 1, but then override each and every corner with the values you really want, providing zero (“0dp”) where you don’t want rounded corners.

<gradient>
Specifies a gradient color for the shape.

attributes:

android:angle
Integer. The angle for the gradient, in degrees. 0 is left to right, 90 is bottom to top. It must be a multiple of 45. Default is 0.
android:centerX
Float. The relative X-position for the center of the gradient (0 - 1.0).
android:centerY
Float. The relative Y-position for the center of the gradient (0 - 1.0).
android:centerColor
Color. Optional color that comes between the start and end colors, as a hexadecimal value or color resource.
android:endColor
Color. The ending color, as a hexadecimal value or color resource.
android:gradientRadius
Float. The radius for the gradient. Only applied when android:type="radial".
android:startColor
Color. The starting color, as a hexadecimal value or color resource.
android:type
Keyword. The type of gradient pattern to apply. Valid values are:
ValueDescription
"linear" A linear gradient. This is the default.
"radial" A radial gradient. The start color is the center color.
"sweep" A sweeping line gradient.
android:useLevel
Boolean. “true” if this is used as a LevelListDrawable.
<padding>
Padding to apply to the containing View element (this pads the position of the View content, not the shape).

attributes:

android:left
Dimension. Left padding, as a dimension value or dimension resource.
android:top
Dimension. Top padding, as a dimension value or dimension resource.
android:right
Dimension. Right padding, as a dimension value or dimension resource.
android:bottom
Dimension. Bottom padding, as a dimension value or dimension resource.
<size>
The size of the shape.

attributes:

android:height
Dimension. The height of the shape, as a dimension value or dimension resource.
android:width
Dimension. The width of the shape, as a dimension value or dimension resource.

Note: The shape scales to the size of the container View proportionate to the dimensions defined here, by default. When you use the shape in an ImageView, you can restrict scaling by setting the android:scaleType to "center".

<solid>
A solid color to fill the shape.

attributes:

android:color
Color. The color to apply to the shape, as a hexadecimal value or color resource.
<stroke>
A stroke line for the shape.

attributes:

android:width
Dimension. The thickness of the line, as a dimension value or dimension resource.
android:color
Color. The color of the line, as a hexadecimal value or color resource.
android:dashGap
Dimension. The distance between line dashes, as a dimension value or dimension resource. Only valid if android:dashWidth is set.
android:dashWidth
Dimension. The size of each dash line, as a dimension value or dimension resource. Only valid if android:dashGap is set.


example:

XML file saved at res/drawable/gradient_box.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#FFFF0000"
        android:endColor="#80FF00FF"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>
<p>This layout XML applies the shape drawable to a View:</p>
<TextView
    android:background="@drawable/gradient_box"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />
<p>This application code gets the shape drawable and applies it to a View:</p>
Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box);

TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

drawable之shape的学习

  • 2017-07-05 11:09
  • 21.15MB
  • 下载

android xml shape drawable

Android学习之路------自定义drawable之shape属性

android shape drawable resources

Android UI美化之Shape Drawable的使用

想美化一下程序里的EditText,发现网上关于美化的文章较少,即使有也大多是直接翻译文档,索性一边研读一边写例子。 先看一下文档对Shape Drawable的描述: Shape Drawa...

Drawable 下xml设置bitmap、selector、shape

在android中描述 形容(加载处理)图片 是通过 Bitmap这个类来操作 <bitmap xmlns:android="http://schemas.android.c...

多个 Android Drawable shape 组合画田字格

Android Drawable Shape 组合画田字格 我们常用Android Drawable Shape来创建Android的背景、圆角边框、分隔线等图形。这样的教程网上有许多。象下面的 ...
  • do168
  • do168
  • 2016-07-11 13:35
  • 2540

Android xml中定义的shape与Drawable之间的关系

最近遇到一个项目,需要设置非常多不同颜色的小标签: 等等; 这种情况很多同学第一反应肯定是写xml来定义shape完成这样的样式; 可是他们没有想过,如果非常多的颜色的时候,那都要为每一份...

Android必知必会--使用shape制作drawable素材

前言最近看到朋友制作的Android APP使用了极少的图片,但是图形却极其丰富,问了之后得知是使用shape绘制的,有很多优点。 下面是我整理的一些素材:预览下面是图片预览:代码布局文件<Line...

shape drawable 总结

最近比较忙,没时间总结,今天抽空总结一下drawable,一个让我很纠结的问题(xml文件中定义)。          1.bitmap drawable,这个其实只要是研究会自定义view的就会发...

Android 资源之drawable下shape的使用...

提姆:我好想射点什么, biu。。。什么情况。。。 锤石:我说结束了,那就结束了 在开发过程中,很多情况下都会给view 添加背景而这个背景不仅仅是单纯的背景...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)