一、Android应用程序框架
src:存放的是应用程序使用到的java文件
gen:系统自动生成的目录。不需要程序员进行修改。包含了R文件,该文件中包含了程序中使用到的资源文件对应生成的唯一的资源ID。注意:如果R文件发生错误一般都是资源文件出现的错误。
assets:存放应用程序使用的资源。在这个文件夹存在的资源需要读取的时候使用的是二进制流。存在于这个文件夹中的文件会被原封不动地打包进入apk。
bin:编译生成的目录。主要获取里面生成的apk文件。
libs:存放三方的jar文件的目录。
res:资源存储的目录。
- res/drawable:存放的是图片资源。存放不同分辨率对应使用的图片资源。按照分辨率的由小到大分别是:low-middle-high-xh-xxh。
- res/layout:包含了应用程序中使用到的一系列的布局文件。使用的时候一般会在代码中通过R.layout.XXX
- menu:包含了菜单中使用的item定义的内容。
- res/value:包含了应用程序使用到的尺寸(dimens.xml)、字符串(strings.xml)、样式(styles.xml)等资源。通过@进行调用。如果在xml中使用res中的资源,大部分都是通过资源文件/资源的name
- res/values-sw600dp:使用sw属性针对屏幕进行区分。使用在多屏幕适配的过程中。
- res/values-v11 v14:同样在多屏幕适配中考虑。
- AndroidManifest.xml:应用程序级别的配置文件。很重要。定义了应用程序的主包名、版本号、最低的sdk版本和目标sdk版本。还包括管理页面的活动(Activity),在Activity的声明标签中,存在IntetFilter,又叫做Intent的过滤器。用于过滤对应的Intent对象来实现到底呈现的是哪一个界面。
- proguard-project.txt:用来进行代码混淆的文件。
- project.properties:可以修改目标版本。
- raw:存放应用程序中使用到的媒体资源。
二、常用的调试工具
- adb:Android Debug Bridge安卓调试桥,在PC的CMD中使用adb shell可以进入连接在PC上的模拟器或真机的Linux环境。
- DDMS:全称是Davik Debug Monitor Service,是Android开发环境中的Dalvik虚拟机调试监控服务。
- AVD Manager:AVD的管理器,用于新建和管理现有的Android模拟器。
- LogCat:日志记录工具。Log.i("SNG","该句代码被执行");
- SDK Manager:SDK的管理器,使用自动更新的方式从Google服务器下载最新的SDK版本及工具到本机。
三、Android布局介绍
- Android中所有UI(用户界面)元素都是使用View和ViewGroup对象建立的。
(1)View是一个可以将一些信息绘制在屏幕上并与用户产生交互的对象(比如:一个按钮)
(2)ViewGroup是一个包含多个View和ViewGroup的容器,用来定义UI布局。
(3)ViewGruop是View的子类。 - UI开发分类
(1)界面布局开发——定义界面的布局。
(2)控件开发——定义单个界面元素。
(3)AdapterView与Adapter适配器开发——列表显示。
(4)UI组件开发——对话框、通知、菜单等。
(5)自定义View、图形图像和动画——通过代码,自行绘制界面。 - 常用的布局:
(1)LinerLayout——线性布局
(2)RelativeLayout——相对布局
(3)FrameLayout——帧布局
(4)TableLayout——表格布局
(5)AbsoluteLayout——绝对布局
(6)GridLayout——网格布局 - 布局定义方式:
(1)定义UI布局最常用的方法是使用XML布局文件
(2)如同HTML一样,XML为布局提供了一种可读的结构。
(3)XML中的每个元素都是View或ViewGroup的子孙类的对象。
(4)可以把每一个XML布局文件理解为一个由View和ViewGroup的子孙类对象组成的树。
(5)树根是一个ViewGroup对象,所有的叶结点都是View对象,树的分支结点都是ViewGroup对象。
四、Android UI适配
1. 手机屏幕基本概念
- 屏幕尺寸
屏幕的对角线长度。单位为英寸。
1英寸 = 2.54厘米 - 屏幕分辨率
水平和垂直方向的像素点的个数。单位是px。
1px = 1像素点
一般以垂直像素×水平像素,如1280*720 - 屏幕像素密度
指的是每英寸上的像素点数。单位是dpi/ppi(dot per inch)。
屏幕像素密度与屏幕尺寸和屏幕分辨率有关。
例:5英寸19201080屏幕分辨率的手机,ppi为441:[ 根号(19201920+1080*1080) ]/5 - 屏幕像素密度DPI划分
MDPI:~160dpi 1× 320480
HDPI:~240dpi 1.5× 480800
XHDPI:~320dpi 2×
XXHDPI:~480dpi 3×
XXXHDPI:~640dpi 4×
2. dp dip px sp概念
px:像素点,构成图像的最小单位。
dip/dp:device independent pixels(设备独立像素)。也是密度无关像素。
sp:专门用于文字显示的大小,一般为偶数。
3. UI 线性布局
1. 概念
- LinearLayout,即线性布局,其中的控件为自动按照水平或垂直的方式一次排列。
- RelativeLayout,即相对布局,其中的控件是相对于其他控件的位置进行排布的,而且往往需要定义每一个控件的资源ID。
- TableLayout,即表格布局,属于行和列形式的管理控件,每行为一个TableRow对象,也可以是一个View对象。在TableRow中还可以继续添加其他的控件,每添加一个子控件就成为一列。TableLayout不会生成边框。<strong>它是线性布局的子类。</strong>
- FrameLayout,即帧布局,默认是按照左上角(0,0)开始排布,定义的控件每一个都是以画面的形式进行呈现。最开始定义的控件出现在最下方,最后定义的控件出现在最上面。可用在手机联系人的字母导航显示上,或者用于帧动画。
- AbsoluteLayout,即绝对布局,又可称为坐标布局,可以直接指定子元素的绝对位置,简单直接,直观性强。
- GirdLayout,即网格布局,可实现合并行和列的效果。是在Android4.0后出现的布局。
2. XML中LinearLayout布局的各种属性</h2>
- orientation:用来指定当前的线性布局排布的方向(horizontal/vertical),默认为水平。
- margin和padding:控件可以设置margin和padding。
- wrap_content关键字:环绕内容(和内容同宽)。
- match_parent关键字:匹配父类(和父类同宽)。
- gravity:表示控件的内部内容的对齐方式(类似text-align)。
- layout_gravity:用于设置该view在父类中的对齐方式。 <strong>注意:如果线性布局的排布方式为水平,那么控件的layout_gravity在水平方向上就不起作用;垂直排布类似。</strong>
- layout_weight——LinearLayout特有的属性:表示比重,可实现百分比布局。 <strong>如果控件为“<i>match_parent</i>”,则layout_weight的值与占用比重是反相关的,其值越大,占用的比重越小。</strong> <strong>如果控件为“<i>wrap_content</i>”,则对比重的判断会变成正相关,其值越小,占用的比重越小。</strong> <strong>注意:系统会先给无权重的控件分配空间后再对需要百分比的空间大小进行百分比的划分。</strong>
3. XML中RelativeLayout布局中的各种属性</h2>
- layout_alignParentXXX:对齐父容器XXX部
- layout_marginXXX:表示间距
- layout_centerVertical:垂直居中
- layout_centerHorizontal:水平居中
- layout_centerInparent:正中央
- layout_alignXXX:表示对齐方式
- layout_toRightOf:在某个控件对齐
- layout_alignBaseline:基准线对齐
- layout_below:位于下方
4. XML中TableLayout布局中的各种属性
- collapseColumns:如果该列被标志,则该列会被隐藏。
- stretchColums:拉伸某一列,使得布局显得不紧凑。
- shrinkColumns:回缩某一列,使得整体内容得以呈现。
- TableRow的宽和高可以不指定,系统会自动给定对应的宽和高。
5. XML中AbsoluteLayout布局中的各种属性
- layout_x:确定X坐标,以左上角为顶点。
- layout_y:确定Y坐标,以左上角为顶点。
6. XML中GridLayout网格布局
- 234为布局内控件的属性设置,56为布局标签的属性设置。
- layout_columnSpan:扩展列的数目。
- layout_rowSpan:扩展行的数目。
- layout_gravity:填充方式。
- columCount:列规定。
- rowCount:行规定。
网友评论