Android Studio图形基础(AS开发实战第二章学习笔记)
图形基础
一、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开发实战第二章学习笔记)的更多相关文章
- AS开发实战第二章学习笔记——其他
第二章学习笔记(1.19-1.22)像素Android支持的像素单位主要有px(像素).in(英寸).mm(毫米).pt(磅,1/72英寸).dp(与设备无关的显示单位).dip(就是dp).sp(用 ...
- TextView的跑马灯效果(AS开发实战第二章学习笔记)
TextView的跑马灯效果跑马灯用到的属性与方法说明singleLine 指定文本是否单行显示ellipsize 指定文本超出范围后的省略方式focusable 指定是否获得焦点,跑马灯效果要求设置 ...
- 聊天室或文字直播间的效果(AS开发实战第二章学习笔记)
聊天室或文字直播间的效果即是新的文字消息总是加入窗口末尾,同时窗口内部的文本整体向上滚动,窗口的大小.位置保持不变聊天室用到的属性与方法说明gravity 指定文本的对齐方式,取值left|botto ...
- #Spring实战第二章学习笔记————装配Bean
Spring实战第二章学习笔记----装配Bean 创建应用对象之间协作关系的行为通常称为装配(wiring).这也是依赖注入(DI)的本质. Spring配置的可选方案 当描述bean如何被装配时, ...
- Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver
1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥
1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...
- Spring实战第一章学习笔记
Spring实战第一章学习笔记 Java开发的简化 为了降低Java开发的复杂性,Spring采取了以下四种策略: 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面 ...
- 深挖计算机基础:MySQL实战45讲学习笔记
参考极客时间专栏<MySQL实战45讲>学习笔记 一.基础篇(8讲) MySQL实战45讲学习笔记:第一讲 MySQL实战45讲学习笔记:第二讲 MySQL实战45讲学习笔记:第三讲 My ...
- Linux第一章第二章学习笔记
第一章 Linux内核简介 1.1 Unix的历史 它是现存操作系统中最强大最优秀的系统. 设计简洁,在发布时提供原代码. 所有东西都被当做文件对待. Unix的内核和其他相关软件是用C语言编写而成的 ...
随机推荐
- 高阶篇:4.1.2.2)产品部件级别的QFDII
本章目的:介绍产品部件级别的QFDII编写方法. 1.前言 这章接前面总成级别的QFDII. 产品部件级别的QFDII,其实就是将部件QFDII所得到的设计要求,进一步分配给部件其装配层级的零部件中. ...
- 剑指offer——面试题18:删除链表的节点
#include"List.h" void DeleteNode(ListNode** pHead,ListNode* pToBeDeleted) { if(*pHead==nul ...
- python 实现dns 解析发送接收报文
http://www.qingruxu.com/code/python/851.html https://tools.ietf.org/html/rfc1035里面的图不一定正确,可以使用抓包软件来进 ...
- 一些学习比较好的网站,及es6学习好网站,前端用的相关库,及知道的插件
图形可视化:d3js echarts https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects ...
- 浅谈C#.NET防止SQL注入式攻击
1#region 防止sql注入式攻击(可用于UI层控制) 2 3/// 4/// 判断字符串中是否有SQL攻击代码 5/// 6/// 传入用户提交数据 7/// true-安全:f ...
- 冀永楠:OCR的应用锦集及背后技术
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云加社区技术沙龙 发表于云+社区专栏 演讲嘉宾:冀永楠,现为腾讯云大数据AI产品中心高级研究员.负责了腾讯云与华星光电等多个图像AI项 ...
- Hibernate项目环境搭建
1.首先在eclipse里面新建一个Java工程. 2.在数据库中新建一个数据库(无需创建表,有Hibernate生成). 3.在项目中导入Hibernate所依赖的jar包,该jar包可以在此下载: ...
- linux信息查看手记
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...
- 在Eclipse中生成javadoc
在<thinking in java>一书的第一章提到javadoc,以前也看过,每次看到这部就跳过了,没有真正去尝试过什么样子,今天终于亲自实践了一下,原来真的挺简单:一.编写java源 ...
- FastReport打印table
经过验证是对的. table第一行添加标题,也就是拖过来的文本label,第二行开始绑定数据源的字段. 先设计报表的静态部分,再用代码注册数据源,然后设计,添加注册的数据源,绑定字段. var rep ...