Android开发购买宠物装备

Android开发购买宠物装备

要点:

  • 使用Intent回传数据
  • Activity之间的跳转
  • startActivityForResult( Intent intent,int requestCode)在页面一中开启页面二
  • setResult(int resultCode, Intent data)页面二回传数据到页面一
  • onActivityResult()页面二被销毁时,调用页面一中的onActivityResult()来接收回传回来的数据

实现步骤
①宠物显示界面的设计与实现
②购买装备界面的设计与实现
③创建封装装备信息的实体类
④购买装备界面逻辑代码的设计与实现
⑤宠物显示界面逻辑代码的设计与实现

activity_main.xml文件代码:

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/loading"
    tools:context=".MainActivity">
    <ImageView

        android:id="@+id/iv_head"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="150dp"
        android:src="@drawable/head"/>
    <LinearLayout
        android:id="@+id/layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:layout_below="@+id/iv_head"
        android:layout_margin="10dp"
        android:orientation="vertical">
        <RelativeLayout
            android:id="@+id/regist_username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp">
            <TextView
                android:id="@+id/tv_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:text="用户名:"
                android:textSize="25sp"/>
            <EditText
                android:id="@+id/et_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_toRightOf="@id/tv_name"
                android:hint="请输入用户名"
                android:background="@null"
                android:textSize="25sp"/>
        </RelativeLayout>
        <RelativeLayout
            android:id="@+id/regist_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp">
            <TextView
                android:id="@+id/tv_psw"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:text="密    码:"
                android:textSize="25sp"/>
            <EditText
                android:id="@+id/et_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_toRightOf="@id/tv_psw"
                android:hint="请输入密码"
                android:background="@null"
                android:inputType="textPassword"
                android:textSize="25sp"/>
        </RelativeLayout>
    </LinearLayout>
    <Button
        android:id="@+id/btn_send"
        android:layout_width="160dp"
        android:layout_height="48dp"
        android:layout_below="@id/layout"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:text="注册"
        android:textColor="#FFFFFF"
        android:textSize="25sp"
        android:textStyle="bold"/>
</RelativeLayout>


页面:
在这里插入图片描述
activity_show2.xml文件代码:

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/loading"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:layout_marginBottom="15dp"
        android:orientation="horizontal"
        android:padding="15dp">

        <ImageView
            android:id="@+id/pet_imgv"
            android:layout_width="0dp"
            android:layout_height="150dp"
            android:layout_weight="1"
            android:background="@drawable/baby">

        </ImageView>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:orientation="vertical"
            android:paddingLeft="20dp">

            <TextView
                android:id="@+id/tv_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="用户名:"
                android:textSize="14sp"
                android:textStyle="bold">

            </TextView>

            <TextView
                android:id="@+id/tv_password"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="密    码:"
                android:textSize="14sp"
                android:textStyle="bold">

            </TextView>
        </LinearLayout>
    </LinearLayout>

    <TextView
        android:id="@+id/pet_dialog_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginBottom="25dp"
        android:text="主人快给小宝宝买装备吧!"
        android:textSize="25sp"></TextView>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="5dp"
        android:layout_marginBottom="50dp">

        <TableRow>

            <TextView
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="生命值:"
                android:textColor="@android:color/black"
                android:textSize="18sp">

            </TextView>

            <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"></ProgressBar>

            <TextView
                android:id="@+id/tv_life_progress"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:text="0"
                android:textColor="#000000"
                android:textSize="18sp">

            </TextView>^
        </TableRow>

        <TableRow>

            <TextView
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="攻击力:"
                android:textColor="@android:color/black"
                android:textSize="18sp" />

            <ProgressBar
                android:id="@+id/ProgressBar2"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="2" />

            <TextView
                android:id="@+id/tv_attack_progress"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:text="0"
                android:textColor="#000000"
                android:textSize="18sp"></TextView>
        </TableRow>

        <TableRow>

            <TextView
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="敏    捷:"
                android:textColor="@android:color/black"
                android:textSize="18sp" />

            <ProgressBar
                android:id="@+id/ProgressBar3"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="2" />

            <TextView
                android:id="@+id/tv_speed_progress"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:text="0"
                android:textColor="#000000"
                android:textSize="18sp">
            </TextView>
        </TableRow>
    </TableLayout>
    <Button
        android:id="@+id/btn_baby"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        android:layout_gravity="center"
        android:text="立即购买 GO!"
        android:textColor="#ffffff"
        android:textSize="18sp"
        android:onClick="click"
        android:textStyle="bold"/>

</LinearLayout>

页面:
在这里插入图片描述
activity_shop.xml文件代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:id="@+id/rl"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/loading"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#307f7f7f"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:padding="5dp">
        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            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_marginLeft="20dp"
            android:text="商品名称"/>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="40dp"
            android:orientation="vertical">
            <TextView
                android:id="@+id/tv_life"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="生命值"
                android:textSize="13sp"/>
            <TextView
                android:id="@+id/tv_attack"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="攻击力"
                android:textSize="13sp"/>
            <TextView
                android:id="@+id/tv_speed"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="速度"
                android:textSize="13sp"/>
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

页面:
第三个页面
MainActivity.java文件代码:

package com.example.userregist;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import java.nio.file.FileVisitOption;

public class MainActivity extends AppCompatActivity {

