• android开发学习---layout布局、显示单位和如何进行单元测试


    一、五大布局(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)设备独立像素

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

     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

  • 相关阅读:
    2018年Q1增长最快的20个技能
    微信备份方法
    [转] 浅谈 OpenResty
    Angular默认路由策略-PathLocationStrategy策略页面刷新报404错误解决方案
    [转] ABP框架Web API跨域问题的解决方案
    [转] Win10插入U盘后双击无法打开,无法访问,显示设备未就绪;驱动哥帮你解决
    java jdk 8u191 官网下载地址
    IDEA 2019 注册码
    [JAVA] maven 阿里云节点 settings.xml
    .net webapi跨域 web.config配置
  • 原文地址:https://www.cnblogs.com/amosli/p/3582833.html
Copyright © 2020-2023  润新知