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