    private EditText et_name;
    private EditText et_passward;
    private Button btn_send;
    private EditText et_password;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_name = (EditText) findViewById(R.id.et_name);//找到账号输入框
        et_passward = findViewById(R.id.et_password);//找到密码输入框
        btn_send = findViewById(R.id.btn_send);//找到登录按钮

        btn_send.setOnClickListener(new View.OnClickListener() {//设置按钮的点击事件
            @Override
            public void onClick(View view) {
                passDaata();//调用方法
            }


        });
    }

    private void passDaata() {
        Intent intent = new Intent(this,ShowActivity2.class);//创建意图并传入参数
        intent.putExtra("name",et_name.getText().toString().trim());//获得账号信息并传递账号信息
        intent.putExtra("password",et_passward.getText().toString().trim());//获得密码信息并传递密码信息
        startActivity(intent);//开启新的页面ShowActivity2。

    }
}

ItemInfo.java文件代码:
封装一个装备类

package com.example.userregist;

import java.io.Serializable;

public class ItemInfo implements Serializable {

    private String name;//名字
    private  int acctract;//攻击力
    private  int life;//生命值
    private  int speed;//敏捷

    public ItemInfo(String name, int acctract, int life, int speed) {
        this.name = name;
        this.acctract = acctract;
        this.life = life;
        this.speed = speed;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAcctract() {
        return acctract;
    }

    public void setAcctract(int acctract) {
        this.acctract = acctract;
    }

    public int getLife() {
        return life;
    }

    public void setLife(int life) {
        this.life = life;
    }

    public int getSpeed() {
        return speed;
    }

    public void setSpeed(int speed) {
        this.speed = speed;
    }
}

ShowActivity2.java文件代码:

package com.example.userregist;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;

import java.io.Serializable;
import java.nio.file.FileVisitOption;

public class ShowActivity2 extends AppCompatActivity {


    private ProgressBar mProgressBar1;
    private ProgressBar mProgressBar2;
    private ProgressBar mProgressBar3;
    private TextView mLifeTV;
    private TextView mAttackTV;
    private TextView mSpeedTV;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show2);
        Intent intent = getIntent();// 获得意图对象
        String name = intent.getStringExtra("name");//获取账号信息
        String password = intent.getStringExtra("password");//获取密码信息
        TextView tv_name = ((TextView) findViewById(R.id.tv_name));//获得本页面的账号框TextView的名字
        TextView tv_passward = ((TextView) findViewById(R.id.tv_password));//获得本页面的密码框TextView的名字
        tv_name.setText("用户名:" + name);//显示账号到账号框TextView
        tv_passward.setText("密    码:" + password);//显示密码到密码框TextView

        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() {

        this.mProgressBar1 = (ProgressBar) findViewById(R.id.ProgressBar1);//找到进度条
        ProgressBar mProgressBar1 = this.mProgressBar1;
        this.mProgressBar2 = (ProgressBar) findViewById(R.id.ProgressBar2);
        ProgressBar mProgressBar2 = this.mProgressBar2;
        this.mProgressBar3 = (ProgressBar) findViewById(R.id.ProgressBar3);
        ProgressBar mProgressBar3 = this.mProgressBar3;
        mProgressBar1.setMax(100);//设置进度条最大值
        mProgressBar2.setMax(100);
        mProgressBar3.setMax(100);
    }

    public void click(View v) {//开启商店页面
        Intent intent = new Intent(this, ShopActivity.class);
        startActivityForResult(intent, 1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
//接收商店页面回传的数据
        if (data != null) {
            if (requestCode == 1) {
                if (resultCode == 1) {
                    ItemInfo info = (ItemInfo) data.getSerializableExtra("equipment");
                    updateProgress(info);//更新进度条和进度条后面的数据
                }
            }
        }
        super.onActivityResult(requestCode, resultCode, data);

    }

    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.getAcctract());
        mProgressBar3.setProgress(progress3 + info.getSpeed());
        mLifeTV.setText(mProgressBar1.getProgress() + " ");
        mSpeedTV.setText(mProgressBar3.getProgress() + " ");
        mAttackTV.setText(mProgressBar2.getProgress() + " ");
    }
}

ShopActivity.java页面代码

package com.example.userregist;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class ShopActivity extends AppCompatActivity implements View.OnClickListener {

    private ItemInfo itemInfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shop);
        this.itemInfo = new ItemInfo("金剑", 100, 20, 20);//实例化装备类
        ItemInfo itemInfo = this.itemInfo;
        findViewById(R.id.rl).setOnClickListener(this);
        TextView mlifeTV = ((TextView) findViewById(R.id.tv_name));//找到页内的控件
        TextView mNameTV = ((TextView) findViewById(R.id.tv_life));
        TextView mSpeed = ((TextView) findViewById(R.id.tv_speed));
        TextView mAccart = ((TextView) findViewById(R.id.tv_attack));
        mlifeTV.setText("生命值+" + itemInfo.getLife());//显示数据
        mAccart.setText("攻击力+" + itemInfo.getAcctract());
        mNameTV.setText(itemInfo.getName() + " ");
        mSpeed.setText("敏捷+" + itemInfo.getSpeed());
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {//回传数据
            case R.id.rl:
                Intent intent = new Intent();
                intent.putExtra("equipment", itemInfo);
                setResult(1, intent);
                finish();
                break;
        }
    }
}

参考图书《Android移动开发基础案例教程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值