Android 组件样式(UI) shape详解

转载 2012年03月31日 16:28:09

转载:http://blog.csdn.net/feng88724/article/details/6398193

 

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

 

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

 

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

 

先来看两个例子:

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


 

 

效果:

 

<?xml version="1.0" encoding="UTF-8"?>
<shape android:shape="rectangle"
	xmlns:android="http://schemas.android.com/apk/res/android">
	<solid android:color="#b4000000" />
	<stroke android:width="2.0dip"
		android:color="#b4ffffff"
		android:dashWidth="3.0dip"
		android:dashGap="0.0dip" />
	<padding android:left="7.0dip"
		android:top="7.0dip" android:right="7.0dip"
		android:bottom="7.0dip" />
	<corners android:radius="8.0dip" />
</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.graphics.drawable.Drawable包下的类进行了一下总结。 包括类与XML属性的对应关系。 感觉很不错! 需要的各位可以学习一下。

 

下载地址:  http://download.csdn.net/source/3251635

android 使用原生UI组件

在如今的App中,已经有成千上万的原生UI部件了——其中的一些是平台的一部分,另一些可能来自于一些第三方库,而且可能你自己还收藏了很多。React Native已经封装了大部分最常见的组件,譬如Scr...
  • u012915455
  • u012915455
  • 2016年09月19日 11:17
  • 1009

Android样式的开发:shape篇

原创文章,转载请注明:转载自Keegan小钢 并标明原文链接:http://keeganlee.me/post/android/20150830 微信订阅号:keeganlee_me 写于2015-0...
  • Buaaroid
  • Buaaroid
  • 2016年06月13日 11:19
  • 2224

Android常用的UI组件

近来读完《疯狂Android讲义》一书,也将其中的案例都码了一遍。很厚的一本书,就像一本字典,涵盖了大部分的android基础知识。现对里面一些比较不错的内容做出总结。本篇对常用UI组件做出总结,只做...
  • m0_37597069
  • m0_37597069
  • 2017年04月16日 16:37
  • 1296

Android中shape使用详解

1、当使用shape时我们需要在drawable文件夹下新建一个xml文件,文件的根节点为shape 2、shape的取值一共有四种 rectangle(长...
  • qq_22157767
  • qq_22157767
  • 2016年10月02日 10:56
  • 1119

Android-自定义控件样式之shape

自定义控件样式shape1、描边stroke和填充solid介绍①效果图 ②代码详情:
  • u014314614
  • u014314614
  • 2015年12月20日 13:00
  • 1046

Android系列之UI组件----Menu菜单

【正文】 从官方文档了解到,从Android3.0(API level 11)开始,Android设备不再要求提供一个专门的菜单按钮,转而推荐使用ActionBar。所以现在市面上很多新设备使用三个...
  • u013256622
  • u013256622
  • 2016年10月12日 18:10
  • 5013

Android应用开发———Android中的常用UI组件

1、Android中常用的的UI组件: 2、TextView文本显示组件:         TextView组件的主要功能是向用户显示文本内容。         TextView组件在功...
  • fang_yang_wa
  • fang_yang_wa
  • 2017年05月10日 13:46
  • 199

android开发之shape详解

很多时候,使用shape能够实现的效果,你用一张图片也能够实现,但问题是一张图片无论你怎么压缩,它都不可能比一个xml文件小,因此,为了获得一个高性能的手机App,我们在开发中应该遵循这样一个原则:能...
  • u012702547
  • u012702547
  • 2015年10月26日 20:39
  • 4913

sheral——一个方便定制及扩展的UI组件库

简单来说,sheral是个UI库,目前拥有25+常用移动端组件(如btn, card, media, nav, dialog, toast等),同时允许用户非常方便扩展及定制属于自己的组件。但是she...
  • IMWebteam
  • IMWebteam
  • 2016年11月23日 20:30
  • 622

自定义控件shape详解

[TOC] android开发中需要使用自定义资源文件,shape文件可以做成任意形状经常用作背景色。 在AS中可以在drawable文件下右键新建resource file 然后在文件内将标题改...
  • qq_34767498
  • qq_34767498
  • 2016年07月01日 17:56
  • 566
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 组件样式(UI) shape详解
举报原因:
原因补充:

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