【Android UI】 Shape详解 (GradientDrawable)

转载 2013年12月05日 13:46:33

在Android开发过程中,经常需要改变控件的默认样式, 那么通常会使用多个图片来解决。不过这种方式可能需要多个图片,比如一个按钮,需要点击时的式样图片,默认的式样图片。 这样就容易使apk变大。

 

   那么除了使用drawable这样的图片外,还有其他方法吗?

 

   本次就谈一下自定义图形shape,Android上支持以下几种属性shape、gradient、stroke、corners、padding、solid等。

 

先来看两个例子:

 

 

  1. <shape  
  2.     xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:shape="rectangle">  
  4.     <gradient android:startColor="#FFFF0000"  
  5.         android:endColor="#80FF00FF"  
  6.         android:angle="270" />  
  7.     <padding android:left="50dp"  
  8.         android:top="20dp" android:right="7dp"  
  9.         android:bottom="7dp" />  
  10.     <corners android:radius="8dp" />  
  11. </shape>  

 

 

 

效果:

 

 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <shape android:shape="rectangle"  
  3.     xmlns:android="http://schemas.android.com/apk/res/android">  
  4.     <solid android:color="#b4000000" />  
  5.     <stroke android:width="2.0dip"  
  6.         android:color="#b4ffffff"  
  7.         android:dashWidth="3.0dip"  
  8.         android:dashGap="0.0dip" />  
  9.     <padding android:left="7.0dip"  
  10.         android:top="7.0dip" android:right="7.0dip"  
  11.         android:bottom="7.0dip" />  
  12.     <corners android:radius="8.0dip" />  
  13. </shape>  

 

 

 

效果:

 

 

总结一下Shape的所有子属性,如图:

 

 

简单说明一下:

 

gradient   -- 对应颜色渐变。 startcolor、endcolor就不多说了。 android:angle 是指从哪个角度开始变。

solid      --  填充。

stroke   --  描边。

corners  --  圆角。

padding   -- 定义内容离边界的距离。 与android:padding_left、android:padding_right这些是一个道理。

 

 


 

 

上面这些不是本讲重点。 本讲的重点是这些xml中属性,与Java类的对应关系, 以及如何使用Java类写出上面一样的效果!

 

首先来看对应关系:

 

父节点 shape   --   ShapeDrawable

 [子节点] gradient   --  

 [子节点] padding   --   

 [子节点] corners   --   setCornerRadius 、setCornerRadii 

 [子节点] solid       --    

 [子节点]  stroke   --   setStroke 

 [子节点]  size --   setSize

 

发现只有几个是可以对应的~~ 看来通过Java代码来实现上述是行不通的..

相关文章推荐

【Android UI】 Shape详解 (GradientDrawable)

【Android UI】 Shape详解 (GradientDrawable) 分类: 【Android进阶】2011-05-05 21:04 2566人阅读 评论(2) 收藏 举报 ...

【Android UI】 Shape详解

在Android开发过程中,经常需要改变控件的默认样式, 那么通常会使用多个图片来解决。不过这种方式可能需要多个图片,比如一个按钮,需要点击时的式样图片,默认的式样图片。 这样就容易使apk变大。  ...

Android UI 详解之Shape

Android UI 详解之Shape
  • UStory
  • UStory
  • 2015年01月08日 11:09
  • 449

Android 代码实现shape(GradientDrawable详解)

在项目开发过程中经常会遇到自定义图形,然而在日常很多有重复的工作,如一个图形颜色变了或者线框变宽了等等都需要我们重新新建一个shape文件,这样你就会发现资源文件里面多出了很多shape;这里写了一个...

【Android UI】案例02 圆角边框、圆角背景的实现(shape)

本文主要分享圆角边框与圆角背景的实现方式。该方式的实现,需要了解shape的使用,该部分的详细介绍,请阅读博客http://blog.csdn.net/mahoking/article/details...

Android UI---自定义形状shape

1、在res/drawable目录下创建一个shape.xml [html] view plain copy xml version="1.0" e...

Android UI美化之Shape Drawable的使用

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

Android UI:shape和selector

转自:http://www.cnblogs.com/bill-joy/archive/2012/03/27/2419197.html 仅为个人学习,以备原帖删除,方便自己查找。 s...
  • Hknock
  • Hknock
  • 2012年05月17日 22:13
  • 504

Android UI之shape和selector和layer-list的使用

1 概述shape、selector和layer-list的使用在Android UI设计中经常用到。比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到。可以说,shape...

【转】Android UI美化之Shape Drawable的使用

转自:http://www.cnblogs.com/ylligang/articles/2272418.html 先看一下文档对Shape Drawable的描述:   ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Android UI】 Shape详解 (GradientDrawable)
举报原因:
原因补充:

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