1.创建程序:

<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"
tools:context=".Main"
android:orientation="vertical"
android:gravity="center"> <ImageView
android:id="@+id/pet_imgv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="5dp"
android:layout_marginTop="30dp"
android:src="@drawable/baby"/>
<TextView
android:id="@+id/pet_dialog_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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="0dip"
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"
android:layout_marginTop="5dp"> <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="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:text="0"
android:gravity="center"
android:textColor="#000000" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"> <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="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:text="0"
android:gravity="center"
android:textColor="#000000" />
</TableRow>
</TableLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/btn_master"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:drawableRight="@android:drawable/ic_menu_add"
android:onClick="click"
android:drawablePadding="3dp"
android:text="主人购买装备"
android:textSize="14sp" />
<Button
android:id="@+id/btn_baby"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:drawablePadding="3dp"
android:drawableRight="@android:drawable/ic_menu_add"
android:onClick="click2"
android:text="小宝宝购买装备"
android:textSize="14sp" />
</RelativeLayout>
</LinearLayout>

上述布局代码使用到了控件ProgressBar(进度条),它是用来显示 小宝宝的生命值、攻击值和敏捷度的。

ProgressBar通经常使用于訪问网络展示Loading对话框以及下载文件时显示的进度。

2.创建装备界面:

<?

xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@android:drawable/ic_menu_info_details"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
/>
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="60dp"
android:text="商品名称"/>
<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:textSize="13sp"
android:text="生命值" />
<TextView
android:id="@+id/tv_attack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:text="攻击力"
android:layout_marginTop="5dp"/>
<TextView
android:id="@+id/tv_speed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:text="敏 捷"
android:layout_marginTop="5dp"/>
</LinearLayout>
</RelativeLayout>

3.创建ItemInfo类:

package select.itcast.cn.huichuan;

/**
* Created by wanglaoda on 15-8-2.
*/
import java.io.Serializable; //实现序列化方便传递数据
public class ItemInfo implements Serializable{
private String name;
private int acctack;
private int life;
private int speed;
public ItemInfo(String name, int acctack, int life, int speed) {
this.name = name;
this.acctack = acctack;
this.life = life;
this.speed = speed;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAcctack() {
return acctack;
}
public void setAcctack(int acctack) {
this.acctack = acctack;
}
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;
}
public String toString() {
return " [name=" + name + ", acctack=" + acctack + ", life=" + life + ", speed=" + speed + "]";
}
}

须要注意的是,Intent除了传递基本类型之外。仅仅能传递Serializable或Parcelable类型的数据,为了方便数据传递,在这里让ItemInfo类实现Serializable接口。

4.创建ShopActivity:

package select.itcast.cn.huichuan;

/**
* Created by wanglaoda on 15-8-2.
*/
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView; public class ShopActivity extends Activity implements 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.rl).setOnClickListener(this);
TextView mLifeTV = (TextView) findViewById(R.id.tv_life);
TextView mNameTV = (TextView) findViewById(R.id.tv_name);
TextView mSpeedTV = (TextView) findViewById(R.id.tv_speed);
TextView mAttackTV = (TextView) findViewById(R.id.tv_attack);
// TextView显示字符串,这里传入int值编译不会报错,执行会出错
mLifeTV.setText("生命值+" + itemInfo.getLife());
mNameTV.setText(itemInfo.getName() + "");
mSpeedTV.setText("敏捷度+" + itemInfo.getSpeed());
mAttackTV.setText("攻击力+" + itemInfo.getAcctack());
} @Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.rl:
Intent intent = new Intent();
intent.putExtra("equipment", itemInfo);
setResult(1, intent);
finish();
break;
}
}
}

上述代码中的重点代码是后几行,从这段代码中能够看出。使用setResult()方法跳转Activity不须要指定要跳转的Activity。setReult()方法的作用是让当前Activity返回到它的调用者,在这里能够理解为让ShopActivity返回到MainActivity。

5.编写界面交互代码:

package select.itcast.cn.huichuan;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView; public class Main extends Activity { 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_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); //设置最大值1000
mProgressBar2.setMax(1000);
mProgressBar3.setMax(1000);
} // 开启新的activity而且想获取他的返回值
public void click(View view) {
Intent intent = new Intent(this, ShopActivity.class);
startActivityForResult(intent, 1); // 返回请求结果,请求码为1
} public void click2(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) {
// 推断结果码是否等于1,等于1为主人加入装备,等于2为宝宝加入装备
if (resultCode == 1) {
if (requestCode == 1) {
ItemInfo info= (ItemInfo) data.getSerializableExtra("equipment");
//更新ProgressBar的值
updateProgress(info);
}
}
}
}
//更新ProgressBar的值
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.getAcctack());
mProgressBar3.setProgress(progress3+info.getSpeed());
mLifeTV.setText(mProgressBar1.getProgress()+"");
mAttackTV.setText(mProgressBar2.getProgress() + "");
mSpeedTV.setText(mProgressBar3.getProgress() + "");
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId(); //noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
} return super.onOptionsItemSelected(item);
}
}

