Activity回传数据(装备选择)

来源:互联网 发布:光大证券mac版 编辑:程序博客网 时间:2024/05/16 15:26

Activity回传数据,实现购买装备增加生命值的功能

  • 运行界面
  • 布局文件
  • 创建装备界面
  • 创建ItemInfo类
  • 创建shopActivity类
  • 界面交互代码
  • 清单配置

运行界面

这里写图片描述

这里写图片描述

布局文件

根据上图设计用户交互界面
装备选择对应的布局文件如下

<?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"    android:orientation="vertical"    android:layout_gravity="center"    tools:context="cn.edu.bzu.equipmentselection.MainActivity">    <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/pet_imgv"        android:layout_gravity="center_horizontal"        android:layout_marginBottom="5dp"        android:layout_marginTop="30dp"        android:src="@drawable/baby"/>    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/pet_dialog_tv"        android:layout_gravity="center_horizontal"        android:layout_marginBottom="25dp"        android:gravity="center"        android:text="主人,快给小宝宝购买装备吧"/>    <TableLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_marginBottom="20dp">        <TableRow            android:layout_width="fill_parent"            android:layout_height="wrap_content">            <TextView                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="生命值:"                android:textColor="@android:color/black"                android:textSize="14sp"/>            <ProgressBar                android:id="@+id/progressBar1"                style="?android:attr/progressBarStyleHorizontal"                android:layout_width="0dip"                android:layout_height="wrap_content"                android:layout_gravity="center"                android:layout_weight="2"/>            <TextView                android:id="@+id/tv_life_progress"                android:layout_width="0dip"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="0"                android:gravity="center"                android:textColor="#000000"/>        </TableRow>        <TableRow            android:layout_width="fill_parent"            android:layout_height="wrap_content">            <TextView                android:layout_width="0dip"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="攻击力:"                android:textColor="@android:color/black"                android:textSize="14sp"/>            <ProgressBar                android:id="@+id/progressBar2"                style="?android:attr/progressBarStyleHorizontal"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_gravity="center"                android:layout_weight="2"/>            <TextView                android:id="@+id/tv_attack_progress"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="0"                android:gravity="center"                android:textColor="#000000"/>        </TableRow>        <TableRow            android:layout_width="fill_parent"            android:layout_height="wrap_content">            <TextView                android:layout_width="0dip"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="敏捷:"                android:textColor="@android:color/black"                android:textSize="14sp"/>            <ProgressBar                android:id="@+id/progressBar3"                style="?android:attr/progressBarStyleHorizontal"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_gravity="center"                android:layout_weight="2"/>            <TextView                android:id="@+id/tv_speed_progress"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="0"                android:gravity="center"                android:textColor="#000000"/>        </TableRow>    </TableLayout>    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="50dp"        android:layout_marginRight="50dp"        android:layout_marginTop="20dp">        <Button            android:id="@+id/btn_baby"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:drawablePadding="3dp"            android:drawableRight="@android:drawable/ic_menu_add"            android:onClick="click1"            android:text="小宝宝购买装备"            android:textSize="14sp"/>    </RelativeLayout></LinearLayout>

ProgressBar(进度条) 用于显示生命值
代码中用到了线性进度条 还有环形进度条 表现形式用style属性控制

进度条 style属性 水平进度条 style=”?android:attr/progressBarStyleHorizontal” 环形进度条 style=”?android:attr/progressBarStyleLarge”

创建装备界面

创建activity_shop.xml,该界面用来显示装备

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/r1"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="horizontal">    <View        android:layout_width="30dp"        android:layout_height="30dp"        android:layout_alignParentLeft="true"        android:layout_centerVertical="true"        android:background="@android:drawable/ic_menu_info_details" />    <TextView        android:id="@+id/tv_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerVertical="true"        android:layout_marginLeft="40dp"        android:text="商品名称"        android:textSize="22dp"/>    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:orientation="vertical">        <TextView            android:id="@+id/tv_life"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="生命值"            android:textSize="20sp" />        <TextView            android:id="@+id/tv_attack"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="攻击力"            android:textSize="20sp" />        <TextView            android:id="@+id/tv_speed"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="速  度"            android:textSize="20sp" />    </LinearLayout></RelativeLayout>

创建ItemInfo类

