原文:http://keeganlee.me/post/android/20150830

以下摘取了部分内容:

shape

一般用shape定义的xml文件存放在drawable目录下,若项目没有该目录则新建一个,而不要将它放到drawable-hdpi等目录中。只需要在对应控件设置(bg_rectangle_with_stroke_dash.xml)

android:background="@drawable/bg_rectangle_with_stroke_dash"

四种类型

使用shape可以自定义形状,可以定义下面四种类型的形状,通过android: shape属性指定:

  • rectangle: 矩形,默认的形状,可以画出直角矩形、圆角矩形、弧形等
  • oval: 椭圆形,用得比较多的是画正圆
  • line: 线形,可以画实线和虚线
  • ring: 环形,可以画环形进度条

selector

有时候,不同状态下改变的不只是背景、图片等,文字颜色也会相应改变。而要处理这些不同状态下展示什么的问题,就要用selector来实现了。 一个<item/>包裹一个状态和对应的效果

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 当前窗口失去焦点时 --><item android:drawable="@drawable/bg_btn_lost_window_focused" android:state_window_focused="false" /><!-- 不可用时 --><item android:drawable="@drawable/bg_btn_disable" android:state_enabled="false" /><!-- 按压时 --><item android:drawable="@drawable/bg_btn_pressed" android:state_pressed="true" /><!-- 被选中时 --><item android:drawable="@drawable/bg_btn_selected" android:state_selected="true" /><!-- 被激活时 --><item android:drawable="@drawable/bg_btn_activated" android:state_activated="true" /><!-- 默认时 --><item android:drawable="@drawable/bg_btn_normal" />
</selector>

而下面则是text_btn_selector.xml的代码,用于按钮的文本颜色:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 当前窗口失去焦点时 --><item android:color="@android:color/black" android:state_window_focused="false" /><!-- 不可用时 --><item android:color="@android:color/background_light" android:state_enabled="false" /><!-- 按压时 --><item android:color="@android:color/holo_blue_light" android:state_pressed="true" /><!-- 被选中时 --><item android:color="@android:color/holo_green_dark" android:state_selected="true" /><!-- 被激活时 --><item android:color="@android:color/holo_green_light" android:state_activated="true" /><!-- 默认时 --><item android:color="@android:color/white" />
</selector>

 

Layer-List

使用layer-list可以将多个drawable按照顺序层叠在一起显示,像上图中的Tab,是由一个红色的层加一个白色的层叠在一起显示的结果

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 第一种加载方式 --><!--<item android:drawable="@drawable/bg_tab_selected" android:state_checked="true" />--><!-- 第二种加载方式 --><item android:state_checked="true"><layer-list><!-- 红色背景 --><item><color android:color="#E4007F" /></item><!-- 白色背景,白色背景距离底部越远,漏出来的红色部分就越多 --><!-- 效果就是看到的粗的红色的线 --><item android:bottom="4dp" android:drawable="@android:color/white" /></layer-list></item><item><layer-list><!-- 红色背景 --><item><color android:color="#E4007F" /></item><!-- 白色背景 --><item android:bottom="1dp" android:drawable="@android:color/white" /></layer-list></item>
</selector>

属性

  • solid:设置形状填充的颜色
  • padding:内容与形状边界的内间距
  • gradient: 设置形状的渐变颜色,可以是线性渐变、辐射渐变、扫描性渐变
  • corners: 设置圆角,只适用于rectangle类型
  • stroke: 设置描边,可描成实线或虚线
  • size:设置形状默认的大小,可设置宽度和高度

动画

  • 视图动画的xml文件放于res/anim/目录下,,引用时为R.anim.filename。
  • <animator>属性动画的xml文件则放于res/animator/目录下。用引用时为R.animator.filename

Style

  • Android的样式一般定义在res/values/styles.xml文件中,其中有一个根元素<resource>,而具体的每种样式定义则是通过<resource>下的子标签<style>来完成,<style>通过添加多个<item>来设置样式不同的属性。
  • 另外,样式是可以继承的,可通过<style>标签的parent属性声明要继承的样式,也可通过点前缀 (.) 继承,点前面为父样式名称,后面为子样式名称。点前缀方式只适用于自定义的样式,若要继承Android内置的样式,则只能通过parent属性声明。
  • 样式的用法不只是用于单个View,也能用于Activity或整个Application,这时候需要在相应的<activity>标签或<application>标签里设置android:theme属性,引用的其实也是style,但一般称为主题。

转载于:https://www.cnblogs.com/Mihai/p/5777685.html

