第二章学习笔记(1.19-1.22)
像素
Android支持的像素单位主要有px(像素)、in(英寸)、mm(毫米)、pt(磅,1/72英寸)、dp(与设备无关的显示单位)、dip(就是dp)、sp(用于设置字体大小),常用的是px、dp、sp三种。dp与物理设备无关吗,只与屏幕的尺寸有关。sp的原理跟dp差不多,专门用于设置字体大小。设置普通字体时,同数值dp和sp的文字看起来一样大,如果设置为大字体,用dp设置的文字没有变化,用sp设置的文字就变大了。所以说,dp与系统设置的字体大小没有关系,而sp会随系统设置的字体大小变大或变小。
XML布局文件中,为了让不同设备屏幕拥有统一的显示效果,除了sp用于设置文字的大小外,其余要用大小的地方都用dp。
Android用于设置大小的函数都以px为单位,无论是setMargins还是setPadding,参数单位都是px,想要在代码中使用dp设置布局大小或间距,就要先把dp值转换成px值。

颜色
Android中,颜色值由透明度alpha和RGB(红绿蓝)三原色定义
八位十六进制数编码
例如八位编码FFEEDDCC,FF表示透明度(FF表示完全不透明,00表示完全透明),EE表示红色的浓度,DD表示绿色的浓度,CC表示蓝色的浓度,RGB三色的数值越大颜色越浓也就越亮,数值越小颜色越暗,亮到极致就是白色,暗到极致就是黑色。
六位十六进制编码分为两种情况,在代码中默认透明(透明度为00),在XML文件中默认不透明(透明度为FF),所以说,在代码中一般不要用六位编码,因为六位编码在代码中默认是透明的。
1.使用系统已定义的颜色变量
BLACK GRAY DKGRAY LTGRAY WHITE RED GREEN BLUE YELLOW TRANSPARENT CYAN(青色) MAGENTA(玫红)
2.使用十六进制的颜色编码
XML文件中android:textColor="#000000"
代码文件中setTextColor(0xff00ff00),也可以通过Color.rgb(int red, int green, int blue)和Color.argb(int alpha, int red, int green, int blue)这两种方法指定颜色
用法举例setTextColor(Color.rgb(100, 100, 100));
3.使用colors.xml中定义的颜色
XML文件中@color/常量名
代码文件中getResources().getColor(R.color.常量名)

屏幕分辨率
在代码中获取分辨率就是获得DisplayMetrics对象,然后从该对象中获得宽度、高度、像素密度等信息,DisplayMetrics类的常用属性说明:
widthPixels:以px为单位计量的宽度值
heightPixels:以px为单位计量的高度值
density:像素密度,即一个dp单位包含多少个px单位

简单布局

LinearLayout的orientation属性的默认是horizontal
以宽度为例,wrap_content表示与内部内容一样宽(内部内容如果超过上级视图的宽度,则该视图保持与上级视图一样宽,超出宽度的内容得进行滚动才能显示出来)
minWidth:指定该视图的最小宽度(还有minHeight)
visibility:指定该视图的可视类型,取值如下:
visible 可见,默认值
invisible 不可见,虽然看不到但是还占着位置
gone 消失,不仅看不到而且不占位置了
一些方法:
setMinimumWidth
setBackgroundColor
setBackgroundDrawable
setBackgroundResource

margin和padding的概念区别:
margin是指当前视图与周围视图的距离,padding是指当前视图与内部内容之间的距离。

layout_gravity和gravity的区别:
layout_gravity指定该视图与上级视图的对齐方式,而gravity指定布局内部视图与本布局的对齐方式。

垂直滚动视图ScrollView,水平滚动视图HorizontalScrollView
(1)垂直方向滚动时,layout_width要设置为match_parent,layout_height要设置为wrap_content
(2)水平方向滚动时,layout_width要设置为wrap_content,layout_height要设置为match_parent
(3)滚动视图节点下面必须只能挂着一个子布局节点,否则会在运行时报错(ScrollView can only have one direct child.)
ScrollView的实际内容不够,又想让它充满屏幕,怎么办呢?
android:layout_height="match_parent"
android:fillViewport="true"

简单控件
ImageView拉伸类型的取值说明
fitXY 拉伸图片使其正好填满视图(图片可能被拉伸变形)
fitStart 拉伸图片使其位于视图上部
fitCenter 拉伸图片使其位于视图中间
fitEnd 拉伸图片使其位于视图下部
center 保持图片原尺寸,并使其位于视图中间
centerCrop 从图片中心开始,均衡地缩放图像(保持宽高比例不变),使得图片充满视图,并位于视图中间
centerInside 使图片位于视图中间(只压不拉)。当图片尺寸大于视图时,centerInside等同于fitCenter;当图片尺寸小于视图时,centerInside等同于center
ScaleType类中的拉伸类型全部是大写的,scaleType默认是fitCenter
src:指定图形来源,src图形按照scaleType拉伸,注意背景图不按scaleType指定的方式拉伸,背景默认以fitXY拉伸
ImageView在代码中调用的方法说明:
setScaleType
setImageDrawable
setImageResource
setImageBitmap
截图功能相关方法:(CaptureActivity)
setDrawingCacheEnabled:设置绘图缓存的可用状态,true表示打开,false表示关闭
isDrawingCacheEnabled:判断该空间的绘图缓存是否可用
setDrawingCacheQuality:设置绘图缓存的质量
getDrawingCache:获取该空间的绘图缓存结果,返回值为Bitmap类型
setDrawingCacheBackgroundColor: 设置绘图缓存的背景颜色,绘图缓存默认背景为黑色,如果不提前设置缓存的背景色,截图的结果就是黑乎乎一片,所以需要将背景色设置为默认颜色(通常是白色)
截图功能的具体步骤如下:
1.开始截图前,先调用setDrawingCacheEnabled方法,设置绘图缓存为可用状态。注意该方法在一开始就得调用,因为先开启绘图缓存,之后变更的界面才会记录到缓存中;如果先变更界面再开启绘图缓存,缓存里就是空的
2.调用getDrawingCache方法获取缓存中的图像数据
3.完成截图,延迟若干毫秒后调用setDrawingCacheEnabled方法关闭绘图缓存,如果接下来还要截图,就再次调用setDrawingCacheEnabled方法重新开启绘图缓存。(这里要启一个新线程)

