Activity跳转(装备选择案例)

来源:互联网 发布:淘宝网商城男装秋装 编辑:程序博客网 时间:2024/05/16 12:05

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()+"");    }}
运行结果:


1 0