本篇博文主要讲述了Activity之间的数据传递通过一个实例(装备选择)来讲述数据在Activity之间的传递
一.所需要的界面(layout)
1.主界面(acticity_main)
2.装备选择界面(shop_equipment)
3.人物属性界面(baby_info)
二.所需类
1.MainActivity
2.装备信息实体类(Info)
3.装备购买类(shop)
4.人物属性类(baby_info)
三.界面编写过程
1.主界面(activity_main)
代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.administrator.equipmentselection.MainActivity"
android:orientation="vertical"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25dp"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="快给小宝宝买装备吧"
android:textSize="15dp"
android:gravity="center_horizontal"
/>
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center">
<TableRow>
<TextView
android:layout_marginLeft="20dp"
android:text="生命值:"
android:layout_weight="1"
/>
<ProgressBar
android:id="@+id/sm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
/>
<TextView
android:id="@+id/sms"
android:layout_weight="1"
android:layout_marginLeft="20dp"
android:text="0"
/>
</TableRow>
<TableRow
android:layout_marginTop="10dp">
<TextView
android:layout_marginLeft="20dp"
android:text="攻击力:"
android:layout_weight="1"
/>
<ProgressBar
android:id="@+id/gj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
/>
<TextView
android:id="@+id/gjs"
android:layout_weight="1"
android:layout_marginLeft="20dp"
android:text="0"
/>
</TableRow>
<TableRow
android:layout_marginTop="10dp"
>
<TextView
android:layout_marginLeft="20dp"
android:text="敏捷:"
android:layout_weight="1"
/>
<ProgressBar
android:id="@+id/mj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
/>
<TextView
android:id="@+id/mjs"
android:layout_weight="1"
android:layout_marginLeft="20dp"
android:text="0"
/>
</TableRow>
</TableLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="30dp"
>
<Button
android:onClick="click1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="主人购买装备"
android:drawableRight="@android:drawable/ic_menu_add"
/>
<Button
android:onClick="click2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="查看宝宝属性"
android:layout_marginLeft="20dp"
android:drawableRight="@android:drawable/ic_menu_add"
/>
</LinearLayout>
</LinearLayout>
运行结果图
2.装备选择界面
代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="com.example.administrator.equipmentselection.MainActivity"
android:orientation="vertical"
>
<View
android:id="@+id/v1"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@android:drawable/ic_menu_info_details"
android:layout_marginTop="50dp"
android:layout_alignParentLeft="true"
/>
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="60dp"
android:layout_marginTop="50dp" />
<LinearLayout
android:id="@+id/l1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:orientation="vertical"
android:layout_marginLeft="150dp"
>
<TextView
android:id="@+id/tv_life"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="生命值"
/>
<TextView
android:id="@+id/tv_attack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="攻击力"
/>
<TextView
android:id="@+id/tv_speed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="敏捷"
/>
</LinearLayout>
<RelativeLayout
android:id="@+id/activity_main1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="160dp"
>
<View
android:id="@+id/v2"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@android:drawable/ic_menu_info_details"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
/>
<TextView
android:id="@+id/tv_name2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="60dp"
/>
<LinearLayout
android:id="@+id/l12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:orientation="vertical"
android:layout_marginLeft="150dp"
>
<TextView
android:id="@+id/tv_life2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="生命值"
/>
<TextView
android:id="@+id/tv_attack2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="攻击力"
/>
<TextView
android:id="@+id/tv_speed2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="敏捷"
/>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/activity_main2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="100dp"
>
<View
android:id="@+id/v3"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@android:drawable/ic_menu_info_details"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
/>
<TextView
android:id="@+id/tv_name3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="60dp"
/>
<LinearLayout
android:id="@+id/l13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:orientation="vertical"
android:layout_marginLeft="150dp"
>
<TextView
android:id="@+id/tv_life3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="生命值"
/>
<TextView
android:id="@+id/tv_attack3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="攻击力"
/>
<TextView
android:id="@+id/tv_speed3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="敏捷"
/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
结果图
3人物属性界面
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<ImageView
android:id="@+id/baby"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="100dp"
android:src="@drawable/baby"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="姓名 :"
android:textSize="20dp"
android:layout_marginLeft="50dp"
android:layout_below="@+id/baby"
android:id="@+id/xingming" />
<TextView
android:id="@+id/xm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="baby"
android:textSize="20dp"
android:layout_toRightOf="@+id/xingming"
android:layout_marginLeft="30dp"
android:layout_below="@+id/baby"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别 :"
android:textSize="20dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="20dp"
android:layout_below="@+id/xingming"
android:id="@+id/xingbie" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
android:textSize="20dp"
android:layout_toRightOf="@+id/xingbie"
android:layout_marginLeft="30dp"
android:layout_marginTop="20dp"
android:layout_below="@+id/xm"
/>
</RelativeLayout>
结果图
四.相关类的编写
1..MainActivity
代码
package com.example.administrator.equipmentselection;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
ProgressBar pb1 ;
ProgressBar pb2 ;
ProgressBar pb3 ;
TextView tv1;
TextView tv2;
TextView tv3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//(1)找到有关控件
pb1 =(ProgressBar)findViewById(R.id.sm);
pb2 =(ProgressBar)findViewById(R.id.gj);
pb3 =(ProgressBar)findViewById(R.id.mj);
tv1=(TextView)findViewById(R.id.sms);
tv2=(TextView)findViewById(R.id.gjs);
tv3=(TextView)findViewById(R.id.mjs);
//(2)初始化进度条的最大值
pb1.setMax(1000);
pb2.setMax(1000);
pb3.setMax(1000);
}
//点击按钮事件
public void click1(View v)
{
Intent intent = new Intent(this,shop.class);
//开启一个页面 并且返回数据
startActivityForResult(intent,1);
}
public void click2(View v)
{
Intent intent = new Intent(this,baby_info.class);
//开启一个页面 并且返回数据
startActivityForResult(intent,1);
}
protected void onActivityResult(int requestCode,int resultCode,Intent data)
{
if(data!=null)
{
if(resultCode==1)
{
Info info=(Info)data.getSerializableExtra("info");
updateProgress(info);
}
}
}
private void updateProgress(Info info)
{
int sm =pb1.getProgress();
int gj =pb2.getProgress();
int mj =pb3.getProgress();
pb1.setProgress(sm+info.getLife());
pb2.setProgress(gj+info.getAttack());
pb3.setProgress(mj+info.getQuick());
tv1.setText(pb1.getProgress()+"");
tv2.setText(pb2.getProgress()+"");
tv3.setText(pb3.getProgress()+"");
}
}
2.装备信息实体类(Info)
package com.example.administrator.equipmentselection;
import java.io.Serializable;
/**
* Created by Administrator on 2017/3/23.
*/
public class Info implements Serializable {
private String name;
private int life;
private int attack;
private int quick;
public Info(String name, int life, int attack, int quick) {
this.name = name;
this.life = life;
this.attack = attack;
this.quick = quick;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLife() {
return life;
}
public void setLife(int life) {
this.life = life;
}
public int getAttack() {
return attack;
}
public void setAttack(int attack) {
this.attack = attack;
}
public int getQuick() {
return quick;
}
public void setQuick(int quick) {
this.quick = quick;
}
}
3.装备购买类(shop)
package com.example.administrator.equipmentselection;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
/**
* Created by Administrator on 2017/3/23.
*/
public class shop extends Activity implements View.OnClickListener {
private Info info;
private Info info2;
private Info info3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shop_equipment);
findViewById(R.id.v1).setOnClickListener(this);
findViewById(R.id.v2).setOnClickListener(this);
findViewById(R.id.v3).setOnClickListener(this);
//(初始化界面面数据)
info = new Info("金剑",120,30,20);
//2找到控件显示数据
TextView tv_name =(TextView)findViewById(R.id.tv_name);
TextView tv_life=(TextView)findViewById(R.id.tv_life);
TextView tv_attack=(TextView)findViewById(R.id.tv_attack);
TextView tv_speed=(TextView)findViewById(R.id.tv_speed);
//3初始化数据显示到控件
tv_name.setText(info.getName());
tv_attack.setText("攻击力: "+info.getAttack());
tv_life.setText("生命力: "+info.getLife());
tv_speed.setText("敏捷度: "+info.getQuick());
info2 = new Info("银剑",100,20,20);
TextView tv_name1 =(TextView)findViewById(R.id.tv_name2);
TextView tv_life1=(TextView)findViewById(R.id.tv_life2);
TextView tv_attack1=(TextView)findViewById(R.id.tv_attack2);
TextView tv_speed1=(TextView)findViewById(R.id.tv_speed2);
//3初始化数据显示到控件
tv_name1.setText(info2.getName());
tv_attack1.setText("攻击力: "+info2.getAttack());
tv_life1.setText(" 生命力: "+info2.getLife());
tv_speed1.setText("敏捷度: "+info2.getQuick());
info3 =new Info("铠甲",200,10,5);
TextView tv_name2 =(TextView)findViewById(R.id.tv_name3);
TextView tv_life2=(TextView)findViewById(R.id.tv_life3);
TextView tv_attack2=(TextView)findViewById(R.id.tv_attack3);
TextView tv_speed2=(TextView)findViewById(R.id.tv_speed3);
//3初始化数据显示到控件
tv_name2.setText(info3.getName());
tv_attack2.setText("攻击力: "+info3.getAttack());
tv_life2.setText(" 生命力: "+info3.getLife());
tv_speed2.setText("敏捷度: "+info3.getQuick());
}
public void onClick(View v)
{Intent intent =new Intent();
switch (v.getId())
{
case R.id.v1:
intent.putExtra("info",info);
setResult(1,intent);
finish();
break;
case R.id.v2:
intent.putExtra("info",info2);
setResult(1,intent);
finish();
break;
case R.id.v3:
intent.putExtra("info",info3);
setResult(1,intent);
finish();
break;
default:
break;
}
}
}
4.人物属性类(baby_info)
package com.example.administrator.equipmentselection;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
/**
* Created by 刘平鲁 on 2017/3/25.
*/
public class baby_info extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.baby_info);
}
}
运行结果
启动界面
点击主人购买装备后
点击金剑后
以上就是编写过程
装备信息界面的显示可以用ListView来显示 会在后续博文更新