关于长按
只要记得把最后的return改成true就好了

ImageButton
Button既可显示文本也可显示图形(通过设置背景图),而ImageButton只能显示图形不能显示文本
ImageButton上的图像可按比例,而Button上的大图会拉伸变形(因为背景图无法按比例拉伸)
Button只能在背景显示一张图形,而ImageButton可分别在前景和背景显示两张图形,实现图片叠加的效果

文字周围放置图片用到的属性和方法(IconActivity)
drawableTop 指定文本上方的图形
drawableBottom
drawableLeft
drawableRight
drawablePadding 指定图形与文本的间距
setCompoundDrawables 设置文本周围的图形,依次为左、上、右、下
样例btn.setCompoundDrawables(null,drawable,null,null)
setCompoundDrawablePadding 设置图形与文本的间距

在界面上增加一个水平分割线:

<View

  android:layout_width="match_parent"

  android:layout_height="1dp"

  android:background="#000000" />

九宫格图片:略

AS开发实战第二章学习笔记——其他的更多相关文章

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

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

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

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

  3. Android Studio图形基础(AS开发实战第二章学习笔记)

    图形基础 一.drawable 在代码中引用drawable文件可分为两种情况 (1)使用setBackgroundResource和setImageResource方法,可直接在参数中指定drawa ...

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

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

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

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

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

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

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

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

  8. Python核心编程第三版第二章学习笔记

    第二章 网络编程 1.学习笔记 2.课后习题 答案是按照自己理解和查阅资料来的,不保证正确性.如由错误欢迎指出,谢谢 1. 套接字:A network socket is an endpoint of ...

  9. Day2 《机器学习》第二章学习笔记

    这一章应该算是比价了理论的一章,我有些概率论基础,不过起初有些地方还是没看多大懂.其中有些公式的定义和模型误差的推导应该还是很眼熟的,就是之前在概率论课上提过的,不过有些模糊了,当时课上学得比较浅. ...

随机推荐

  1. Angular material mat-icon 资源参考_Device

    ul,li>ol { margin-bottom: 0 } dt { font-weight: 700 } dd { margin: 0 1.5em 1.5em } img { height: ...

  2. 2. Javscript学习笔记——引用类型

    2. 引用类型 2.1 Object类型 Object 是一个基础类型,其他所有类型都从 Object 继承了基本的行为. 对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象 ...

  3. Q806 写字符串需要的行数

    我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行.我们给定了一个数组 width ...

  4. Java返回泛型的方法-实例

    package com.frank.app; import java.io.UnsupportedEncodingException;import java.lang.reflect.Type;imp ...

  5. Linux-文件目录类命令

    l 文件目录类 pwd 指令 基本语法 pwd (功能描述:显示当前工作目录的绝对路径) 应用实例 案例:显示当前工作目录的绝对路径 ls指令 基本语法 ls [选项] [目录或是文件] 常用选项 - ...

  6. Robot Framework(Collections 库)

    Collections 库 Collections 库同样为Robot Framework 标准类库,它所提供的关键字主要用于列表.索引.字典的处理. 在使用之前需要在测试套件(项目)中添加:

  7. selenium+Python(截图保存错误页面)

    异常捕捉与错误截图 创建错误截图文件夹,目录结果如下: 用例不可能每一次运行都成功,肯定运行时候有不成功的时候,关键是我们捕捉到错误,并以把并错误截图保存,这将是一个非常棒的功能,也会给我们错误定位带 ...

  8. Rails 中 mattr_accessor 一处文档错误

    http://xiewenwei.github.io/blog/2015/01/11/mattr-accessor-in-ruby-on-rails-activesupport/ module Hai ...

  9. 【javascript】onload load ready的那些事

    首先明确一下页面加载的步骤: 1.下载解析HTML文档结构 2.加载外部脚本文件与样式表文件 3.解析并执行脚本代码 4.构造HTML DOM模型 5 .加载图片等外部文件 6.页面加载完毕 接下来, ...

  10. 理解C#反射

    参考文章:http://blog.csdn.net/educast/article/details/2894892 上面的文章将C#反射要用到的方法都给出了,下面我将写个例子,帮助理解 [1.使用反射 ...