Android shape文件属性详解

Android开发中难免用到自定义的资源文件,其中很重要的便是Shape文件,Shape文件可以用来定义任意形状,常常用来做背景色等。

Shape文件实际上也是.xml,其根元素是shape。下面将详细介绍Shape文件中各种元素和属性的含义。

根元素<shape>指定基本形状

shape属性指定基本形状,允许的值有:rectangle(矩形),oval(椭圆),line(线条), ring(环)。默认的值是矩形,下面的代码定义了一个矩形:

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
    xmlns:android="http://schemas.android.com/apk/res/android" >
</shape>

visible属性设置形状是否初始可见。

仅当形状定义为ring时,下列属性才可用:

  • innerRadius指定内环(即中空的洞)的半径,接收Dimension类型。
  • innerRadiusRatio为浮点型,以环的宽度比率来表示内环的半径,例如,如果android:innerRadiusRatio,表示内环半径等于环的宽度除以5,这个值是可以被覆盖的,默认为9.
  • thickness指定环的厚度,类型为Dimension。
  • thicknessRatio也为浮点型,以环的宽度比率来表示环的厚度,例如,如果该值为"2",那么环的厚度就等于环的宽度除以2。这个值是可以被android:thickness覆盖的,默认值是3.
  • 关于useLevel请参加下节<gradient>。

<gradient>设置渐变填充

startcolor、centercolor、endcolor设置渐变的起止色,即允许设置两次渐变。

angle设置渐变的角度,仅当渐变类型为线性渐变时有效。默认0值为水平向右,其他角度以逆时针旋转为准,例如设置为90则是自下而上,设置为270自上而下,以此类推。注意:必须是45的倍数。

type设置渐变类型,默认是linear(线性渐变),如果设置为radial(放射/径向渐变),则必须同时设置gradientRadius属性,该属性指定渐变半径,注意:这个半径并不是Dimension,不接受dp等单位,只能设置数字。此外还可以设置一个比较有意思的方式:sweep(扫描渐变)。三种渐变方式的效果见下图。

centerX、centerY两个属性用于设置渐变的中心点位置,仅当渐变类型为放射渐变时有效,类型为分数或小数,不接受Dimension。默认值是0.5,有效值是0.0~1.0,超出该范围后会看不出渐变效果。

useLevel属性通常不使用。该属性用于指定是否将该shape当成一个LevelListDrawable来使用,默认值为false。

下面的代码定义了一个线性的上下渐变:

<gradient android:startColor="#67CC24" android:endColor="#3E9010" android:angle="270" />


<solid>设置纯色填充

这个元素本身没什么好说的,既然是纯色填充,只有color一个属性。

注意:如果同一份文件同时指定渐变和纯色填充,则顺序在后面的会覆盖掉前面的设置!


<size>指定尺寸

使用width、height分别设置宽高,类型为Dimension。

注意:Shape文件即使指定了size,默认情况下在使用时也会缩放到其容器的大小。如果在ImageView中使用,可以使用android:scaleType进行缩放的限制。

<stroke>描边

当定义的形状为line(线条)时,该属性为必选项,设置线条的样式。当形状为其他形状时,该元素起描边的作用。

width指定边框的宽度(Dimension),color指定边框颜色,只接受color类型。

我们还可以设置虚线边框:使用dashGap设置虚线之间的间隔,dashWidth设置每根虚线‘-‘的长度(为什么Google不把这个叫做Length?我也不知道)。仅当这两个属性都设置时虚线效果才生效

下面的代码定义了一个蓝色虚线边框:

    <stroke android:color="#0000FF" android:width="5dp" 
        android:dashGap="3dp" android:dashWidth="10dp"/>


<corners>设置圆角

仅当形状为矩形时该元素才生效。topLeftRadius、topRightRadius、bottomLeftRadius、bottomRightRadius四个属性分别设置四个角,radius则统一设置(四个角相同)。下面的代码设置了四个相同的圆角:

    <corners android:radius="10dp"/>

<padding>设置边距

该元素的含义请参照android:layout_paddingLeft等属性。共有四个方向left、right、top、bottom可以设置,但没有提供统一设置的属性。

以上介绍了Shape文件的所有可用元素和属性,但要真正用好shape,还要多写多用才行。如有描述错误或不妥的地方,欢迎各位批评指正。

时间: 2024-08-30 04:20:27

Android shape文件属性详解的相关文章

Android Shape的详解

1.代码 <?xml version="1.0" encoding="utf-8"?> <!-- shape=["rectangle"(默认) | "oval" | "line" | "ring"] 矩形(rectangle).椭圆形(oval).线性形状(line).环形(ring) 下面的属性只有在android:shape="ring时可用: inner

android shape使用详解

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 圆角 --> <corners android:radius="9dp" android:topLeftRadius="2dp" android

Android中shape属性详解

一.简单使用 刚开始,就先不讲一堆标签的意义及用法,先简单看看shape标签怎么用. 1.新建shape文件 首先在res/drawable文件夹下,新建一个文件,命名为:shape_radius.xml 内容是这样的:(先不需要理解,先看shape怎么用) [html] view plaincopyprint? <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="ht

android屏幕适配详解

android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_parent . 3.能够使用权重的地方尽量使用权重(android:layout_weight) 4.如果是纯色背景,尽量使用android的shape 自定义. 5.如果需要在特定分辨率下适配,可以在res目录上新建layout

Android 四大组件 详解

[置顶] Android四大组件详解 分类: Android四大组件2013-02-09 16:23 19411人阅读 评论(13) 收藏 举报 Android开发 注:本文主要来自网易的一个博主的文章,经过阅读,总结,故留下文章在此 Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity : 应用程序中,一个

Android权限Permission详解

android.permission.EXPAND_STATUS_BAR 允许一个程序扩展收缩在状态栏,Android开发网提示应该是一个类似Windows Mobile中的托盘程序 android.permission.FACTORY_TEST 作为一个工厂测试程序,运行在root用户 android.permission.INSTALL_PACKAGES 允许一个程序安装packages android.permission.INTERNAL_SYSTEM_WINDOW 允许打开窗口使用系统

Android进阶——Preference详解之Preference系的基本应用(三)

引言 前面一篇文章Android进阶--Preference详解之Preference系的基本应用和管理(二)介绍了二级Preference的使用和特点,接下来进入系统给我提供的底级Preference的使用CheckBox选择项CheckBoxPreference.EditText编辑对话框EditTextPreference.列表选择ListPreference.多项选择MultiSelectListPreference. 开关选择SwitchPreference的应用和管理.以期大家能在学

Android SlidingMenu 使用详解

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/36677279 很多APP都有侧滑菜单的功能,部分APP左右都是侧滑菜单~SlidingMenu 这个开源项目可以很好帮助我们实现侧滑功能,如果对SlidingMenu 还不是很了解的童鞋,可以参考下本篇博客.将侧滑菜单引入项目的方式很多中,本博客先通过例子介绍各种引入方式,然后给大家展示个实例:主布局ViewPager,左右各一个侧滑菜单的用法,差不多已经能满足大部分应用的需求

Android中Context详解 ---- 你所不知道的Context

转载至 :http://blog.csdn.net/qinjuning 前言:本文是我读<Android内核剖析>第7章 后形成的读书笔记 ,在此向欲了解Android框架的书籍推荐此书. 大家好,  今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中 时刻的在与它打交道,例如:Service.BroadcastReceiver.Activity等都会利用到Context的相关方法 : 说它陌生,完全是 因为我们真正的不懂Context