android shape可以让我们通过定义xml文件的方式创建图形,当然只能实现一些比较简单的图形(圆形,矩形,椭圆,线段),但是已经相当不错了,通过shape创建的图形作为控件的背景已经基本可以满足我的简单需求了,而且通过shape创建的图形可以适配各种屏幕。

  下面就用shape定义的图形来优化Button的整体效果。

  定义主布局文件activity_main.xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" > <Button
android:layout_height="48dp"
android:layout_width="160dp"
android:background="@drawable/button_selector"
android:layout_centerInParent="true"
android:text="按钮"/>
</RelativeLayout>

  定义Button的状态选择器button_selector.xml:

 <?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/button_shape" />
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/button_shape" />
<item android:state_pressed="true" android:drawable="@drawable/button_shape_press" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/button_shape" />
</selector>

  定义Button未点击状态的背景button_shape.xml:

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--渐变 -->
<gradient android:angle="" android:endColor="#DCDCE1" android:startColor="#DCDCE1" android:centerColor="#DCDCE1"/>
<!--实心 -->
<solid android:color="#DCDCE1"/>
<!--圆角,可定义四个圆角的大小 -->
<corners android:radius="3dp" />
<!--描边, 可设置边的宽度颜色 -->
<stroke android:width="1dp" android:color="#C8C8CD" />
<!--内边距-->
<padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp"/>
</shape>

  定义Button点击状态的背景button_shape_press.xml:

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:angle="" android:endColor="#C8C8CD" android:startColor="#C8C8CD" android:centerColor="#C8C8CD"/>
<solid android:color="#C8C8CD"/>
<corners android:radius="3dp"/>
<stroke android:width="1dp" android:color="#C8C8CD" />
<padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp"/>
</shape>

最终效果如下图:

android shape图形优化Button效果的更多相关文章

  1. android shape(如自定义Button)

    Shape 前言:有时候会去自己去画一些Button的样式来展现在UI当中,其中主要用到的就是Shape 先来看一段代码: <?xml version="1.0" encod ...

  2. android 使用shape来优化界面效果

    看下效果图: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=&quo ...

  3. android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)

    shape使用.渐变色.分割线.边框.半透明.半透明阴影效果. 首先简单了解一下shape中常见的属性.(详细介绍参看  api文档 ) 转载请注明:Rflyee_大飞: http://blog.cs ...

  4. Android 中带有进度条效果的按钮(Button)

    安卓中带有进度条效果的按钮,如下图: 1.布局文件如下activity_main.xml <RelativeLayout xmlns:android="http://schemas.a ...

  5. android shape实现阴影或模糊边效果

    1.实现阴影或模糊边效果方式: 2.通过shape来实现,具体是通过layer-list 多层叠放的方式实现的 <?xml version="1.0" encoding=&q ...

  6. android 自定义shape 带阴影边框效果

    在drawable 里面 建立一个 xml 直接复制 看效果 自己调试就可以 <?xml version="1.0" encoding="utf-8"?& ...

  7. android应用的优化建议(转载)

    首先,这是我在http://www.oschina.net/translate/40-developer-tips-for-android-optimization看到的一片文章,感觉挺有道理的,所以 ...

  8. Android Shape自定义纯色圆角按钮

    版权声明:分享技术,传播快乐.如果本博客对你有帮助,请在我的博客首页为我打赏吧! 在Android开发中,为响应美化应用中控件的效果,使用Shape定义图形效果,可以解决图片过多的问题. 首先看一下效 ...

  9. android shape 大全 (转)

    1. 各属性的配置语法 在项目 res/drawable 文件夹中创建一个以 shape 为根节点的 XML 文件,基本语法如下: <?xml version="1.0" e ...

随机推荐

  1. 趣谈Linux操作系统学习笔记:第二十九讲

    一.引子 在这之前,有一点你需要注意.解析系统调用是了解内核架构最有力力的一把钥匙,这里我们只要重点关注这几个最重要的系统调用就可以了 1.mount 系统调用用于挂载文件系统:2.open 系统调用 ...

  2. 创意编程,Python开发多功能壁纸自动切换工具!

    import ctypes import time import requests import os from threading import Thread from tkinter import ...

  3. 对js的有感而发

    1.什么是JavaScript?他是一个脚本语言,也是一种解释性语言,也是一种弱类型语言.2,当我们学习JavaScript时我们肯定要知道,js的组成是什么? 应该怎么用?这些是最基础的.js的组成 ...

  4. css top,right,bottom,left设置为0有什么用?它和width:100%和height:100%有什么区别?

     壹 ❀ 引 当我们使用position属性时,总免不了与top,left,right,bottom四个属性打交道,那么这四个属性都设置为0时有什么用,与宽高设置100%又有什么区别?本文对此展开讨论 ...

  5. models.py相关API

    models.py import datetime from django.db import models from django.utils import timezone class Quest ...

  6. IT兄弟连 Java语法教程 数组 数组的使用

    数组最常用的用法就是访问数组元素,包括对数组元素进行赋值和取出数组元素的值.访问数组元素都是通过在数组引用变量后紧跟一个方括号([]),方括号里是数组元素的索引值,这样就可以访问数组元素了.访问到数组 ...

  7. vue动画实现方式

    vue动画实现方式 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=&q ...

  8. PHPStorm使用PHP7新特性出现红色波浪错误

    今天在项目中使用PHP7新特性时PHPStorm出现了如下红色错误,看着让人很不舒服,明明没有错 本地配置LNMP的PHP版本是7.2所以不是安装的PHP版本过低的问题,而是PHPStorm默认支持的 ...

  9. go开发注意事项和dos的一些操作

    不需要加分号 写法 go编译器一行一行编译,所以多条语句不能写在同一行,否则会报错 go语言定义的变量或者import的包如果没有使用到,代码不能通过编译 func main() { ... } 只能 ...

  10. 深入理解JVM,类加载器

    虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流(即字节码)”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类.实现这个动作的代码模块称 ...