`
andy_叶
  • 浏览: 69132 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

shape 用法(button)

阅读更多

在实现背景渐变的帖子里

http://androidturing.iteye.com/blog/1238909

有朋友建议看看shape的用法,确实很有帮助。这里我偷懒转一篇比较详细的帖子,和大家一起进步~!

Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结:

先看下面的代码:

复制到剪贴板  XML/HTML代码
  1. <shape>  
  2.     <!-- 实心 -->  
  3.     <solid android:color="#ff9d77"/>  
  4.     <!-- 渐变 -->  
  5.     <gradient  
  6.         android:startColor="#ff8c00"  
  7.         android:endColor="#FFFFFF"  
  8.         android:angle="270" />  
  9.     <!-- 描边 -->  
  10.     <stroke  
  11.         android:width="2dp"  
  12.         android:color="#dcdcdc" />  
  13.     <!-- 圆角 -->  
  14.     <corners  
  15.         android:radius="2dp" />  
  16.     <padding  
  17.         android:left="10dp"  
  18.         android:top="10dp"  
  19.         android:right="10dp"  
  20.         android:bottom="10dp" />  
  21. </shape>  

 


solid:实心,就是填充的意思
android:color指定填充的颜色

gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍。
另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。

stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp"

android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。

corners:圆角
android:radius为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,方法为:

复制到剪贴板  XML/HTML代码
  1. <corners  
  2.   
  3.         android:topRightRadius="20dp"    右上角  
  4.         android:bottomLeftRadius="20dp"    右下角  
  5.         android:topLeftRadius="1dp"    左上角  
  6.         android:bottomRightRadius="0dp"    左下角  
  7. />  


这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,这个有点郁闷,不过不影响使用,记得别搞错了就行。
还有网上看到有人说设置成0dp无效,不过我在测试中发现是可以的,我用的是2.2,可能修复了这个问题吧,如果无效的话那就只能设成1dp了。

padding:间隔
这个就不用多说了,XML布局文件中经常用到。


大体的就是这样,以下是一个使用的具体示例:用在Selector中作为Button的背景,分别定义了按钮的一般状态、获得焦点状态和按下时的状态,具体代码如下:

 

复制到剪贴板  XML/HTML代码
  1. main.xml:  
  2. <Button  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"  
  5.     android:text="TestShapeButton"  
  6.     android:background="@drawable/button_selector"  
  7.     />  
  8. >  



button_selector.xml:

 

复制到剪贴板  XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector  
  3.     xmlns:android="http://schemas.android.com/apk/res/android">  
  4.     <item android:state_pressed="true" >  
  5.         <shape>  
  6.             <!-- 渐变 -->  
  7.             <gradient  
  8.                 android:startColor="#ff8c00"  
  9.                 android:endColor="#FFFFFF"  
  10.                 android:type="radial"  
  11.                 android:gradientRadius="50" />  
  12.             <!-- 描边 -->  
  13.             <stroke  
  14.                 android:width="2dp"  
  15.                 android:color="#dcdcdc"  
  16.                 android:dashWidth="5dp"  
  17.                 android:dashGap="3dp" />  
  18.             <!-- 圆角 -->  
  19.             <corners  
  20.                 android:radius="2dp" />  
  21.             <padding  
  22.                 android:left="10dp"  
  23.                 android:top="10dp"  
  24.                 android:right="10dp"  
  25.                 android:bottom="10dp" />  
  26.         </shape>  
  27.     </item>  
  28.     <item android:state_focused="true" >  
  29.         <shape>  
  30.             <gradient  
  31.                 android:startColor="#ffc2b7"  
  32.                 android:endColor="#ffc2b7"  
  33.                 android:angle="270" />  
  34.             <stroke  
  35.                 android:width="2dp"  
  36.                 android:color="#dcdcdc" />  
  37.             <corners  
  38.                 android:radius="2dp" />  
  39.             <padding  
  40.                 android:left="10dp"  
  41.                 android:top="10dp"  
  42.                 android:right="10dp"  
  43.                 android:bottom="10dp" />  
  44.         </shape>  
  45.     </item>  
  46.     <item>        
  47.         <shape>  
  48.             <solid android:color="#ff9d77"/>  
  49.             <stroke  
  50.                 android:width="2dp"  
  51.                 android:color="#fad3cf" />  
  52.             <corners  
  53.                 android:topRightRadius="5dp"  
  54.                 android:bottomLeftRadius="5dp"  
  55.                 android:topLeftRadius="0dp"  
  56.                 android:bottomRightRadius="0dp"  
  57.             />  
  58.             <padding  
  59.                 android:left="10dp"  
  60.                 android:top="10dp"  
  61.                 android:right="10dp"  
  62.                 android:bottom="10dp" />  
  63.         </shape>  
  64.     </item>  
  65. </selector>  

分享到:
评论

相关推荐

    Shape的详细使用方式

    ShapeDemo示例可能包含了以上各种Shape的实际应用,通过查看和学习这个示例,开发者可以更好地理解和掌握Shape的使用方法。 总结,Shape是Android UI设计中的重要工具,通过掌握其不同形状的创建和属性设置,可以...

    Android ImageView+Button 使用方法

    在提供的"ImageView+Button使用方法"压缩包中,可能包含了示例代码和资源文件,可以帮助初学者快速理解和实践上述概念。通过阅读源码,理解布局文件中的XML标签用法,以及Activity中的Java代码如何与布局组件交互,...

    一个有单击效果的圆button

    1. **自定义View**:Android Circle Button是通过继承自`View`类或`Button`类,并重写`onDraw()`方法来绘制圆形的背景。开发者需要理解Android图形绘制的基本原理,如画布(Canvas)、画笔(Paint)和矩形(Rect)等...

    Android带动态效果的Button(按钮)

    在Android开发中,按钮(Button)是用户界面中不可或缺的元素,它...以上就是关于Android中为Button添加动态效果的一些基本方法。通过这些技术,开发者可以创造出更加生动和吸引人的用户界面,提高用户对应用的满意度。

    android shape

    今天,我们将详细地介绍 Shape 的使用方法和相关知识点。 首先,看下面的代码: ```xml &lt;shape&gt; &lt;!-- 实心 --&gt; &lt;!-- 渐变 --&gt; android:startColor="#ff8c00" android:endColor="#FFFFFF" android:angle=...

    Android-shape标签的使用

    下面我们将详细探讨Shape标签的使用方法以及如何通过它来提升Android应用的界面美观度。 首先,我们来看看Shape标签的基本结构: ```xml &lt;shape xmlns:android="http://schemas.android.com/apk/res/android"&gt; ...

    Android_shape

    在本文中,我们将深入探讨`shape`在Android中的使用方法,以及如何通过`shape`来实现丰富的UI设计。 `shape`元素通常在XML文件中定义,该文件被放置在项目的`res/drawable`目录下。一个基本的`shape`元素结构如下:...

    Button 自定义点击样式,添加音效

    在Android中,我们可以使用XML布局文件来定义按钮的样式,这包括正常状态、按下状态、焦点状态等多种视觉效果。在`res\drawable`目录下创建一个XML文件,例如`button_style.xml`,内容如下: ```xml &lt;!-- 按钮...

    自定义button样式,圆角按钮

    在Android布局文件中,我们通常使用`&lt;Button&gt;`标签来创建按钮。为了实现圆角效果,可以使用`android:background`属性设置一个带有圆角的形状资源。创建一个名为`button_rounded_corner.xml`的文件在`res/drawable`...

    Android中Button一边圆角一边直角

    ### Android中实现Button一边圆角一边直角的方法 在Android应用开发中,有时为了追求更加个性化的用户界面设计,开发者可能会遇到需要自定义Button样式的需求,例如让一个Button的一侧保持直角,而另一侧则呈现圆角...

    【Android】自定义Button效果

    如果简单的样式和Drawable不能满足需求,可以创建一个新的View类继承自Button,然后重写其onDraw()方法,以实现自定义的绘制逻辑。比如添加动画效果、自定义阴影等。 4. **使用StateListDrawable** ...

    自定义Button样式

    然后,在`CustomButton`的初始化方法`init()`中,我们将这个形状设置为Button的背景: ```java private void init() { // ... setBackgroundResource(R.drawable.custom_button_background); // ... } ``` 关于...

    自定义Button控件显示

    这种情况下,你可以在`init()`方法中添加相应的样式,如使用渐变背景、阴影效果等。 最后,我们还可以利用Android的`Drawable`类和`StateListDrawable`来为Button的不同状态(如按下、聚焦等)设置不同的显示效果:...

    Button实现点击按钮,按钮变换形状

    2. **XML布局**:在布局文件中,我们需要用`&lt;your_custom_button_class&gt;`标签替换默认的`&lt;Button&gt;`标签,确保系统使用我们的自定义按钮类。 3. **Shape Drawable**:Android的Shape Drawable可以用来绘制各种形状,...

    自定义button

    这可以通过在`onDraw()`方法中实现或者使用`StateListDrawable`来实现不同状态下的背景切换。 另外,为了增强用户体验,我们还可以添加触摸反馈动画,如涟漪效果。在Android 5.0(API level 21)及以上版本,可以...

    AndroidUI之Button

    - **边框效果**:利用`shape` drawable资源文件,可以创建带有边框的Button,通过`stroke`标签定义边框宽度和颜色。 - **角部圆润**:`android:radius`属性用于设置圆角半径,实现圆角Button效果。 2. **状态选择...

    Android项目实战--手机卫士06--GridView的优化与修改Button的显示样式

    1. XML布局中定义样式:在res/layout文件夹下的XML布局文件中,可以通过设置android:background属性,使用自定义的Drawable资源,如shape、selector等,来改变Button的背景、边框、颜色等。 2. 使用...

    Android-FlycoRoundView-一个扩展原生控件支持圆角矩形框背景的库可以减少相关shape资源文件使用

    具体使用方法如下: 1. 首先,在项目的build.gradle文件中添加FlycoRoundView的依赖。由于提供的文件名为"H07000223-FlycoRoundView-7c7c596",我们可以推断这是特定版本的库,实际使用时需要找到对应的Gradle依赖...

    安卓源码button圆形进度条.zip

    在代码中,你可以使用`ProgressBar`的相关方法来控制进度,比如`setProgress()`和`setMax()`。当Button被点击时,可以启动一个异步任务并在任务执行过程中更新进度。 此外,为了提高用户体验,我们通常会将这个...

    androidbutton背景随心搭配借鉴.pdf

    主要涉及的技术点包括使用Selector、Layer-List以及Shape等XML资源文件。 首先,我们来看`button_ctrl.xml`,这是一个Selector资源文件,用于定义Button在不同状态下的背景。Selector是Android中的一个Drawable类型...

Global site tag (gtag.js) - Google Analytics