Android学习笔记(八) —— 手机页面的转换 — setContentView的应用

  在网页的世界里,想要在两个网页间做转换,只要利用超链接(HyperLink)就可以实现,但在手机的世界里,要如何实现手机页面之间的转换呢?最简单的方式就是改变Activity的Layout。在这个范例里头,将布局两个Layout,分别为Layout1(main.xml)与Layout2(myLayout.xml),默认载入的Layout为main.xml,并且Layout1当中创建一个按钮,当单机按钮时,显示第二个Layout(myLayout.xml);同样地,在Layout2里也设计一个按钮,当单机第二个Layout的按钮之后,则显示回原来的Layout1。

运行结果:

点击Go to layout2跳到如下界面

再点击Go to layout1回到上个界面

步骤:

step1:新建Android项目EX03_08_setContentViewDemo

step2:res->values 添加 color.xml

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <color name="white">#FFFFFF</color>
    <color name="black">#000000</color>
    <color name="pink">#FFC0CB</color>
    <color name="red">#FF0000</color>
</resources>

step3:res->value->main.xml

为了凸显Layout间切换的效果,特别改变两个Layout的背景色及字体颜色和输出文字。在main.xml中定义其背景色为黑色,字体颜色为红色,输出文字为“Layout1”。

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="
http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black">
<TextView

     android:id="@+id/text1"

     android:textSize="20sp"
     android:textColor="@color/red"
     android:layout_width="220dp"
     android:layout_height="40dp"
     android:layout_x="50dp"
     android:layout_y="32dp"
     android:text="layout1"/>

<Button
     android:id="@+id/button1"
     android:textColor="@color/red"
     android:layout_width="220dp"
     android:layout_height="wrap_content"
     android:layout_x="50dp"
     android:layout_y="82dp"
     android:text="Go to Layout2"/>

</AbsoluteLayout>

step4:res->value 添加 mylayout.xml

mylayout.xml中背景色为粉色,字体颜色为黑色,输出文字为“Layout2”。

<?xml version="1.0" encoding="UTF-8"?>

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/pink" >

    <TextView
        android:id="@+id/text2"

        android:textSize="20sp"
        android:textColor="@color/black"
       
android:layout_width="220dp"
        android:layout_height="40dp"
        android:layout_x="50dp"
        android:layout_y="32dp"
       
android:text="layout2"
        />
   
    <Button

        android:id="@+id/button2"
        android:textColor="@color/black"
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:layout_x="50dp"
        android:layout_y="82dp"
        android:text="Go to Layout1"/>
</AbsoluteLayout>

step5:EX03_08_setContentViewDemo.java

  在主程序中,预加载的Layout是main.xml,屏幕上显示的是黑色背景的"Layout1",在第一个Layout上的按钮被单击的同时,改变Activity的Layout为mylayout.xml,屏幕上显示变为粉色背景的“Layout2”,并利用Button单击时,调用方法的不同做两个Layout间的切换。

package com.example.ex03_08_setcontentviewdemo;

import android.os.Bundle;
import android.app.Activity;

import android.view.View;
import android.widget.Button;

public class EX03_08_setContentViewDemo extends Activity {

/**Called when the Activity is first created*/
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /*载入main.xml Layout*/
        setContentView(R.layout.main);
       
        /*以findViewById()取得Button对象,并添加onCLickListener*/
        Button b1 = (Button)findViewById(R.id.button1);
        b1.setOnClickListener(new Button.OnClickListener(){
         public void onClick(View v){
         jumpToLayout2();
         }
        });

    }

    
    /*method jumpToLayout2:将layout由main.xml切换成mylayout.xml*/
    public void jumpToLayout2(){
        /*将layout改成mylayout.xml*/
        setContentView(R.layout.mylayout);
     
        /*以findViewById()取得Button对象,并添加onClickListener*/
        Button b2 = (Button)findViewById(R.id.button2);
        b2.setOnClickListener(new Button.OnClickListener(){
        public void onClick(View v){
            jumpToLayout1();
        }
     });
    }
   
    /*method jumpToLayout1:将layout由mylayout.xml切换成main.xml*/
    public void jumpToLayout1(){
        /*将layout改成main.xml*/
        setContentView(R.layout.main);
     
        /*以findViewById()取得Button对象,并添加onClickListener*/
        Button b1 = (Button)findViewById(R.id.button1);
        b1.setOnClickListener(new Button.OnClickListener(){
        public void onClick(View v){
             jumpToLayout2();
        }
     });
    }

}

 

扩展学习:

  运用改变Activity Layout这个技巧,就可作出手机页面转换的效果,当然亦可搭配Style和Theme的设置,进行更加灵活的布局配置运用,例如,让用户自行决定要使用的系统样式,背景及文字颜色等,接着直接应用来改变布局。

  再者,利用setContentView来置换页面还有一个特别的有点,即所有程序里的变量皆存在相同的状态,无论是类成员变量,类函数等,皆可以在一个Activity的状态中直接取得,并没有参数传递的问题。打个比喻:Layout1收集了用户输入的信用卡卡号等付款信息,在“下一步”显示Layout2使之显示订单信息,让用户进行确认,并在单机按钮后,调用Layout3进行刷卡Gateway的授权操作,这当中皆没有需要传递的宾亮,其手法是将所需要的字段数据以类成员变量作如下声明:

public class EX03_08 extends Activity{

        public String colVar1;

        public String colVar2;

        public String colVar3;

        /*Called when the activity is first created*/

        public void onCreate(Bundle savedInstanceState){

        //

        ........

        }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值