Activity跳转(装备选择案例)

1、主程序界面设计:

<?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="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="bzu.edu.cn.equepments.MainActivity">

    <ImageView
        android:layout_marginTop="50dp"
        android:id="@+id/baby"
        android:layout_centerHorizontal="true"
        android:layout_width="150dp"
        android:layout_height="200dp"
        android:src="@drawable/timg"

        />
    <TextView
        android:layout_below="@id/baby"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请叫我宝宝"
        android:layout_centerHorizontal="true"
        android:id="@+id/textView" />
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_below="@id/textView"
        android:layout_marginTop="50dp"
        android:layout_marginLeft="20dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="生命值"
                />
            <ProgressBar// ProgressBar控件用于显示小宝宝生命值、攻击力、敏捷度的变化。
ProgressBar通常用于访问网络展示Loading对话框以及下载文件时显示的进度。
                android:layout_marginLeft="20dp"
                style="@style/Widget.AppCompat.ProgressBar.Horizontal"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/textView"
                android:id="@+id/progressBar" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="80"
                android:id="@+id/tv1"
                android:layout_marginLeft="20dp"/>

        </LinearLayout>\
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="攻击力"
                />
            <ProgressBar
                android:layout_marginLeft="20dp"
                style="@style/Widget.AppCompat.ProgressBar.Horizontal"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/textView"
                android:id="@+id/progressBar2" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="80"
                android:id="@+id/tv2"
                android:layout_marginLeft="20dp"/>

        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="敏捷度"
                />
            <ProgressBar
                android:layout_marginLeft="20dp"
                style="@style/Widget.AppCompat.ProgressBar.Horizontal"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/textView"
                android:id="@+id/progressBar3" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="80"
                android:id="@+id/tv3"
                android:layout_marginLeft="20dp"/>

        </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView"
        android:layout_marginTop="150dp"
        >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="主人快给小宝宝买装备"
            android:onClick="click"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="click1"
            android:text="小宝宝快给自己买装备"
            />
    </LinearLayout>
</RelativeLayout>
 
 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/rl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="bzu.edu.cn.equepments.shoppingActivity">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/btn_bg" />

            <TextView
                android:id="@+id/tv_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="商品名称"
                android:textSize="30dp"
                android:layout_marginTop="20dp"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginTop="15dp"
            android:layout_marginLeft="20dp">

            <TextView
                android:id="@+id/tv_life"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="生命值:"
                />

            <TextView
                android:id="@+id/tv_atock"
                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>
    </LinearLayout>
</RelativeLayout>
3、创建一个装备类( ItemInfo );

package bzu.edu.cn.equepments.equipment;

import java.io.Serializable;

/**
 * Created by Scorpio on 2017/4/11.
 */

