Android中Shape的用法详解

ShapeDrawable是一种很常见的Drawable,可以理解为通过颜色来构造的图形,它既可以是纯色的图形,也可以是具有渐变效果的图形,ShapeDrawabled语法稍显复杂,如下所示:

<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>

•Android: shape

•有4个选项,rectangle(矩形)oval(椭圆)line(横线)ring(圆环),默认为rectangle,需要注意line和ring需要通过标签来指定线的宽度和颜色等信息,否则无法达到预期效果

•首先来说一下最常用的rectangle(矩形),一般都是在按钮或者字体上面设置一个background的Drawable。一般设置效果为正方形或者两边有弧度的形状。

◦第一种情况就是设置矩形背景

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <size android:width="200dp" android:height="20dp" /> <solid android:color="#d22121"/> </shape>

通过设置size设置矩形的宽度和高度,*这里需要说明一下,咱们在这里设置size的宽高,在最终显示尺寸是没有用的,也就是说当你在一个控件中设置background的时候,这个shape是会被拉伸或者缩小为view的大小。*solid属性设置矩形里面的背景颜色。

将背景色设置为渐变

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <size android:width="200dp" android:height="20dp" /> <gradient android:startColor="#fff" android:centerColor="#f1a9a9" android:endColor="#ec5b5b" android:type="linear" /> </shape>

效果图:

这里默认的type就是linear,里面还有其他两个属性可以选择分别是radial(径向渐变)和sweep(扫描渐变)
一般最常用的也就是线性渐变还有其他几个属性没有用但是很好理解

android:angle——渐变的角度,默认为0,其值必须是45的倍数,0表示从左到右,90表示从下到上。

android:centerX——渐变的中心点横坐标

android:centerY——渐变的中心点纵坐标

android:gradientRadiu——渐变半径,仅当android:type=”radial”时有效

•接下来说一下画圆角的矩形背景

◦其实只用设置一下corners的属性就是了。

◦具体详细的说明

◦android:radius—— 给四个角设置相同的角度,优先级较低,会被其他四个属性覆盖

android:bottomLeftRadius——设定左下角的角度

android:bottomRightRadius——设定右下角的角度

android:TopLeftRadius——设定左上角的角度

android:TopRightRadius——设定右上角的角度

接下来就是如何画一个空心的背景

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <size android:width="200dp" android:height="20dp" /> <stroke android:width="1px" android:color="#ffff1c77" /> <corners android:radius="50dp"/> </shape>

效果图如下

当然里面也可以自由发挥设置渐变色,但是一般里面都纯色。

◦这里里面也可以设置为虚线

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <size android:width="200dp" android:height="20dp" /> <stroke android:dashWidth="4dp" android:dashGap="2dp" android:width="1px" android:color="#ffff1c77" /> <corners android:radius="50dp"/> </shape>

好了,其实里面的东西很简单,总结一下就好了。希望大家用的开心。

时间: 2024-07-30 12:34:20

Android中Shape的用法详解的相关文章

Android中persistent属性用法详解_Android

本文实例讲述了Android中persistent属性用法.分享给大家供大家参考,具体如下: 前段时间在研究telephony时,一直没有在framework下发现对telephony的初始化(PhoneFactory.Java中的makeDefaultPhones函数)的调用.结果全局搜索之后发现在application PhoneApp(packages/apps/Phone)中调用了.但是application PhoneApp既没有被Broadcast唤醒,也没有被其他service调用

Android中persistent属性用法详解

本文实例讲述了Android中persistent属性用法.分享给大家供大家参考,具体如下: 前段时间在研究telephony时,一直没有在framework下发现对telephony的初始化(PhoneFactory.Java中的makeDefaultPhones函数)的调用.结果全局搜索之后发现在application PhoneApp(packages/apps/Phone)中调用了.但是application PhoneApp既没有被Broadcast唤醒,也没有被其他service调用

Android中Notification通知用法详解

Notification的作用 通知(Notification)是Android系统中比较有特色的一个功能.当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以用通知来实现 用法 首先我们需要一个NotificationManager来对通知进行管理,可以调用getSystemService()方法得到,方法接收一个字符串参数用于确定获取系统的哪个服务,这里我们传入NOTIFICATION_SERVICE. NotificationManager manager=(No

Android 中ContentProvider的实例详解

Android 中ContentProvider的实例详解 Content Provider 的简单介绍: * Android中的Content Provider 机制可支持在多个应用中存储和读取数据.这也是跨应用 共享数据的唯一方式.在Android系统中,没有一个公共的内存区域,供多个应用共享存储数据: * Android 提供了一些主要数据类型的ContentProvider ,比如:音频.视频.图片和私人通讯录等: 在android.provider 包下面找到一些android提供的C

Android中Service(后台服务)详解

  这篇文章主要介绍了Android中Service(后台服务)详解,本文讲解了Service的概念.作用.生命周期.启动方式和代码实例等内容,需要的朋友可以参考下 1.概念: (1).Service可以说是一个在后台运行的Activity.它不是一个单独的进程,它只需要应用告诉它要在后台做什么就可以了. (2).它要是实现和用户的交互的话需要通过通知栏或者是通过发送广播,UI去接收显示. (3).它的应用十分广泛,尤其是在框架层,应用更多的是对系统服务的调用. 2.作用: (1).它用于处理一

javascript jquery-jquery中getScript()的用法详解,从一个远程js文件中读取数据

问题描述 jquery中getScript()的用法详解,从一个远程js文件中读取数据 第一个html文件: <html> <head> <script type="text/javascript" src="jquery-2.1.3.js"></script> $.getScript("shuj.js",function(){alert("aaaaa");}) </hea

Angular 中 select指令用法详解_AngularJS

最近在angular中使用select指令时,出现了很多问题,搞得很郁闷.查看了很多资料后,发现select指令并不简单,决定总结一下. select用法: <select ng-model="" [name=""] [required=""] [ng-required=""] [ng-options=""]> </select> 属性说明: 发现并没有ng-change属性 ng-

Java 中 synchronized的用法详解(四种用法)_java

Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.  1.方法声明时使用,放在范围操作符(public等)之后,返回类型声明(void等)之前.这时,线程获得的是成员锁,即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,当前线程(就是在synchronized方法内部的线程)执行完该方法后,别的线程才能进入. 例如: public synchronized void synMethod() { //方法体 }

JS、jQuery中select的用法详解_javascript技巧

1.js var obj=document.getElementById(selectid); obj.options.length = 0; //清除所有内容 obj.options[index] = new Option("three",3); //更改对应的值 obj.options[index].selected = true; //保持选中状态 obj.add(new Option("4","4")); "文本",&