在这里 可以创建一个 cn.itcase.domain包
在该包中创建一个 ItemInfo类,用于封装装备信息

import java.io.Serializable;public class ItemInfo implements Serializable {    private String name;    private int attack;    private int life;    private int speed;    public ItemInfo(String name, int attack, int life, int speed) {        this.name = name;        this.attack = attack;        this.life = life;        this.speed = speed;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAttack() {        return attack;    }    public void setAttack(int attack) {        this.attack = attack;    }    public int getSpeed() {        return speed;    }    public void setSpeed(int speed) {        this.speed = speed;    }    public int getLife() {        return life;    }    public void setLife(int life) {        this.life = life;    }    public String toString() {        return "[name = " + name + ",attack = " + attack + ",speed=" + speed + ", life=" + life + "]";    }}

创建shopActivity类

当单击ShopActivity的装备时
调回MainActivity并将装备信息回传给MainActivity

import android.app.Activity;import android.content.Intent;import android.widget.TextView;import android.view.View;import android.os.Bundle;import android.widget.LinearLayout;import android.content.DialogInterface;public class ShopActivity extends Activity implements View.OnClickListener {    private ItemInfo itemInfo;    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_shop);        itemInfo = new ItemInfo("金剑", 100, 20, 20);        findViewById(R.id.r1).setOnClickListener(this);        TextView mLifeTV = (TextView) findViewById(R.id.tv_life);        TextView mNameTV = (TextView) findViewById(R.id.tv_speed);        TextView mSpeedTV = (TextView) findViewById(R.id.tv_speed);        TextView mAttackTV = (TextView) findViewById(R.id.tv_attack);        mLifeTV.setText("生命值+" + itemInfo.getLife());        mNameTV.setText(itemInfo.getName() + "");        mSpeedTV.setText("敏捷度+" + itemInfo.getSpeed());        mAttackTV.setText("攻击力+" + itemInfo.getAttack());    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.r1:                Intent intent = new Intent();                intent.putExtra("equipment", itemInfo);                setResult(1, intent);                finish();                break;        }    }}

界面交互(MainActivity)

MainActivity响应按钮点击事件

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 {    private ProgressBar mProgressBar1;    private ProgressBar mProgressBar2;    private ProgressBar mProgressBar3;    private TextView mLifeTV;    private TextView mAttackTV;    private TextView mSpeedTV;    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mLifeTV = (TextView) findViewById(R.id.tv_life_progress);        mAttackTV = (TextView) findViewById(R.id.tv_attack_progress);        mSpeedTV = (TextView) findViewById(R.id.tv_speed_progress);        initProgress();    }    private void initProgress() {        mProgressBar1 = (ProgressBar) findViewById(R.id.progressBar1);        mProgressBar2 = (ProgressBar) findViewById(R.id.progressBar2);        mProgressBar3 = (ProgressBar) findViewById(R.id.progressBar3);        mProgressBar1.setMax(1000);        mProgressBar2.setMax(1000);        mProgressBar3.setMax(1000);    }    public void click1(View view) {        Intent intent = new Intent(this, ShopActivity.class);        startActivityForResult(intent, 1);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (data != null) {            if (resultCode == 1) {                if (requestCode == 1) {                    ItemInfo info = (ItemInfo) data.getSerializableExtra("equipment");                    updateProgress(info);                }            }        }    }    private void updateProgress(ItemInfo info) {        int progress1 = mProgressBar1.getProgress();        int progress2 = mProgressBar2.getProgress();        int progress3 = mProgressBar3.getProgress();        mProgressBar1.setProgress(progress1 + info.getLife());        mProgressBar2.setProgress(progress2 + info.getAttack());        mProgressBar3.setProgress(progress3 + info.getSpeed());        mLifeTV.setText(mProgressBar1.getProgress() + "");        mAttackTV.setText(mProgressBar2.getProgress() + "");        mSpeedTV.setText(mProgressBar3.getProgress() + "");    }}

清单配置

<activity       android:name="cn.edu.bzu.equipmentselection.MainActivity"        android:label="@string/app_name">        <intent-filter>            <action android:name="android.intent.action.MAIN" />            <category android:name="android.intent.category.LAUNCHER" />        </intent-filter>    </activity>    <activity android:name="cn.itcast.domain.ShopActivity"></activity>
0 0