【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!...
????? 今天講下在Surfaceview中如何實現兩個或者多個Activity之間的切換與數據交互,為了更形象一些我做了一個游戲登錄界面的demo,其中對于輸入界面的布局這些我也是隨意寫了下,主要是實現功能并沒有花時間去美化,所以大家可以自己去xml或者代碼中去改變布局,每個小組件的寬高等。好了,下面先上圖(本人超愛~哆啦A夢,所以少不了用哆啦A夢的圖了,娃哈哈)
?????
?????
?????
????? 由于代碼中一共寫了三個類,這里不再全部貼出來,不方便;大家可以在文章的末尾去下載源碼;
????? 兩個activity之間切換我概括的分為兩步:
????? 1. 代碼實現切換操作。2.配置中聲明另外一個acitivity!
????? 我們先看第一步:這里是觸屏處理中的一段代碼:
public boolean onTouchEvent(MotionEvent event) { float pointx = event.getX(); float pointy = event.getY(); if (pointx > bp_x + 14 && pointx < bp_x + 14 + 117) { if (pointy > bp_y + 43 && pointy < bp_y + 43 + 15) { // 帳號 Intent i = new Intent();// 得到一個意圖的實例 i.putExtra("count", 1);// 寫出數據 i.putExtra("himi", str_zh); i.setClass(MainActivity.instance, Register.class);// 設置當前activity以及將要操作的類 MainActivity.instance.startActivity(i);// 用當前activity來啟動另外一個activity } } }????? 顯示定義一個intent 對象,Intent 這個類的機制是協助交互的,詳細的說明這里不多講;
????? Intent 中的putExtra()函數是起到兩個activity之間交互交互的,這個方法類似 hashtable 或者hashmap中的put是一樣的,第一個參數是key(索引) ,后一個參數volue(值),根據key我們可以得到對應的volue了。那么后面我也附上接受的處理。
????? Intent 中的setClass()函數也是傳入兩個參數,第一個是傳入當前實例的activity對象,后面一個參數指需要打開的activity這個類!然后我們就可以利用當前activity對象來啟動另外一個activity了。然后我們看下在另外一個activity是如何創建并且怎么接受數據的。
package com.himi; 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; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; /** * @author Himi * */ public class Register extends Activity { private Button button_ok; private EditText et; private TextView tv; private LinearLayout ly; private Register rs; private byte count; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); rs = this; ly = new LinearLayout(this); button_ok = new Button(this); button_ok.setWidth(100); button_ok.setText("確定"); button_ok.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (count == 1) { MySurfaceView.str_zh = et.getText().toString(); } else if (count == 2) { MySurfaceView.str_pass = et.getText().toString(); } rs.finish(); } }); Intent intent = this.getIntent(); count = (byte) intent.getIntExtra("count", 0); String temp_str = ""; String temp_str2 = ""; et = new EditText(this); tv = new TextView(this); if (count != 3) { temp_str = intent.getStringExtra("himi"); if (count == 1) { rs.setTitle("請輸入帳號!"); } else { rs.setTitle("請輸入密碼!"); } ly.addView(tv); ly.addView(et); ly.addView(button_ok); if (temp_str != null) { et.setText(temp_str); } } else { temp_str = intent.getStringExtra("himi_zh"); temp_str2 = intent.getStringExtra("himi_pass"); rs.setTitle("您輸入的信息:"); tv.setText("帳號:" + temp_str + "/n" + "密碼" + temp_str2); ly.addView(tv); ly.addView(button_ok); if (temp_str != null) { et.setText(temp_str); } } setContentView(ly); } }????? 以上代碼可以看出,新建一個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!
<activity android:name="com.himi.Register" android:theme="@android:style/Theme.Dialog" android:screenOrientation="landscape" android:configChanges="keyboardHidden|orientation"> </activity> <!--我是注釋--> <activity android:name="com.himi.Register"></activity><!---->此符號是注釋
這里我們有兩個聲明方法,用注釋隔開了,上面一個聲明中還設定了一些屬性,theme顯示的形式,等等,其實最簡單的聲明也是可以的就像注釋下面那一句聲明就足以起到作用了。
當有新的activity的時候一定要去聲明;千萬不要忘記這一步。
備注:配置中有一屬性 -> android:screenOrientation 這是設置橫屏,所以豎屏中點擊會有問題,如果想豎屏顯示正常那么可以自行刪除xml中的 android:screenOrientation="landscape" 就可以了。
轉載于:https://www.cnblogs.com/Ymete/archive/2013/01/23/2872836.html
總結
以上是生活随笔為你收集整理的【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xfire方式开发和解析webservi
- 下一篇: Android获取系统应用及安装应用的权