【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!

简介:

  今天讲下在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" 就可以了。





本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/605735,如需转载请自行联系原作者
目录
相关文章
|
10月前
|
Android开发 数据安全/隐私保护 开发者
Android自定义view之模仿登录界面文本输入框(华为云APP)
本文介绍了一款自定义输入框的实现,包含静态效果、hint值浮动动画及功能扩展。通过组合多个控件完成界面布局,使用TranslateAnimation与AlphaAnimation实现hint文字上下浮动效果,支持密码加密解密显示、去除键盘回车空格输入、光标定位等功能。代码基于Android平台,提供完整源码与attrs配置,方便复用与定制。希望对开发者有所帮助。
201 0
|
10月前
|
XML Java Android开发
Android自定义view之网易云推荐歌单界面
本文详细介绍了如何通过自定义View实现网易云音乐推荐歌单界面的效果。首先,作者自定义了一个圆角图片控件`MellowImageView`,用于绘制圆角矩形图片。接着,通过将布局放入`HorizontalScrollView`中,实现了左右滑动功能,并使用`ViewFlipper`添加图片切换动画效果。文章提供了完整的代码示例,包括XML布局、动画文件和Java代码,最终展示了实现效果。此教程适合想了解自定义View和动画效果的开发者。
439 65
Android自定义view之网易云推荐歌单界面
|
XML Java 数据库
安卓项目:app注册/登录界面设计
本文介绍了如何设计一个Android应用的注册/登录界面,包括布局文件的创建、登录和注册逻辑的实现,以及运行效果的展示。
1083 1
安卓项目:app注册/登录界面设计
|
10月前
|
Android开发 开发者
Android企业级实战-界面篇-3
本文是《Android企业级实战-界面篇》系列的第三篇,主要介绍分割线和条形跳转框的实现方法,二者常用于设置和个人中心界面。文章通过具体代码示例展示了如何实现这两种UI组件,并提供了效果图。实现前需准备`dimens.xml`、`ids.xml`、`colors.xml`等文件,部分资源可参考系列第一、二篇文章。代码中详细说明了布局文件的配置,如分割线的样式定义和条形跳转框的组件组合,帮助开发者快速上手并应用于实际项目中。
127 1
|
10月前
|
XML Android开发 数据格式
Android企业级实战-界面篇-2
本文为《Android企业级实战-界面篇》系列第二篇,主要介绍三个UI模块的实现:用户资料模块、关注与粉丝统计模块以及喜欢和收藏功能模块。通过详细的XML代码展示布局设计,包括dimens、ids、colors配置文件的使用,帮助开发者快速构建美观且功能齐全的界面。文章结合实际效果图,便于理解和应用。建议配合第一篇文章内容学习,以获取完整工具类支持。
160 0
|
10月前
|
算法 Java Android开发
Android企业级实战-界面篇-1
本文详细介绍了Android企业级开发中界面实现的过程,涵盖效果展示、实现前准备及代码实现。作者通过自身经历分享了Android开发经验,并提供了`dimens.xml`、`ids.xml`、`colors.xml`和`strings.xml`等配置文件内容,帮助开发者快速构建规范化的UI布局。文章以一个具体的用户消息界面为例,展示了如何使用线性布局(LinearLayout)和相对布局(RelativeLayout)实现功能模块排列,并附带注意事项及使用方法,适合初学者和进阶开发者参考学习。
225 0
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
638 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
Java API 开发工具
Cocos游戏如何快速接入安卓优量汇广告变现?
本文介绍了如何在Cocos游戏项目中快速接入安卓优量汇广告,通过详细的步骤指导,包括前期准备、编辑gradle和清单文件、核心代码集成等,帮助开发者轻松实现广告功能,增加游戏的盈利渠道。文中还提供了示例工程下载链接,方便开发者直接上手实践。
Cocos游戏如何快速接入安卓优量汇广告变现?
|
XML 数据可视化 Android开发
Android应用界面
Android应用界面中的布局和控件使用,包括相对布局、线性布局、表格布局、帧布局、扁平化布局等,以及AdapterView及其子类如ListView的使用方法和Adapter接口的应用。
328 0
Android应用界面
|
数据库 Android开发 开发者
Android基础知识:请解释Activity的生命周期。
Android基础知识:请解释Activity的生命周期。
179 2

热门文章

最新文章