一、五大布局(layout)

android中的用五大布局:LinearLayout (线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)

1.LinearLayout 线性布局,将模块以线性进行排序

LinearLayout以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有 一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以 及互相对齐(相对一个元素的右对齐、中间对齐或者左对齐)。

2.AbsoluteLayout 绝对布局,常用于游戏开发

AbsoluteLayout 可以让子元素指定准确的x/y坐标值,并显示在屏幕上。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。AbsoluteLayout 没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用 AbsoluteLayout ,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。

3.RelativeLayout 相对布局,对于界面适配很有帮助

RelativeLayout 允许子元素指定他们相对于其它元素或父元素的位置(通过ID 指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来 排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用XML 来指定这个 layout ,在你定义它之前,被关联的元素必须定义。

4.FrameLayout 帧布局,类似html中的div层,视频播放中的帧

FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前 一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。

5.TableLayout 表格布局

TableLayout 将子元素的位置分配到行或列中。一个TableLayout 由许多的TableRow 组成,每个TableRow都会定义一个 row (事实上,你可以定义其它的子对象,这在下面会解释到)。TableLayout 容器不会显示rowcloumns 或cell 的边框线。每个 row 拥有0个或多个的cell ;每个cell 拥有一个View 对象。表格由列和行组成许多的单元格。表格允许单元格为空。单元格不能跨列,这与HTML 中的不一样。

二、Android中的显示单位

 1.px (pixels)像素

一般HVGA代表320x480像素,开发时这个用的比较多,因为屏幕越小启动速度越快。

2.dip或dp (device independent pixels)设备独立像素

这个和设备硬件有关,一般为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。

3.sp (scaled pixels — best for text size)比例像素

主要处理字体的大小,可以根据系统的字体自适应。

4.除了上面三个显示单位,下面还有几个不太常用:

in (inches)英寸
mm (millimeters)毫米 
pt (points)点,1/72英寸
为了适应不同分辨率,不同的像素密度,推荐使用dip ,文字使用sp。

 三、android应用如何进行单元测试

摘要:将下列代码拷到要测试的项目<application>下:

 <uses-library android:name="android.test.runner" />

将下列代码拷到要测试的项目的<manifest>下:

 <instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.amos.androidjunit" />

 

1.创建一个普通android项目

创建一个名为androidjunit, android application project 项目

注:填好名称后一直next即可。

2.创建一个test项目,如下所示

3.配置androidjunit项目

将android test项目中的AndroidManifest.xml,如下所示,加粗的部分拷到要测试的项目的AndroidManifest.xml中位置类似

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.amos.androidjunit.test"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.amos.androidjunit" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application> </manifest>

将下列代码拷到对应的项目<application>下:

 <uses-library android:name="android.test.runner" />

将下列代码拷到对应的项目的<manifest>下:

 <instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.amos.androidjunit" />

4.写个测试例子,进行测试

com.amos.androidjunit.service.CalcService.java

package com.amos.androidjunit.service;
public class CalcService {
/*
* 做相加的方法
*/
public int add(int x, int y) {
int result = x + y;
return result;
}
/*
* 做相减的方法
*/
public int sub(int x, int y) {
int result = x - y;
return result;
}
}

com.amos.androidjunit.test.testcalc.java

package com.amos.androidjunit.test;
import com.amos.androidjunit.service.CalcService;
import android.test.AndroidTestCase;
import android.util.Log;
public class testcalc extends AndroidTestCase{
private static String tag = "testcalc";
public void test_add() throws Exception{
CalcService service = new CalcService();
int result = service.add(3, 5);
assertEquals(0, result);
}
public void test_sub() throws Exception{
CalcService service = new CalcService();
assertEquals(5, service.sub(10, 5));
}
@Override
protected void setUp() throws Exception {
//在测试前做一些初始化的操作
Log.i(tag,"初始化已经开始。。");
}
@Override
protected void tearDown() throws Exception {
//在测试后做一些清理方面的操作
Log.i(tag,"清理已经开始。。");
}
}

如下图所示进行测试:

注:1.选择要测试的方法,右键点击“Run As”--“Android Junit Test”

2.outline可以从window -->show view里找到,或者window-->reset perspective

四、android sdk源码下载

以下地址有各个版本android sdk源代码,而且持续更新,相当不错,这里做个备份

http://repository.grepcode.com/java/ext/com/google/android/android/

注:本文页面布局中部分内容转自:http://blog.csdn.net/android_tutor/article/details/4779097

android开发学习---layout布局、显示单位和如何进行单元测试的更多相关文章

  1. Android开发学习之LauncherActivity开发启动的列表

    Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果:   建立主Activity:OtherActivity.java [jav ...

  2. Android开发学习之路--基于vitamio的视频播放器(二)

      终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...

  3. Android开发学习之路--网络编程之xml、json

    一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...

  4. Android开发学习之路--Activity之初体验

    环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看androi ...

  5. Android开发学习总结(一)——搭建最新版本的Android开发环境

    Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...

  6. Android开发学习之路--Android Studio cmake编译ffmpeg

      最新的android studio2.2引入了cmake可以很好地实现ndk的编写.这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路– ...

  7. Android开发学习路线的七个阶段和步骤

    Android开发学习路线的七个阶段和步骤           Android学习参考路线     第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和St ...

  8. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  9. Android开发学习路线图

    Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...

随机推荐

  1. 如何在IIS 7.5中部署Asp.Net MVC 5的网站

    0 Sign in to vote 系统是 windwos 2008 已经安装.Net 4.0 和 .Net 4.5 已经安装MVC4 的需要文件,MVC5 找不见下载地方,求各位大哥告知一下在哪里可 ...

  2. mysql的ONLY_FULL_GROUP_BY语义 --转自http://www.wtoutiao.com/p/19dh3ec.html

    执行SET GLOBAL sql_mode = ''; 把sql_mode 改成非only_full_group_by模式.验证是否生效 SELECT @@GLOBAL.sql_mode 或 SELE ...

  3. Action、Action<T>、Func<T> 匿名函数的写法

    void ht_HLB_Set(Dictionary<int, int> dic) { //匿名函数 Action<int> fun = (int jhShare_Iid) = ...

  4. zookeeper安装及部署

    安装及部署 一. 单机安装.配置 1.下载zookeeper二进制安装包 下载 curl -L -O http://apache.fayea.com/zookeeper/stable/zookeepe ...

  5. 两个二进制数多少个位(bit)不同

    class Solution { public: /** * 获得两个整形二进制表达位数不同的数量 * * @param m 整数m * @param n 整数n * @return 整型 */ in ...

  6. js 字符串截取

    substr方法: text.substr(start[,length]); text:要提取子字符串的字符串或String对象.必选 start:子字符串的起始位置.以0开始索引.必选 length ...

  7. 性能测试框架Locust初学笔记

    Locust初探 Locust是一款类似于Jmeter开源负载测试工具,所不同的是它是用python实现,并支持python脚本. locust提供web ui界面,能够方便用户实时监控脚本运行状态. ...

  8. 常见面试问题 - Useful Links

    1. Data Structure & Algorithm - 二叉树 http://baike.baidu.com/link?url=jKNdOOipbp-gloTVmSU4PT2mVB94 ...

  9. 高亮代码显示之HTML困惑

    近期做样式库,需要将HTML代码高亮,开始寻找相关的插件. 看到highlight.js,看到它主题样式如此之多,支持语言也如此之多,以为找到了神器.不想这只是痛苦的开始,为了让它支持HTML,我尝试 ...

  10. NUGET命令

    主题 about_NuGet 简短说明 提供有关 NuGet 程序包管理器命令的信息. 详细说明 本主题介绍 NuGet 程序包管理器命令.NuGet 是一种集成的程序包 管理工具,用于将库和工具添加 ...