【Android初級】使用setContentView實現頁面的轉換效果(附源碼)

一提到Android中頁面的切換,你是不是只想到了startActivity啟動另一個Activity?
其實在Android中,可以直接利用setContentView達到類似頁面轉換效果的!實現思路如下:

  1. 在第一個Activity的布局中添加一個Button,實現點擊事件
  2. 點擊該Button,調用setContentView,傳入第二個頁面的Layout,第二個頁面就顯示出來了
  3. 第二個頁面的布局中仍然有一個Button,仍然實現其點擊事件
  4. 點擊該Button,調用setContentView,傳入第一個頁面的Layout,第一個頁面就顯示回來了

因此,有點類似相互嵌套調用,源程式碼如下:

`public class ExampleActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_page_layout);

    Button button = findViewById(R.id.buttonGoToLayout2);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // 跳轉到第二個頁面
            jumpToLayout2();
        }
    });
}

private void jumpToLayout2() {
    // 設置第二個頁面的布局
    setContentView(R.layout.layout2);
    Button button2 = findViewById(R.id.buttonGoToLayout1);
    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // 在第二個頁面中,點擊Button,跳轉到第一個頁面
            jumpToLayout1();
        }
    });
}

private void jumpToLayout1() {
    // 設置第一個頁面d的布局
    setContentView(R.layout.main_page_layout);
    Button button = findViewById(R.id.buttonGoToLayout2);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // 點擊第一個頁面的Button,跳轉到第二個頁面
            jumpToLayout2();
        }
    });
}

}`

兩個布局文件如下:

1、第一個頁面布局:main_page_layout.xml

<RelativeLayout xmlns:android="//schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center"> <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="This is Layout One" android:paddingTop="20dp" android:textSize="30sp"/> <Button android:text="Go to Layout Two" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonGoToLayout2" android:layout_marginTop="20dp" android:layout_below="@id/textView1"/> </RelativeLayout>

2、第二個頁面布局:layout2.xml

<RelativeLayout xmlns:android="//schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/black" > <TextView android:id="@+id/textView2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="This is Layout Two" android:paddingTop="20dp" android:textColor="@android:color/white" android:textSize="30sp"/> <Button android:text="Go to Layout One" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonGoToLayout1" android:layout_marginTop="20dp" android:layout_below="@id/textView2"/> </RelativeLayout>

效果圖如下:

通過setContentView實現頁面切換,相比Activity切換有個特別的優點:

所有程式里的變數都存在相同的狀態:類成員變數、類函數等,都可以在同一個Activity中直接獲得,沒有參數傳遞的問題。

Layout1收集了用戶輸入的銀行卡號碼等付款資訊,點擊「下一步」進入Layout2顯示訂單資訊,讓用戶確認,用戶點擊「確認」按鈕後,進入Layout3進行付款的授權操作,整個過程沒有變數的傳遞。

Tags: