首页 编程设计Android 正文

安卓 Shape 标签(简单图形绘制)

云水 Android 2020-10-15 14:49:19 731 0 Shape

Shape 是安卓 xml 资源文件里的一种常用标签,其文件通常存放于 drawable 下。通常用来绘制一些简单的背景图片:线,矩形,圆,圆环。还带有描边,圆角,颜色渐变的功能。
  一个简单的带圆角的 Shape 如下:


<TextView
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:layout_margin="10dp"
        android:background="@drawable/shape_rectangle"
        android:layout_gravity="center_horizontal"
        android:gravity="center"
        android:text="矩形" />
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >
    <!-- 填充的颜色-->
    <solid android:color="#f2eeee" />
    <!-- 设置按钮的四个角为弧形 -->
    <!-- android:radius 弧形的半径 -->
    <corners android:radius="2dp" />
    <!-- 描边-->
    <stroke
        android:width="1dp"
        android:color="#df1f1f" />
</shape>

在这里插入图片描述


一个简单的例子如上,现在我们看一下 shape 标签里的一些常用的重要的属性

  • android:shape
    有四个值,用来指定绘制的形状。
    line:线
    rectangle:矩形
    oval:圆形
    ring:圆环

除圆环外有这一个标签就够了,但如果是圆环,则还有一些其他的属性需要设置。

  • android:innerRadius :内环的半径

  • android:thickness : 环的厚度

  • android:innerRadiusRatio : 浮点型,以环的宽度比率来表示内环的半径,宽度/半径

  • android:thicknessRatio : 浮点型,以环的宽度比率来表示环的厚度,厚度/半径

上述标签,
android:innerRadius 、 android:thickness
  这一组好理解,直接通过数值来指定圆环的半径及厚度。
android:innerRadiusRatio 、android:thicknessRatio
  这一组则是比例值来设置圆环的半径及厚度。
  例如 android:innerRadiusRatio=“1” 那么 表示 宽度/半径=1 即半径等于宽度。
补充,
android:useLevel
  如果为true,则可在LevelListDrawable中使用。有一次在使用时未设置这个值为true,圆环没有正常显示,虽然不清楚具体含义,但也明白了,需要设置这个值。

这里是属性,我们再看一下会用到的标签:

  • solid 标签(填充色)
    一个属性值,指定填充的颜色。

<!-- 填充的颜色-->
<solid android:color="@color/colorAccent" />
  • corners 标签(圆角)
    用于设置矩形四个角的弧度

 <!-- 设置按钮的四个角为弧形 -->
    <!-- android:radius 弧形的半径 -->
    <corners android:radius="2dp" />
  • stroke 标签(描边)
    width 指定图像描边宽度
    color 指定描边颜色

<!-- 描边-->
    <stroke
        android:width="1dp"
        android:color="#df1f1f" />
  • size 标签 (宽高)
    优先级低于控件设置的宽高,当外部控件设置宽高为 wrap_content 时生效。

<size
        android:width="50dp"
        android:height="50dp" />
  • padding 标签(内边距)
    优先级低于控件设置的内边距,效果与控件中设置内边距一致

 <!--内边距-->
    <padding
        android:left="4dp"
        android:bottom="4dp"
        android:right="4dp"
        android:top="4dp"
        />
  • gradient 标签(颜色渐变)
      定义了图形的渐变色,下面介绍几个属性标签 :
        1、android:type : 渐变类型,值有三个,默认值是linear。
           linear —— 线性渐变;
           radial —— 放射性渐变;
           sweep —— 扫描式渐变。
        2、android:angle : 渐变的角度,值必须是45的倍数。
        3、android:gradientRadius : 渐变的半径,只有当渐变类型为radial时才能使用。
        4、android:centerX 和 android:centerY : 渐变中心X和渐变中心Y的相对位置,值为0~1。
        5、android:startColor、android:centerColor 和 android:endColor : 定义渐变颜色。
    一些效果图如下:

Alt


参考文章:Android开发——使用xml文件定义一个 drawable.

Demo查看:gitHup.


版权声明

1.本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2.本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3.若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
4.若内容涉及侵权或违法信息,请联系本站管理员进行下架处理,邮箱ganice520@163.com(本站不支持其他投诉反馈渠道,谢谢合作)

本文链接:http://apod.cc/index.php/post/491.html

发表评论

评论列表(0人评论 , 731人围观)
☹还没有评论,来说两句吧...