展会信息港展会大全

一个安卓注册界面开发实例
来源:互联网   发布日期:2015-10-02 16:09:44   浏览:1838次  

导读:在Surfaceview中如何实现两个或两个以上Activity之间的切换与数据交互呢?为了更好的表达我简单的做了一个游戏Android注册界面,其中对于输入界面的布局这些我也只是随意的写了下,主要是实现功能并没有花时间去......

在Surfaceview中如何实现两个或两个以上Activity之间的切换与数据交互呢?为了更好的表达我简单的做了一个游戏Android注册界面,其中对于输入界面的布局这些我也只是随意的写了下,主要是实现功能并没有花时间去美化,所以大家可以自己去xml或者代码中去改变布局,每个小组件的宽高等。

两个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。

<Activity

android:configchanges="keyboardHidden|orientation"

android:name="com.himi.Register"

android:screenorientation="landscape"

android:theme="@android:style/Theme.Dialog">

</Activity>

<Activity

android:name="com.himi.Register">

</Activity>

赞助本站

人工智能实验室

相关热词: 安卓 注册界面

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港