Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 【Android游戲開發之五】游戲注冊界面Demo-實現兩個Activity之間的切換與數據交互!

【Android游戲開發之五】游戲注冊界面Demo-實現兩個Activity之間的切換與數據交互!

編輯:Android開發實例

        今天講下在Surfaceview中如何實現兩個或者多個Activity之間的切換與數據交互,為了更形象一些我做了一個游戲登錄界面的demo,其中對於輸入界面的布局這些我也是隨意寫了下,主要是實現功能並沒有花時間去美化,所以大家可以自己去xml或者代碼中去改變布局,每個小組件的寬高等。好了,下面先上圖(本人超愛~哆啦A夢,所以少不了用哆啦A夢的圖了,娃哈哈)

 

 

 

 

 

 

 

由於代碼中一共寫了三個類,這裡不再全部貼出來,不方便;大家可以在文章的末尾去下載源碼;

兩個activity之間切換我概括的分為兩步:

1. 代碼實現切換操作。2.配置中聲明另外一個acitivity!

 

我們先看第一步:這裡是觸屏處理中的一段代碼:

 

 

  1. public boolean onTouchEvent(MotionEvent event) {  
  2.     float pointx = event.getX();  
  3.     float pointy = event.getY();  
  4.     if (pointx > bp_x + 14 && pointx < bp_x + 14 + 117) {  
  5.         if (pointy > bp_y + 43 && pointy < bp_y + 43 + 15) {  
  6.             // 帳號  
  7.             Intent i = new Intent();// 得到一個意圖的實例  
  8.             i.putExtra("count", 1);// 寫出數據  
  9.             i.putExtra("himi", str_zh);  
  10.             i.setClass(MainActivity.instance, Register.class);// 設置當前activity以及將要操作的類  
  11.             MainActivity.instance.startActivity(i);// 用當前activity來啟動另外一個activity  
  12.         }  
  13.     }  

 

顯示定義一個intent 對象,Intent 這個類的機制是協助交互的,詳細的說明這裡不多講;

 Intent 中的putExtra()函數是起到兩個activity之間交互交互的,這個方法類似 hashtable 或者hashmap中的put是一樣的,第一個參數是key(索引) ,後一個參數volue(值),根據key我們可以得到對應的volue了。那麼後面我也附上接受的處理。

 Intent 中的setClass()函數也是傳入兩個參數,第一個是傳入當前實例的activity對象,後面一個參數指需要打開的activity這個類!然後我們就可以利用當前activity對象來啟動另外一個activity了。然後我們看下在另外一個activity是如何創建並且怎麼接受數據的。

 

  1. /**  
  2.  *   
  3.  */ 
  4. package com.himi;  
  5. import android.app.Activity;  
  6. import android.content.Intent;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.widget.Button;  
  11. import android.widget.EditText;  
  12. import android.widget.LinearLayout;  
  13. import android.widget.TextView;  
  14. /**  
  15.  * @author Himi  
  16.  *   
  17.  */ 
  18. public class Register extends Activity {  
  19.     private Button button_ok;  
  20.     private EditText et;  
  21.     private TextView tv;  
  22.     private LinearLayout ly;  
  23.     private Register rs;  
  24.     private byte count;  
  25.     @Override 
  26.     protected void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         rs = this;  
  29.         ly = new LinearLayout(this);  
  30.         button_ok = new Button(this);  
  31.         button_ok.setWidth(100);  
  32.         button_ok.setText("確定");  
  33.         button_ok.setOnClickListener(new OnClickListener() {  
  34.             public void onClick(View v) {  
  35.                 if (count == 1) {  
  36.                     MySurfaceView.str_zh = et.getText().toString();  
  37.                 } else if (count == 2) {  
  38.                     MySurfaceView.str_pass = et.getText().toString();  
  39.                 }  
  40.                 rs.finish();  
  41.             }  
  42.         });  
  43.         Intent intent = this.getIntent();  
  44.         count = (byte) intent.getIntExtra("count", 0);  
  45.         String temp_str = "";  
  46.         String temp_str2 = "";  
  47.         et = new EditText(this);  
  48.         tv = new TextView(this);  
  49.         if (count != 3) {  
  50.             temp_str = intent.getStringExtra("himi");  
  51.             if (count == 1) {  
  52.                 rs.setTitle("請輸入帳號!");  
  53.             } else {  
  54.                 rs.setTitle("請輸入密碼!");  
  55.             }  
  56.             ly.addView(tv);  
  57.             ly.addView(et);  
  58.             ly.addView(button_ok);  
  59.             if (temp_str != null) {  
  60.                 et.setText(temp_str);  
  61.             }  
  62.         } else {  
  63.             temp_str = intent.getStringExtra("himi_zh");  
  64.             temp_str2 = intent.getStringExtra("himi_pass");  
  65.             rs.setTitle("您輸入的信息:");  
  66.             tv.setText("帳號:" + temp_str + "/n" + "密碼" + temp_str2);  
  67.             ly.addView(tv);  
  68.             ly.addView(button_ok);  
  69.             if (temp_str != null) {  
  70.                 et.setText(temp_str);  
  71.             }  
  72.         }  
  73.         setContentView(ly);  
  74.     }  
  75. }  

以上代碼可以看出,新建一個activity其實只需要繼承Activity以及重寫onCreate()方法即可。當然創建的還需要一步很重要的步驟,那麼在第二步中會詳細說明,這裡我們看下是如何接受之前的activity傳來數據的、。

 

Intent intent = this.getIntent();

count = (byte) intent.getIntExtra("count", 0);

接受也是很簡明易懂,創建一個Intent 意圖對象,調用來去getIntExtra函數得到之前傳來的數據,根據key!當然還有getStringExtra()等等函數都是類似,只是根據你傳入的數據不同選擇不同函數罷了。童鞋們應該注意的是getIntExtra中第二個參數是什麼意思,其實就是一個對於找不到key相匹配的時候會默認return 0 ;

 

 

那麼下面介紹第二步:在配置中聲明

    當創建一個activity的時候我們必須去在AndroidMainFeset.xml中去生命我們創建的這個類是個Activity!下面附上xml中的code!

  1. <activity android:name="com.himi.Register" android:theme="@android:style/Theme.Dialog" 
  2.             android:screenOrientation="landscape" android:configChanges="keyboardHidden|orientation">  
  3.         </activity>  
  4.         <!--我是注釋-->  
  5.         <activity android:name="com.himi.Register"></activity> 

 

<!---->此符號是注釋

這裡我們有兩個聲明方法,用注釋隔開了,上面一個聲明中還設定了一些屬性,theme顯示的形式,等等,其實最簡單的聲明也是可以的就像注釋下面那一句聲明就足以起到作用了。

當有新的activity的時候一定要去聲明;千萬不要忘記這一步。

 

 

備注:配置中有一屬性 -> android:screenOrientation 這是設置橫屏,所以豎屏中點擊會有問題,如果想豎屏顯示正常那麼可以自行刪除xml中的  android:screenOrientation="landscape"     就可以了。

 

 

源碼下載地址:http://download.csdn.net/source/2931619

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved