Android学习(二)layout的详解 1

   通过四天的学习,逐步掌握了布局layout的使用。下面记录的是 FrameLayout和RelativeLayout 的详细使用,包括:在src中建立了activity后配置与之对应的 res/layout 文件与res/values文件,以及AndroidManifest文件。
    首先,先介绍四种布局:
               FrameLayout,RelativeLayout,LinearLayout,TableLayout。
    1> FrameLayout:一个FrameLayout对象好比在屏幕上提前预定好的空白区域,可以填充一些元素在里面。但是 注意!所有的元素都被放在FrameLayout区域的最左上区域。如果一个FrameLayout里面有多个元素,则 后面的元素的显示会重叠在前一个元素上。
    2> RelativeLayout: 这是相对布局,优点是很灵活。里面的元素都是按照各自之间的相对位置来进行排列的。 注意! 相对布局的精确位置的计算只会执行一次,所以,如果一个可视化组件B依赖与A,那么必须要让A出现在B前面。
   3> LinearLayout:是将它自己包含的子元素 按照一个方向进行排列。方向有两种:水平 vertical 或者  竖直 horizonal。
   4> 这是表格布局。这种布局会把包含的元素 以列或者行的形式进行排列。


-------代码步骤解析---------------------------------------------------
  首先在src中 创建一个ActivityMain.java文件,这是程序的入口,也就是你在虚拟机上点击该程序所显示的第一个界面。
  代码如下:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ActivityMain extends Activity {
/**
* 声明button 和 监听器;
*/
Button button0;
Button button1;
Button button2;
Button button3;
OnClickListener listener0;
OnClickListener listener1;
OnClickListener listener2;
OnClickListener listener3;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        listener0 = new OnClickListener(){

public void onClick(View v) {
Intent intent0 = new Intent(ActivityMain.this,ActivityTwo.class);
startActivity(intent0);
}
       
        };
       
        listener1 = new OnClickListener(){
        public void onClick(View v){
        Intent intent1 = new Intent(ActivityMain.this,ActivityThree.class);
        startActivity(intent1);
        }
        };
       
        //负责当前的Activity与main.xml相连;
        setContentView(R.layout.main);
        button0 = (Button)findViewById(R.id.button0);
        button0.setOnClickListener(listener0);
       
        button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(listener1);
       
    }
}


程序中可能看不懂的地方:
    A    onCreate() 是一个重载的函数,在这个函数中,会实现应用程序创建的所执行的过程。(反正每个activity都要重写该方法)
    B    Bundle savedInstanceState:在Activity 的生命周期中,只要跳转了页面,就失去了焦点,则此Activity就被销毁了。那么当一个Activity被pause时,调用onSaveInstanceState()来保存当前的Activity()。用来保存信息的Bundle会同时调用OnRestoreInstanceState() 和 onCreat() 方法。
    C     setContentView(R.layout.main) :负责当前的Activity与 .xml 文件相关联。即显示 .xml中的布局。
    D    Intent intent0 = new Intent(ActivityMain.this,ActivityTwo.class): 表示从当前的Activity跳转到另一个Activity。
    E    startActivity(intent0):当点击按钮时,开始Activity的转换。
    F      button0 = (Button)findViewById(R.id.button0);
           button0.setOnClickListener(listener0);
       表示,找到按钮所对应的id值,点击按钮,变触动监听器。


     ActivityMain 对应的 .xml 文件代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
<Button android:id="@+id/button0"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text="@string/button0"
         />
<Button  android:id="@+id/button1"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="@string/button1"
          />    
</LinearLayout>
     代码解析:此布局为LinearLayout。android:orientation="vertical"子元素垂直排列。在Android学习(一)中已经解释了fill_parent与wrap_content的区别。 android:text="@string/**name" 在res/values的string.xml文件中定义
<string name="**name">**name的显示出来的文字</string>。
       @+id/ 会将此id加到R.java中,以便setContentView(R.layout.**)与findViewById(R.id.**)调用。   

你可能感兴趣的:(xml,android,虚拟机,OS,F#)