public class ItemInfo implements Serializable//Intent除了传递基本类型之外,
只能传递Serializable或Parcelable类型的数据,为了方便数据传递,在这里让ItemInfo类实现Serializable接口。 {
    private String name;
    private int life;
    private int atock;
    private int quick;

    public ItemInfo(String name, int life, int atock, int quick) {
        this.name = name;
        this.life = life;
        this.atock = atock;
        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 getAtock() {
        return atock;
    }

    public void setAtock(int atock) {
        this.atock = atock;
    }

    public int getQuick() {
        return quick;
    }

    public void setQuick(int quick) {
        this.quick = quick;
    }
}
4、创建shoppingActivity:
package bzu.edu.cn.equepments;
import android.content.Intent;
import android.os.Parcelable;
import android.view.View.OnClickListener;
import android.content.DialogInterface;
import android.icu.text.IDNA;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;

import java.io.Serializable;

import bzu.edu.cn.equepments.equipment.ItemInfo;

public class shoppingActivity extends AppCompatActivity implements OnClickListener {
    private ItemInfo itemInfo;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shopping);
        findViewById(R.id.rl).setOnClickListener(this);
        //显示装备界面的参数(装备名、生命力、敏捷度、攻击力)
        itemInfo=new ItemInfo("宝剑",50,100,50);
        TextView tv_atock=(TextView) findViewById(R.id.tv_atock);
        TextView tv_name=(TextView) findViewById(R.id.tv_name);
        TextView tv_speed=(TextView) findViewById(R.id.tv_speed);
        TextView tv_life=(TextView) findViewById(R.id.tv_life);
        tv_name.setText(itemInfo.getName());
        tv_life.setText("生命值:"+itemInfo.getLife());
        tv_atock.setText("攻击力:"+itemInfo.getAtock());
        tv_speed.setText("敏捷度:"+itemInfo.getQuick());

    }


    @Override
    //将整个界面作为一个点击事件
    public void onClick(View v) {
        switch (v.getId())//
        {
            case R.id.rl:
                //获取当前数据,并返回数据。
                Intent intent =new Intent();
                 //通过OnActivityResult方法将数据返回给调用者(MainAcitivity)
                intent.putExtra( "ItemInfo",  itemInfo);
                setResult(1,intent);
                  //执行返回方法,关闭这个页面并且将数据返回
                finish();(关闭当前页面)
                break;

        }
    }
}
setResult()方法跳转Activity不需要指定要跳转的Activity。setReult()方法的作用是让当前Activity返回到它的调用者,
在这里可以理解为让ShopActivity返回到MainActivity。
5、创建MainActivity(界面交互):
package bzu.edu.cn.equepments;
import android.content.Intent;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.view.View;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import bzu.edu.cn.equepments.equipment.ItemInfo;

public class MainActivity extends AppCompatActivity {
    private ProgressBar pb1;//声明变量
    private ProgressBar pb2;
    private ProgressBar pb3;
    private TextView tv1;
    private TextView tv2;
    private TextView tv3;


    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         pb1 = (ProgressBar) findViewById(R.id.progressBar);//找到变量
         pb2=(ProgressBar) findViewById(R.id.progressBar2);
         pb3=(ProgressBar) findViewById(R.id.progressBar3);

         tv1=(TextView) findViewById(R.id.tv1);
         tv2=(TextView) findViewById(R.id.tv2);
         tv3=(TextView) findViewById(R.id.tv3);
        pb1.setMax(1000);//设置最大值
        pb2.setMax(1000);
        pb3.setMax(1000);
    }
    public void click(View view)//创建两个按钮的点击事件,切换界面获得返回值
    {
        Intent intent=new Intent(this,shoppingActivity.class);
        startActivityForResult(intent,1);//返回结果
    }
    public void click1(View view)
    {
        Intent intent=new Intent(this,shoppingActivity.class);
        startActivityForResult(intent,1);
    }

    @Override//判断点击的按钮(主人给小宝宝买装备)、(小宝宝给自己买装备)
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data != null) {
           //判断结果为1主人买装备,结果为2,小宝宝自己买装备
            if (resultCode == 1) {
                if (requestCode == 1) {
                    ItemInfo itemInfo = (ItemInfo) data.getExtras().get("ItemInfo");
                    updateProgress(itemInfo);//装备购买完成后及时更新小宝宝的参数值
                }
            }
        }
    }
    //更新装备值
    private void updateProgress(ItemInfo itemInfo) {

        int progress1 = pb1.getProgress();
        int progress2 = pb2.getProgress();
        int progress3 = pb3.getProgress();
        pb1.setProgress(progress1+itemInfo.getLife());
        pb2.setProgress(progress2+itemInfo.getAtock());
        pb3.setProgress(progress3+itemInfo.getQuick());
        tv1.setText(pb1.getProgress()+"");
        tv2.setText(pb2.getProgress()+"");
        tv3.setText(pb3.getProgress()+"");





    }
}

猜你喜欢

转载自blog.csdn.net/mengkun4227/article/details/70765763