图形基础

一、drawable

在代码中引用drawable文件可分为两种情况

(1)使用setBackgroundResource和setImageResource方法,可直接在参数中指定drawable文件的资源ID,例如R.drawable.***

(2)使用setBackgroundDrawable、setImageDrawable和setCompoundDrawables等方法,参数是Drawable对象,这时得先从资源文件中生成Drawable对象,示例代码如下:

Drawable drawable = getResources().getDrawable(R.drawable.apple);

二、状态列表

Button按钮在正常情况下是凸起的,在按下时是凹陷的,从按下到弹起的过程,用户便能知道点击了这个按钮。根据不同的触摸情况变更图形显示,这种情况会用到Drawable的一个子类StateListDrawable,该子类在XML文件中定义不同状态时呈现的图形列表,下面是一个状态列表图形的drawable文件:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:state_pressed="true" android:drawable="@drawable/button_pressed"/>

  <item android:drawable="@drawable/button_normal"/>

</selector>

state_pressed的值为true时表示按下时显示button_selected图像,其余情况显示button_normal图像。

StateListDrawable不仅用于Button控件,而且可以用于其他拥有不同状态的控件,取决于开发者对StateListDrawable状态类型的定义。

状态类型的取值说明

状态类型 说明 常用的控件
state_pressed 是否按下 按钮Button
state_checked 是否勾选 单选框RadioButton,复选框CheckBox
state_focused 是否获取焦点 文本编辑框EditText
state_selected 是否选中 各控件均可

三、形状图形

形状图形的定义文件以shape元素为根节点,根节点下定义了6个节点,corners,gradien,padding,size,solid,stroke

1.shape

shape是XML文件的根节点,用来描述该形状图形是哪种几何图形。

·shape:字符串类型,图形的形状,取值说明如下:

  rectangle 矩形,默认值

  oval 椭圆,此时corners节点会失效

  line 直线,此时必须设置stroke节点,不然会报错

  ring 圆环

2.corners:用来描述4个圆角的规格定义,若无corners节点,则无圆角

bottomLeftRadius:像素类型,左下圆角的半径

bottomRightRadius

topLeftRadius

topRightRadius

radius:像素类型,圆角半径

3.gradien:用来描述形状内部的颜色渐变定义,若无gradien节点,表示没有渐变效果

angle:整型,渐变的起始角度,为0时表示时钟的9点位置,值增大表示往逆时针方向旋转,例如,值为90表示6点位置,值为180表示3点位置,值为270表示12点位置

type:字符串类型,渐变类型,取值说明如下:

  linear 线性渐变,默认值

  radial 放射渐变,起始颜色就是圆心颜色

  sweep 滚动渐变,即一个线段以某个端点为圆心做360度旋转

centerX:浮点类型,圆心的X坐标。当android:type="linear"时不可用。

centerY :浮点类型,圆心的Y坐标。当android:type="linear"时不可用。

gradientRadius:整型,渐变的半径,当android:type="radial"时才需要设置该属性。

centerColor:颜色类型,渐变的中间颜色

startColor:颜色类型,渐变的起始颜色

endColor:颜色类型,渐变的终止颜色

useLevel:布尔类型,设置为true无渐变色,false有渐变色

4.padding:用来描述形状图形与周围视图的间隔大小,若无padding节点,则表示四周不设间隔

bottom:像素类型,与下边的间隔

left

right

top

5.size:用来描述图形的尺寸大小(宽度和高度),若无size节点,则表示宽高自适应

height:像素类型,图形高度

width

6.solid:用来描述形状图形内部的填充色彩,若无solid节点,则表示无填充颜色

color:颜色类型,内部填充的颜色

7.stroke:用来描述形状图形四周边线的规格定义,若无stroke节点,则表示不存在描边

color:颜色类型,描边的颜色

dashGap:像素类型,每段虚线之间的间隔

dashWidth:像素类型,每段虚线的宽度(若dashGap和dashWidth有一个值为0,则描边为实线)

width:像素类型,描边的厚度

一个shape的实例

<shape xmlns:android="http://schemas.android.com/apk/res/android">

<solid android:color="#ffdd66"/>

  <stroke

    android:width="1dp"

    android:color="#ffaaaaaa"/>

  <corners

    android:bottomLeftRadius="10dp"

    android:bottomRightRadius="10dp"

    android:topLeftRadius="10dp"

    android:topRightRadius="10dp"/>

</shape>

