欢迎光临散文网 会员登陆 & 注册

第三章 第一个Android程序

2018-11-02 13:18 作者:swiss126  | 我要投稿

参考资料:

《Android应用程序开发》ISBN 9787302283164

参考软件:

Android Studio、Eclipse+ADT、Android SDK、JDK

常见的手机硬件参数知识

1、分辨率

手机屏幕尺寸分为物理尺寸显示分辨率两个概念。

物理尺寸是指屏幕的实际大小,以屏幕的对角线长度作为依据(比如3.5英寸、4.0英寸)。

屏幕分辨率反映的是在物理尺寸下可以显示的像素数量。分辨率是以乘法形式表现,比如手机常见的320×480,其中“320”表示屏幕上水平方向显示的点数,“480”表示垂直方向的点数。分辨率越大表示像素的数量越多,图像就越清晰,因此这个指标是决定画面好坏的最主要因素。

两台手机的物理尺寸一样并不表示其分辨率相同,不同物理尺寸的手机,可以都显示相同的分辨率,例如:4.3英寸三星i9100和4.0英寸的HTC G11都是具有480×800像素(WVGA)。

大家都能发现,现在流行的分辨率大都跟VGA沾点关系,无论是QVGA、WVGA还是HVGA等等,因为VGA就是这些尺寸的基础。VGA最早其实是IBM计算机的一种显示标准,最后逐渐的演变,成了640×480这个分辨率的代名词,也是绝大多数分辨率的基准。

QVGA

QVGA就是Quarter VGA的简称,意思是VGA分辨率的四分之一,这是目前最为常见的手机屏幕分辨率,竖向的就是240×320像素,横向的就是320×240像素。 

HVGA

HVGA代表的意思是Half-size VGA,意思是VGA分辨率的一半,为480×320像素,宽高比为3:2。 

WVGA

WVGA的全称想必大家很容易就能想到了,那就是 Wide VGA,分辨率分为854×480像素和800×480像素两种。

SVGA

SVGASuper VGA,就是我们常见的800×600像素 ,而1024×768像素就不再基于VGA的标准,转为XGA成为了新一代显示设备分辨率的基准。随着显示设备行业的发展,SXGA+(1400×1050像素)、UXGA(1600×1200像素,常用于20寸或21寸显示器)、QXGA(2048×1536像素)也逐渐浮出水面, QXGA就已经是XGA的四倍 ,也是大多数显示设备支持的极限,当然也有更高的QUXGA,但是这只是理论上的名字,现实世界中还没有采用这个分辨率的显示设备。17寸的彩色显示器大都是SVGA、XGA或者SXGA+级别。

4:3屏幕的发展也带动了宽屏幕的发展,最早是WVGA(800×480像素),常用语大多数的MID和小号的上网本,后来为WSVGA(1024×600分辨率),这种分辨率多用于8.9寸或10寸的上网本。

WXGA

在发展到后来 WXGA(1280×800像素)逐渐在13-15寸的笔记本电脑上流行起来 ;WXGA+(1440×900像素)多用于19寸宽屏;WSXGA+(1680×1050像素)则常用于20寸和22寸的宽屏,也有部分15.4寸的笔记本使用这种分辨率;WUXGA(1920×1200像素)是颇为流行的分辨率之一,24-27寸的宽屏显示器大多是这种分辨率;而WQXGA(2560×1600像素)这种分辨率主要是用在30寸的LCD屏幕,比如著名的Apple Cinema Display、Dell UltraSharp 3007WFP/3008 WFP都采用的这种分辨率。

2、分辨率比

而所谓的4:3、16:9、16:10、21:9这些比值其实就是 分辨率中横向像素与竖向像素的比值 。4:3是我们最初所用的分辨率尺寸比,以前的电脑屏幕几乎都是4:3;随后宽屏显示器出现,16:10开始流行,比较常见的分辨率有1280×800像素。

3、色彩数量

屏幕颜色是由色阶来决定。色阶是表示手机液晶显示屏亮度强弱的指数标准,也就是通常所说的色彩指数,表示了色彩的丰满程度。

目前手机的色阶指数从低到高可分为:最低单色,其次是256色、4096色、 65536色、26万色、1600万色。

256=2的8次方,即8位彩色;依次类推,65536色=2的16次方,即通常所说的16位真彩色;26万=2的18次方,也就是18位真彩;1600 万=2的24次方,也就是24位真彩。

