图形基础

一、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. webstorm 上传代码到gitlab

    1. 2. 3.push 4.填写上传url

  2. signed char型内存位bit表示

    signed char型内存 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9 ...

  3. 【C语言】-指针和字符串

    本文目录 字符串回顾 一.用指针遍历字符串的所有字符 二.用指针直接指向字符串 三.指针处理字符串的注意 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速 ...

  4. 【随笔】nginx重启问题和mysql挂了的解决办法

    租了一个阿里云服务器,然后需要一个nginx来处理一下静态文件的访问和动态文件的转发,头一天没有什么问题,第二次打开,各种问题就出来了!解决方法记录一下.... Can't connect to lo ...

  5. 【javascript/css】关于鼠标事件onmousexxx和css伪类hover

    在运用鼠标移入移出事件时,一般有两种做法,一种是DOM事件的"onmouseover"和"onmouseout",还有一种是css的伪类":hover ...

  6. unity鼠标拖动物体旋转

    using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> / ...

  7. html中文乱码(解决办法)

    在head标签中加上以下代码即可: <head>     <meta http-equiv="Content-Type" content="text/h ...

  8. 点击checkbox全选,其它被选中,再点击取消

    <input type="checkbox" value="" id="checkall" name="" siz ...

  9. Expression Blend实例中文教程(4) - 布局控件快速入门Canvas

    上一篇,我介绍了Silverlight控件被分为三种类型, 第一类: Layout Controls(布局控件) 第二类: Item Controls (项目控件) 第三类: User Interac ...

  10. Silverlight & Blend动画设计系列十一:沿路径动画(Animation Along a Path)

    Silverlight 提供一个好的动画基础,但缺少一种方便的方法沿任意几何路径对象进行动画处理.在Windows Presentation Foundation中提供了动画处理类DoubleAnim ...