Android布局和Junit测试

五大布局Layout:
 LinearLayout 线性布局
 RelativeLayout 相对布局
 AbsoluteLayout 绝对布局
 TableLayout  表格布局
 FrameLayout  帧布局

 

LinearLayout 线性布局

android:orientation="horizontal"      
制定线性布局的排列方式     
水平 horizontal     
垂直 vertical
gravity 控制当前控件内容显示区域
layout_gravity 当前控件在父元素的位置
Layout_weightSum
Layout_weight 额外空间分配(权重)

android:visibility="invisible" 
控制布局是否显示 
显示 visible 
不显示,但占空间 invisible 
隐藏 gone

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="按钮1" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="right|center_vertical"
        android:text="按钮2" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮3" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮1" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="按钮2" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone"
            android:text="按钮3" />
    </LinearLayout>

</LinearLayout>


 

 

 

 

 

RelativeLayout 相对布局

android:layout_toRightOf 在指定控件的右边
android:layout_toLeftOf 在指定控件的左边
android:layout_above  在指定控件的上边
android:layout_below  在指定控件的下边
android:layout_alignBaseline 跟指定控件水平对齐
android:layout_alignLeft 跟指定控件左对齐
android:layout_alignRight 跟指定控件右对齐
android:layout_alignTop 跟指定控件顶部对齐
android:layout_alignBottom 跟指定控件底部对齐
android:layout_alignParentLeft 是否跟父布局左对齐
android:layout_alignParentTop 是否跟父布局顶部对齐
android:layout_alignParentRight 是否跟父布局右对齐
android:layout_alignParentBottom 是否跟父布局底部对齐
android:layout_centerVertical 在父布局中垂直居中
android:layout_centerHorizontal 在父布局中水平居中
android:layout_centerInParent 在父布局中居中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="进攻" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:text="左勾拳" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:text="右勾拳" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="逃跑" />

    <Button
        android:id="@+id/btn_bisha"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="大绝招" />
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/btn_bisha"
        android:layout_alignTop="@id/btn_bisha"
        android:text="左" />
    
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/btn_bisha"
        android:layout_centerHorizontal="true"
        android:text="上" />
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/btn_bisha"
        android:layout_alignBaseline="@id/btn_bisha"
        android:text="右" />
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/btn_bisha"
        android:layout_centerHorizontal="true"
        android:text="下" />
</RelativeLayout>


 

 

 

AbsoluteLayout 绝对布局/FrameLayout 帧布局

AbsoluteLayout
android:layout_x 指定控件在父布局的x轴坐标
android:layout_y 指定控件在父布局的y轴坐标

FrameLayout
帧布局每次添加的控件都显示在最上面,最后显示在界面上的是最后添加的一个控件

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="1dp"
        android:layout_y="253dp"
        android:text="按钮" />

</AbsoluteLayout>

 

 

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:layout_width="300px"
        android:layout_height="300px"
        android:layout_gravity="center"
        android:text="最底部" />

    <Button
        android:layout_width="150px"
        android:layout_height="150px"
        android:layout_gravity="center"
        android:text="中间" />
    
    <Button
        android:layout_width="50px"
        android:layout_height="50px"
        android:layout_gravity="center"
        android:text="顶部" />
</FrameLayout>



 

 

TableLayout 表格布局

android:shrinkColumns  收缩列
android:stretchColumns  拉伸列
android:collapseColumns  隐藏列
android:layout_column  指定列(作用在列的身上)
android:layout_span  合并列(作用在列的身上)

TableRow单元行里的单元格的宽度小于默认的宽度时就不起作用,其默认是fill_parent,高度可以自定义大小  

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:shrinkColumns="0"
    android:collapseColumns="0" >

    <TableRow android:layout_height="wrap_content" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一行, 0列" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一行, 1列" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一行, 2列" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一行, 3列" />
    </TableRow>

    <TableRow android:layout_height="wrap_content" >
        
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第二行, 0列" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:layout_span="2"
            android:text="第二行, 1列" />
    </TableRow>

</TableLayout>


 

 

 

 

 

Android中的显示单位

 px (pixels)像素
     一般HVGA代表320x480像素,这个用的比较多。

 dip或dp (device independent pixels)设备独立像素
    这个和设备硬件有关,一般为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。

 sp (scaled pixels — best for text size)比例像素
    主要处理字体的大小,可以根据用户系统的字体自适应。

除了上面三个显示单位,下面还有几个不太常用:
 in (inches)英寸
 mm (millimeters)毫米 
 pt (points)点,1/72英寸

为了适应不同分辨率,不同的像素密度,推荐使用dip ,文字使用sp。

 

 

 

对应用进行单元测试

在实际开发中,开发android软件的过程需要不断地进行测试。而使用Junit测试框架,侧是正规Android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性。
第一步:首先在AndroidManifest.xml中加入下面红色代码:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cn.itcast.action“ android:versionCode="1“  android:versionName="1.0">
 <application android:icon="@drawable/icon" android:label="@string/app_name">
        <uses-library android:name="android.test.runner" />
        ....
 </application>
 <uses-sdk android:minSdkVersion="6" />
 <instrumentation android:name="android.test.InstrumentationTestRunner"
  android:targetPackage="cn.itcast.action" android:label="Tests for My App" />
</manifest>


 

上面targetPackage指定的包要和应用的package相同。
第二步:编写单元测试代码(选择要测试的方法,右键点击“Run As”--“Android Junit Test” ):

import android.test.AndroidTestCase;
import android.util.Log;
public class XMLTest extends AndroidTestCase {
  public void testSomething() throws Throwable {
  Assert.assertTrue(1 + 1 == 3);
  }
}


运行的时候一定要:run-》  Android  Junit  Test

 

 

 

 

你可能感兴趣的:(Android布局和Junit测试)