第一章 初识Android

一、Android应用程序框架

src:存放的是应用程序使用到的java文件
gen:系统自动生成的目录。不需要程序员进行修改。包含了R文件,该文件中包含了程序中使用到的资源文件对应生成的唯一的资源ID。注意:如果R文件发生错误一般都是资源文件出现的错误。
assets:存放应用程序使用的资源。在这个文件夹存在的资源需要读取的时候使用的是二进制流。存在于这个文件夹中的文件会被原封不动地打包进入apk。
bin:编译生成的目录。主要获取里面生成的apk文件。
libs:存放三方的jar文件的目录。
res:资源存储的目录。

  1. res/drawable:存放的是图片资源。存放不同分辨率对应使用的图片资源。按照分辨率的由小到大分别是:low-middle-high-xh-xxh。
  2. res/layout:包含了应用程序中使用到的一系列的布局文件。使用的时候一般会在代码中通过R.layout.XXX
  3. menu:包含了菜单中使用的item定义的内容。
  4. res/value:包含了应用程序使用到的尺寸(dimens.xml)、字符串(strings.xml)、样式(styles.xml)等资源。通过@进行调用。如果在xml中使用res中的资源,大部分都是通过资源文件/资源的name
  5. res/values-sw600dp:使用sw属性针对屏幕进行区分。使用在多屏幕适配的过程中。
  6. res/values-v11 v14:同样在多屏幕适配中考虑。
  7. AndroidManifest.xml:应用程序级别的配置文件。很重要。定义了应用程序的主包名、版本号、最低的sdk版本和目标sdk版本。还包括管理页面的活动(Activity),在Activity的声明标签中,存在IntetFilter,又叫做Intent的过滤器。用于过滤对应的Intent对象来实现到底呈现的是哪一个界面。
  8. proguard-project.txt:用来进行代码混淆的文件。
  9. project.properties:可以修改目标版本。
  10. raw:存放应用程序中使用到的媒体资源。

二、常用的调试工具

  1. adb:Android Debug Bridge安卓调试桥,在PC的CMD中使用adb shell可以进入连接在PC上的模拟器或真机的Linux环境。
  2. DDMS:全称是Davik Debug Monitor Service,是Android开发环境中的Dalvik虚拟机调试监控服务。
  3. AVD Manager:AVD的管理器,用于新建和管理现有的Android模拟器。
  4. LogCat:日志记录工具。Log.i("SNG","该句代码被执行");
  5. SDK Manager:SDK的管理器,使用自动更新的方式从Google服务器下载最新的SDK版本及工具到本机。

三、Android布局介绍

  1. Android中所有UI(用户界面)元素都是使用View和ViewGroup对象建立的。
    (1)View是一个可以将一些信息绘制在屏幕上并与用户产生交互的对象(比如:一个按钮)
    (2)ViewGroup是一个包含多个View和ViewGroup的容器,用来定义UI布局。
    (3)ViewGruop是View的子类。
  2. UI开发分类
    (1)界面布局开发——定义界面的布局。
    (2)控件开发——定义单个界面元素。
    (3)AdapterView与Adapter适配器开发——列表显示。
    (4)UI组件开发——对话框、通知、菜单等。
    (5)自定义View、图形图像和动画——通过代码,自行绘制界面。
  3. 常用的布局:
    (1)LinerLayout——线性布局
    (2)RelativeLayout——相对布局
    (3)FrameLayout——帧布局
    (4)TableLayout——表格布局
    (5)AbsoluteLayout——绝对布局
    (6)GridLayout——网格布局
  4. 布局定义方式:
    (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× 480
    800
    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>

  1. orientation:用来指定当前的线性布局排布的方向(horizontal/vertical),默认为水平。
  2. margin和padding:控件可以设置margin和padding。
  3. wrap_content关键字:环绕内容(和内容同宽)。
  4. match_parent关键字:匹配父类(和父类同宽)。
  5. gravity:表示控件的内部内容的对齐方式(类似text-align)。
  6. layout_gravity:用于设置该view在父类中的对齐方式。 <strong>注意:如果线性布局的排布方式为水平,那么控件的layout_gravity在水平方向上就不起作用;垂直排布类似。</strong>
  7. layout_weight——LinearLayout特有的属性:表示比重,可实现百分比布局。 <strong>如果控件为“<i>match_parent</i>”,则layout_weight的值与占用比重是反相关的,其值越大,占用的比重越小。</strong> <strong>如果控件为“<i>wrap_content</i>”,则对比重的判断会变成正相关,其值越小,占用的比重越小。</strong> <strong>注意:系统会先给无权重的控件分配空间后再对需要百分比的空间大小进行百分比的划分。</strong>

3. XML中RelativeLayout布局中的各种属性</h2>

  1. layout_alignParentXXX:对齐父容器XXX部
  2. layout_marginXXX:表示间距
  3. layout_centerVertical:垂直居中
  4. layout_centerHorizontal:水平居中
  5. layout_centerInparent:正中央
  6. layout_alignXXX:表示对齐方式
  7. layout_toRightOf:在某个控件对齐
  8. layout_alignBaseline:基准线对齐
  9. 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:行规定。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容