Android程序框架2

Android程序框架分析2

上一篇大概总结了目录结构中的R文件和AndroidManifest 文件,我们把目录结构再粘出来,看看布局文件和activity类,如何将布局XML转换成视图对象。目录结构如图1 所示。
这里写图片描述
图1.1 Android 目录结构

布局文件也就是用来设计用户界面的,放置在res/layout文件夹下,我这里的布局文件名为activity_main.xml(没有给大家显示出来,大家试试创建一个工程)。不过还是得要看看这个activity_main.xml 是如何使用XML代码来定义布局文件的。如代码清单1.1 所示。
代码清单1.1 默认的activity布局(activity_main.xml)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.test.MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

你可以看到布局文件默认定义了2个组件:RelativeLayout 和TextView。组件是构成用户界面的模块,可以用来显示文字、图像或进行用户交互等,我们常见那些文本框、按钮、选择框都是组件。如图1.2 就是显示了activity_main.xml 布局文件,你可以看看RelativeLayout 和TextView是如何展示在屏幕上的。
这里写图片描述
图1.2 默认组件的显示

图1.2 中,白色的屏幕就是代码中RelativeLayout显示出来的,Hello World!也就是TextView组件设置的文字。

从代码清单1.1 可看出其 根元素是RelativeLayout组件,所以组件必须指出Android XML资源文件的命名空间属性为:xmlns:android=”http://schemas.android.com/apk/res/android”。而RelativeLayout组件是继承自View子类的ViewGroup组件,类似的还有FrameLayout、TableLayout、LinearLayout。此RelativeLayout组件还包含了一个子组件:TextView。

上面还包括了组件的一些常用属性,接下来我们可以看看。

  • android:layout_width和android:layout_height 属性
    定义组件的宽和高,几乎每类组件都有这两个属性。
    match_parent:视图大小与父视图相同(之前有一个fill_parent等同于match_parent,现在不用了)
    wrap_content:视图大小根据其内容自动调节。

  • android:paddingBottom,android:paddingLeft,android:paddingRight,android:paddingTop属性
    定义的是布局里面的内容距 上下左右 边界的距离。如Hello World!这个TextView的显示,你可以看到距离上下左右的空白处

  • android:text属性
    指定显示的文字内容,注意的是android:text不是直接写字符串字面值,而是引用字符串资源(即strings.xml,在里面定义字符串),你可以打开res/values文件夹中的strings.xml进行查看。如代码清单1.2 strings.xml的内容。

代码清单1.2 strings.xml的内容

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">AndroidTest</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>

</resources>

使用 <string> 标签进行定义字符串,包括name为字符串的名称,以及添加字符串的文字内容。

了解完布局XML文件,接下来看看如何在应用中获取此界面。主要是通过Activity类进行获取。代码清单1.3 所示。
代码清单1.3 Activity活动的默认类文件(我这里的类文件为 MainActivity.java)

package com.example.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

此java类中包含3个方法,咱们先看onCreate(Bundle),其余两个先不看。activity子类的实例被创建后,onCreate(Bundle)方法会被调用,然后需要获取和管理自己的用户界面。使用语句为:setContentView(R.layout.activity_main); 括号中填写的是布局的ID资源参数。
在上一篇中,有讲到R文件的内容,当我们创建一个布局文件时,R文件中会自动生成该布局文件的ID号,则我们就可以使用 R.layout.布局名称 来引用,然后将可以生成布局视图,布局文件中的组件属性也随之完成实例化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值