Android学习历程--Activity的数据传递(装备选择)

本篇博文主要讲述了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来显示 会在后续博文更新

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值