Android Studio图形基础(AS开发实战第二章学习笔记)的更多相关文章

  1. AS开发实战第二章学习笔记——其他

    第二章学习笔记(1.19-1.22)像素Android支持的像素单位主要有px(像素).in(英寸).mm(毫米).pt(磅,1/72英寸).dp(与设备无关的显示单位).dip(就是dp).sp(用 ...

  2. TextView的跑马灯效果(AS开发实战第二章学习笔记)

    TextView的跑马灯效果跑马灯用到的属性与方法说明singleLine 指定文本是否单行显示ellipsize 指定文本超出范围后的省略方式focusable 指定是否获得焦点,跑马灯效果要求设置 ...

  3. 聊天室或文字直播间的效果(AS开发实战第二章学习笔记)

    聊天室或文字直播间的效果即是新的文字消息总是加入窗口末尾,同时窗口内部的文本整体向上滚动,窗口的大小.位置保持不变聊天室用到的属性与方法说明gravity 指定文本的对齐方式,取值left|botto ...

  4. #Spring实战第二章学习笔记————装配Bean

    Spring实战第二章学习笔记----装配Bean 创建应用对象之间协作关系的行为通常称为装配(wiring).这也是依赖注入(DI)的本质. Spring配置的可选方案 当描述bean如何被装配时, ...

  5. Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver

    1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...

  6. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

  7. Spring实战第一章学习笔记

    Spring实战第一章学习笔记 Java开发的简化 为了降低Java开发的复杂性,Spring采取了以下四种策略: 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面 ...

  8. 深挖计算机基础:MySQL实战45讲学习笔记

    参考极客时间专栏<MySQL实战45讲>学习笔记 一.基础篇(8讲) MySQL实战45讲学习笔记:第一讲 MySQL实战45讲学习笔记:第二讲 MySQL实战45讲学习笔记:第三讲 My ...

  9. Linux第一章第二章学习笔记

    第一章 Linux内核简介 1.1 Unix的历史 它是现存操作系统中最强大最优秀的系统. 设计简洁,在发布时提供原代码. 所有东西都被当做文件对待. Unix的内核和其他相关软件是用C语言编写而成的 ...

随机推荐

  1. 数论(Lucas定理) HDOJ 4349 Xiao Ming's Hope

    题目传送门 题意:求C (n,0),C (n,1),C (n,2)...C (n,n)中奇数的个数 分析:Lucas 定理:A.B是非负整数,p是质数.AB写成p进制:A=a[n]a[n-1]...a ...

  2. centos 7 设置开机启动服务

    2018-12-25 Centos7下添加开机自启动脚本和服务的方法 以docker 服务为例 1.centos7自带命令设置 systemctl enable docker.service 2.设置 ...

  3. win7 64位英文版 ado驱动

    https://www.microsoft.com/zh-tw/download/details.aspx?id=5793

  4. window.load方法 (加载全部图片,第三方网站时使用)

    $(window).load(  function(){                                                              console.lo ...

  5. logback.xml文件配置(按时间、文件大小和log名称生成日志)

    之前项目中日志多用的log4j2,偶然看到在importNew看到了logback,自己查了下,发现Logback和log4j是非常相似的,其作者也是同一个人,并且logback相比于log4j性能更 ...

  6. java中Map转化为bean

    Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值,在java编程中会经常用到.但是当我们进行业务逻辑的处理或着操作数据库时,往往应用的是我们自己定义的的Bean或VO来传递和 ...

  7. CoreJava基础之构造器

    类的基本语法: 修饰词 class 类名{ 修饰词 类型 属性名: } 实例:public class Book{ int id; String name; String[] authors ={&q ...

  8. sencha touch SortableList 的使用

    转: sencha touch 2.3 多了一个  SortableList plugin, 可实现 list item 的拖动交换 Ext.require('Ext.plugin.SortableL ...

  9. 记录日志好习惯——Log4net入门(WCF篇)

    本篇是在学习了“编码之道”的Log4net入门(WCF篇)http://www.cnblogs.com/yonghuacui/p/6181864.html之后,总结了一些自认为比较重要的细节.顺便把创 ...

  10. 很小的一个函数执行时间调试器Timer

    对于函数的执行性能(这里主要考虑执行时间,所耗内存暂不考虑),这里写了一个简单的类Timer,用于量化函数执行所耗时间. 整体思路很简单,就是new Date()的时间差值.我仅仅了做了一层简单的封装 ...