目前手机能达到的色彩数量也是限制美术人员发挥的一个重要瓶颈。将色阶高的图片放到色阶低的手机上,会产生图片色彩的失真,有的颜色无法区分,色偏严重。所以,设计人员需要根据实际手机进行图片绘制。

4、CPU

 一台手机像电脑一样具有CPU和内存的,特别是智能手机目前越来越普遍,更高的CPU硬件配置将成为手机发展的一个趋势,双核、四核的手机CPU已出现。

CPU具有运算器和控制器功能,是手机的心脏,构成了系统的控制中心,对各部件进行统一协调和控制。

主频是衡量手机CPU性能高低的一个重要技术参数,频率越高,表明指令的执行速度越快,指令的执行时间也就越短,对信息的处理能力与效率就高。

德州仪器、Marvell公司、高通(QUALCOMM)公司是业界较有名的手机CPU厂商。

5、内存

手机上的内存分为RAM和ROM,其中RAM是动态内存,相当于电脑的内存,是影响手机程序运行性能的重要指标,在RAM中的数据在手机关闭后丢失。目前来说,512M的RAM可以较好地保证手机使用的流畅性。

ROM则相当于电脑的硬盘,用于存储手机操作系统、应用程序和用户的文件,ROM中的信息在掉电后并不会丢失。随着手机上安装程序的增多,以及数据信息的累加,ROM的可用空间会不断减少。如果ROM的空间太少,就会影响到手机的操作速度。这一点和电脑引导盘空间(例如:Windows系统的C盘)的减少会影响电脑的使用类似。

手机的大小可以通过增加SD卡来做进一步扩充,一般用于存放用户的文件,例如视频、音频文件。可以将其理解为电脑上的外接移动硬盘。

6、像素单位

dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用dp,不依赖像素。

px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。

pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;

sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。

由此,根据 google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知 Android 默认使用 sp 作为字号单位。

还有, google代码里边所用的单位都是以px为默认单位的.

项目组织结构

查看项目结构方式有如下几种:

一、Project视图模式

.idea

关于IntelliJIDEA配置文件目录

app

应用模块的目录和文件。

build

这个目录存储所有项目模块的编译输出。

gradle

包含gradle-wrapper文件

.gitignore

明确Git应当忽略的文件

build.gradle

自定义构建系统属性,你可以编辑当前文件指定被应用模块使用的默认构建配置,同时可以指定你的密钥库、别名以便于构建工具能够在构建释放模式时签署你的应用。此文件是不可或缺的项目文件,以至于在项目源版本控制系统中进行维护。

gradle.properties

项目全局Gradle配置。

gradlew

Unix的Gradle启动脚本。

gradlew.bat

Windows的Gradle启动脚本。

local.properties

自定义构建系统的电脑属性,例如:SDK安装路径。由于该文件的内容是取决于本地安装的SDK,该local.properties不应在源版本控制系统进行维护。

.iml

被IntelliJIDEA创建的模块文件,用于保存模块信息。

settings.gradle

指定要构建的子项目。

二、Android视图模式

Android模块是最终被编译到基于你构建配置的apk文件的模块。它们包括:项目源代码、资源文件,默认为你生成大部分的源码、资源文件,然而其余的文件在需要时被创建。下面的目录和文件构成了Android应用模块:

build/

包括为指定构建不同的文件夹,保存在主应用模块中。

libs/

包括所有的私有库

src/

包括根目录的Activity文件,该文件保存在:src/main/java//.java路径下。其它源代码文件(例如:.java或.aidl文件)也保存在这里。

main/java/com..

包含应用于AppActivity的Java源代码。

main/jni

包含正在使用的Java本地接口的本地代码

main/gen

包含由AndroidStudio生成的文件,例如:R.java文件、从AIDL创建的接口文件。

main/assets

这个文件夹是空的,你可以使用它来保存原始的资产文件,你保存在这里的文件被编译进入apk文件中,同时原始的文件名被保留。可以使用的IRI以同样的方式在此目录导航作为一个典型的文件系统,并使用AssetManager读文件作为字节流。例如:这是纹理和游戏数据存放的好位置。

main/res

包含应用的资源,比如:drawable文件,布局文件和字符串值在下面的目录里。

anim/

关于那将被编译成animation对象的XML文件

color/

关于描述colors的XML文件

drawable/

关于位图文件、图片和描述绘制图形或绘制对象的XML文件包括多种状态(标准、按下或聚焦)

