【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!...
????? 今天講下在Surfaceview中如何實(shí)現(xiàn)兩個(gè)或者多個(gè)Activity之間的切換與數(shù)據(jù)交互,為了更形象一些我做了一個(gè)游戲登錄界面的demo,其中對(duì)于輸入界面的布局這些我也是隨意寫了下,主要是實(shí)現(xiàn)功能并沒有花時(shí)間去美化,所以大家可以自己去xml或者代碼中去改變布局,每個(gè)小組件的寬高等。好了,下面先上圖(本人超愛~哆啦A夢(mèng),所以少不了用哆啦A夢(mèng)的圖了,娃哈哈)
?????
?????
?????
????? 由于代碼中一共寫了三個(gè)類,這里不再全部貼出來,不方便;大家可以在文章的末尾去下載源碼;
????? 兩個(gè)activity之間切換我概括的分為兩步:
????? 1. 代碼實(shí)現(xiàn)切換操作。2.配置中聲明另外一個(gè)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) { // 帳號(hào) Intent i = new Intent();// 得到一個(gè)意圖的實(shí)例 i.putExtra("count", 1);// 寫出數(shù)據(jù) i.putExtra("himi", str_zh); i.setClass(MainActivity.instance, Register.class);// 設(shè)置當(dāng)前activity以及將要操作的類 MainActivity.instance.startActivity(i);// 用當(dāng)前activity來啟動(dòng)另外一個(gè)activity } } }????? 顯示定義一個(gè)intent 對(duì)象,Intent 這個(gè)類的機(jī)制是協(xié)助交互的,詳細(xì)的說明這里不多講;
????? Intent 中的putExtra()函數(shù)是起到兩個(gè)activity之間交互交互的,這個(gè)方法類似 hashtable 或者h(yuǎn)ashmap中的put是一樣的,第一個(gè)參數(shù)是key(索引) ,后一個(gè)參數(shù)volue(值),根據(jù)key我們可以得到對(duì)應(yīng)的volue了。那么后面我也附上接受的處理。
????? Intent 中的setClass()函數(shù)也是傳入兩個(gè)參數(shù),第一個(gè)是傳入當(dāng)前實(shí)例的activity對(duì)象,后面一個(gè)參數(shù)指需要打開的activity這個(gè)類!然后我們就可以利用當(dāng)前activity對(duì)象來啟動(dòng)另外一個(gè)activity了。然后我們看下在另外一個(gè)activity是如何創(chuàng)建并且怎么接受數(shù)據(jù)的。
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("請(qǐng)輸入帳號(hào)!"); } else { rs.setTitle("請(qǐng)輸入密碼!"); } 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("帳號(hào):" + temp_str + "/n" + "密碼" + temp_str2); ly.addView(tv); ly.addView(button_ok); if (temp_str != null) { et.setText(temp_str); } } setContentView(ly); } }????? 以上代碼可以看出,新建一個(gè)activity其實(shí)只需要繼承Activity以及重寫onCreate()方法即可。當(dāng)然創(chuàng)建的還需要一步很重要的步驟,那么在第二步中會(huì)詳細(xì)說明,這里我們看下是如何接受之前的activity傳來數(shù)據(jù)的、。
????? Intent intent = this.getIntent();
????? count = (byte) intent.getIntExtra("count", 0);
????? 接受也是很簡明易懂,創(chuàng)建一個(gè)Intent 意圖對(duì)象,調(diào)用來去getIntExtra函數(shù)得到之前傳來的數(shù)據(jù),根據(jù)key!當(dāng)然還有g(shù)etStringExtra()等等函數(shù)都是類似,只是根據(jù)你傳入的數(shù)據(jù)不同選擇不同函數(shù)罷了。童鞋們應(yīng)該注意的是getIntExtra中第二個(gè)參數(shù)是什么意思,其實(shí)就是一個(gè)對(duì)于找不到key相匹配的時(shí)候會(huì)默認(rèn)return 0 ;
????? 那么下面介紹第二步:在配置中聲明
????? 當(dāng)創(chuàng)建一個(gè)activity的時(shí)候我們必須去在AndroidMainFeset.xml中去生命我們創(chuàng)建的這個(gè)類是個(gè)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><!---->此符號(hào)是注釋
這里我們有兩個(gè)聲明方法,用注釋隔開了,上面一個(gè)聲明中還設(shè)定了一些屬性,theme顯示的形式,等等,其實(shí)最簡單的聲明也是可以的就像注釋下面那一句聲明就足以起到作用了。
當(dāng)有新的activity的時(shí)候一定要去聲明;千萬不要忘記這一步。
備注:配置中有一屬性 -> android:screenOrientation 這是設(shè)置橫屏,所以豎屏中點(diǎn)擊會(huì)有問題,如果想豎屏顯示正常那么可以自行刪除xml中的 android:screenOrientation="landscape" 就可以了。
轉(zhuǎn)載于:https://www.cnblogs.com/Ymete/archive/2013/01/23/2872836.html
總結(jié)
以上是生活随笔為你收集整理的【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xfire方式开发和解析webservi
- 下一篇: Android获取系统应用及安装应用的权