android自定义样式大全:shape,selector,layer-list,style,动画全部内容相关推荐

  1. Android自定义样式

    Android自定义样式 1.AndroidManifest.xml android:theme="@style/Theme.CustomDialog 样式要用:@style <?xm ...

  2. android SeekBar 样式大全

      UI参考   Xml代码   <SeekBar android:id="@+id/seekbar" style="?android:attr/progressB ...

  3. Android 自定义View大全,Android中自定义View的实现方式总结大全

    Android自定义view是什么 在我们的日常开发中,很多时候系统提供的view是无法满足我们的需求的,例如,我们想给一个edittext加上清除按钮,等等. 这时候我们就需要对系统的view进行扩 ...

  4. Android自定义View——仿ViVO X6 极速闪充动画效果

    一直都在看自定义View,经过一个星期的坚持,基本上能够写出一些比较实用的控件效果了,今天天气太热,就待在家里玩手机,然后手机没电了,在充电的时候,看到了手机的充电动画,觉得挺酷,然后自己我就仔细的分 ...

  5. 024 Android 自定义样式对话框(AlertDialog)

    1.AlertDialog介绍 AlertDialog并不需要到布局文件中创建,而是在代码中通过构造器(AlertDialog.Builder)来构造标题.图标和按钮等内容的. 常规使用步骤(具体参见 ...

  6. Android 自定义View大全,Android自定义View以及Layout属性

    第一:自定义MyView类,继承View 1.MyView myView = new MyView(context); 2.在Layout文件夹的XML 中声明 android:id="@+ ...

  7. android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu[转]

    http://blog.csdn.net/jj120522/article/details/8095852 示意图就不展示了,和上一节的一样,滑动菜单SlidingMenu效果如何大家都比较熟悉,在这 ...

  8. C语言用循环写出新年祝福语图案,Android自定义View新年烟花、祝福语横幅动画

    新年了,项目中要作个动画,整体要求实现彩带乱飞,烟花冲天而起,烟花缩放,小鸡换图,小鸡飘移,横幅裁剪.展开等动画效果,全局大量使用了属性动画来实现. 如下效果图: 我在实现过程中,横幅的裁剪计算,捣腾 ...

  9. Android按钮滚动条,Android自定义Seekbar滑动条,Pop提示跟随滑动按钮一起滑动

    由于项目需要做出此效果,自定义写了一个. 效果图 思路: 原始的seekbar只有滑动条并没有下方的提示文字,所以我们必须要继承Seekbar重写这个控件. 代码: 在values文件夹下新建attr ...

最新文章

  1. Linux优化和目录结构
  2. 为什么三层交换机无法替代路由器?
  3. C#上位机软件串口数据接收用Invoke(同步)和BeginInvoke(异步)的区别
  4. [转] HDU 题目分类
  5. 关于spark的mllib学习总结(Java版)
  6. IT第三阶段?“智慧的运算”的未解之谜
  7. 终于有人把超融合和边缘计算说清楚了
  8. 表变量是什么_DAX学习:使用VAR定义变量
  9. 第十四周学习进度报告
  10. MySQL8.0版本升级建议及各类场景的操作方法
  11. linux中网卡的流量怎么通过c语言获取_用Python获取计算机网卡信息
  12. JDK1.8之Stream
  13. 奇安信代码卫士帮助微软和 Oracle 修复多个高危漏洞,获官方致谢
  14. SFP光模块与SFP+、XFP、QSFP、GBIC、BIDI的区别
  15. [转载] C#面向对象设计模式纵横谈——11. Facede外观模式
  16. sql 183. 从不订购的客户
  17. 如何在手机上查看APP原型
  18. 【Unity】制作动画
  19. 网线插座接法,网线模块制作及其安装步骤(图解)
  20. laravel评价详情及商家回复api

热门文章

  1. numpy 数据类型与 Python 原生数据类型
  2. Spring mvc+ maven + MyBatis + Oracle + IDEA 项目搭建 - framework 进阶中(一)
  3. 远程桌面保存密码(凭据)的备份导出
  4. 【软件工程】复利计算器--结对编程
  5. org.springframework.dao.InvalidDataAccessApiUsageException
  6. 杭电acm 2024 C语言合法标识符
  7. C# 文本操作类 Trim() 和Replace()的用法小例子
  8. KOFLive Beta Daily-Scrum 2
  9. Android基于Glide的二次封装,借鉴Glide思想二次封装Fresco
  10. FreeBSD内核简介