mipmap/

关于APP启动的图标,Android保留的这些资源在这个文件夹里(同时指定密度的文件夹,比如:mipmap-xxhdpi)不管你要安装APP的设备的分辨率,这样的方式使得启动app时为你APP应用去选择最好的分辨率在桌面屏幕上显示。

layout/

关于将要被编译到屏幕布局(或称为屏幕一部分)的XML文件

menu/

关于定义应用菜单的XML文件

raw/

关于原始的资产文件。保存在该文件夹中的资产文件本质上和保存在assets/目录下是一样的。唯一的区别是你如何访问它们。这些文件由aapt处理,同时必须由R类唯一标识的应用引用,例如:这个文件夹是放置媒体文件的好地方,比如 MP3或Ogg 文件。

values/

关于XML元素标签定义的XML文件。不像res/目录下的其它资源,这些资源被写入这个文件夹的XML文件不是通过文件名引用,而是XML元素标签控制在XML定义的文件怎么替换成R类

xml/

关于冗余的XML用于配置应用组件的文件。例如:一个XML文件定义了PreferenceScreen,APPWidgetProviderInfo,或 SearchabilityMetadata。

AndroidManifest.xml/

该控制文件描述了当前应用和每一个组件的性质。例如,它描述:有关activity,services,intent receivers,和content provider特有的性质;被请求的权限;必须的外在的库;被需要的支持的API设备特性等等。

.gitignore/

指定被git忽略的文件。

app.iml/

IntelliJ IDEA 模块。

build.gradle/

自定义构建系统的属性。你可以编辑当前文件来重写被manifest文件使用的默认构建配置,同时也可以设置你的密钥库、别名的位置以便于构建工具能够在构建释放模块时签名你的应用。这是项目不可或缺的一个文件,以至于在原版本控制系统中维护。

proguard-rules.pro/

ProGuard的设置文件。

三、Packages视图模式

当前项目所有的文件夹,比如:android.support.v7.appcompat、cn.teachcourse.hzl.main,方便快速定位指定文件夹下的内容

四、Scratches视图模式

Scratches的意思是“划痕;抓痕”,选中该下拉项,底下无内容

Android项目中的一些重要文件

*R.java文件

R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。R.java文件中定义了一个类——R,R类中包含很多静态类,且静态类的名字都与res中的一个名字对应,即R类定义该项目所有资源的索引

通过R.java我们可以很快地查找我们需要的资源,另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。

*AndroidManifest.xml文件

项目的总配置文件,记录应用中所使用的各种组件。这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。AndroidManifest.xml将包含如下设置:application permissions、Activities、intent filters等。

调试Android程序

一、Android Studio Logcat的使用

 logcat的5大级别

info:普通信息

warning:警告

Error:错误,常用

Debug:debug

Assert:断言,没用过

Verbose:冗余,基本没用

输出log的方法

为了快速找到我们需要的log,一般会在log的输出信息前加“”###“,这样便于查找

filter中设置,这样可以快速找到需要的log

 二、用Toast显示消息

Android中提供一种简单的Toast消息提示框机制,可以在用户点击了某些按钮后,提示用户一些信息,提示的信息不能被用户点击,Toast的提示信息根据用户设置的显示时间后自动消失。Toast的提示信息可以在调试程序的时候方便的显示某些想显示的东西。

有两种方法创建Toast

第一种方法的Java代码:

makeText(Context context, int resId, int duration)

参数:context是toast显示在哪个上下文,通常是当前Activity;resId指显示内容引用Resouce那条数据,就是从R类中去指定显示的消息内容;duration指定显示时间,Toast默认有LENGTH_SHORT和LENGTH_LONG两常量,分别表示短时间显示和长时间显示。

第二种方法的Java代码:

makeText(Context context, CharSequence text, int duration)

参数context和duration与第一个方法相同,参数text可以自己写消息内容。

用上面任意方法创建Toast对象之后调用方法show()即可显示。

Toast toast = Toast.makeText(ToastDemoActivity.this, "这是一个普通的Toast!", Toast.LENGTH_SHORT);toast.show();

*另外也可以通过设置断点,单元测试等方式调试程序

重点:

VGA、QVGA、HVGA、WVGA、SVGA

像素单位dp与sp

项目结构与重要文件

logcat与Toast



第三章 第一个Android程序的评论 (共 条)

分享到微博请遵守国家法律