6.清单文件的配置:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="select.itcast.cn.huichuan" > <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".Main"
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=".ShopActivity"/>
</application> </manifest>

Android笔记——Activity中的回传数据案例(装备选择)的更多相关文章

  1. Android笔记——Activity中的数据传递案例(用户注冊)

    1.创建程序activity_main: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro ...

  2. Android笔记:Socket客户端收发数据

    client.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and ...

  3. Android 在Activity中对SQLite的操作

    注册 package com.scme.ui; import android.app.Activity; import android.content.Intent; import android.o ...

  4. Android笔记-Activity相关+内存泄漏+Fragment+service

    看了下,上次学习android还是17年的事情,,,,两年过去了我现在终于来搞android了... 官网有一段基础描述: https://developer.android.google.cn/gu ...

  5. Android课程---Activity中保存和恢复用户状态

    onSaveInstanceState 保存 在暂停之后和保存之前调用 onRestoreInstanceState 恢复 再启动之后和显示之前调用 package com.example.chens ...

  6. Android之activity中新建控件

    了解了5大布局,我们会发现这些布局都是静态的,如何让系统自动生成控件呢?这就需要activity来帮忙了 今天我们讲的就是用activity新建布局 用案例来说吧! 实现一个输入行和列自动生成表格并生 ...

  7. Android 管理Activity中的fragments

    为了管理Activity中的fragments,需要使用FragmentManager,为了得到它,需要调用Activity中的getFragmentManager()方法,接下来详细介绍,感兴趣的朋 ...

  8. android应用activity中调出输入法后界面调整问题的解决

    在自己写的一个小应用中发现一个问题,当调出输入法后界面最下方的一个按钮被挤到了输入法的上面,这样很不美观,所以找了一下解决办法记录如下: 在AndroidManifest.xml文件中找到对应的act ...

  9. android从数据库中取音乐数据

    android从手机数据库中取音乐数据 直接贴代码 public void getMp3(){ list = new ArrayList<>(); Cursor mAudioCursor ...

随机推荐

  1. 深层神经网络框架的python实现

    概述 本文demo非常适合入门AI与深度学习的同学,从最基础的知识讲起,只要有一点点的高等数学.统计学.矩阵的相关知识,相信大家完全可以看明白.程序的编写不借助任何第三方的深度学习库,从最底层写起. ...

  2. Jenkins部署java项目实例02

    源码管理 选择 “git”, Repository URL填写你的git地址,并配置对应的key,大家最好事前先在jenkins这台机器上能够直接远程git操作私有仓库 构建触发器.构建环境.Pre ...

  3. django.db.utils.OperationalError: no such table: auth_user

    关于使用django 首次创建超级管理员时,出现     django.db.utils.OperationalError: no such table: auth_user   错误 1.首先使用命 ...

  4. Laravel Eloquent ORM--整理(未转)

    转:http://blog.csdn.net/a437629292/article/details/46312695 http://www.jianshu.com/p/cb641a4f3599

  5. maven optional可选依赖

    应用场景:projectA 依赖projectB,  projectB 依赖projectC时 <dependency> <groupId>com.itear.projectC ...

  6. GNU C编译器的gnu11和c11

    国际标准组织发布c11后,gnu为自己的编译器发布两种标准gnu11和c11 gnu11:带gnu c扩展的c11标准,如果你的代码包含了typeof,__attribute__等等gnu的扩展,就必 ...

  7. 使用jvisualvm进行远程监控

    1. 描述 jvisualvm是JDK自带的监控工具,位于JDK bin目录下面. 默认jvisualvm不能监控远程的JVM进程,需要进行一些配置. 2. 单独在应用上配置JVM启动参数 在Java ...

  8. Quartus调用Modelsim SE避免重复编译Altera器件库的方法

    最近用Quartus 15.0配合Modelsim SE 10.4的64位版本,简直就是闪电一般的仿真速度.但是众所周知,SE版本最大的问题就是每次由Quartus自动调用时,都要重新编译所使用的器件 ...

  9. linux下实现CPU使用率和内存使用率获取方法

    想获取一下目标机运行时linux系统的硬件占用情况,写了这几个小程序,以后直接用了. 方法就是读取proc下的文件来获取了. cpu使用率:    /proc/stat ,内存使用情况:     /p ...

  10. Leetcode[81]-Search for a Range

    Link: https://leetcode.com/problems/search-in-rotated-sorted-array-ii/ Given a sorted array of integ ...