装备选择案例
来源:互联网 发布:手腕细 手表 知乎 编辑:程序博客网 时间:2024/05/11 23:42
要实现的效果图:
**
创建一个新的工程,如下图:
**
1、activity_main.xml:装备选择对应的布局文件。
此布局中使用到了控件ProgressBar(进度条),它是用来显示小宝宝的生命值、攻击力和敏捷度的。ProgressBar通常用于访问网络展示Laoding对话框以及下载文件时显示的进度。它有两种表现形式,一种是水平的,另一种是环形的。它的表现形式是由style属性控制的,ProgressBar有以下几个常用方法属性:
㈠ style属性:控制ProgressBar的表现形式,水平进度条需要设置style的属性值为“?android:attr/progressBarStyleHorizontal”,环形进度条需要设置style的属性值为“?android:attr/progressBarStyleLarge”
㈡ setMax()方法:设置进度条的最大值
㈢ setProgress()方法:设置当前进度
㈣getProgress()方法:获取当前进度
activity_main.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:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" 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="com.example.thinkpad.myapplication.MainActivity"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="45dp" android:src="@drawable/baby" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="主人,快给小宝宝购买装备吧!" android:textSize="18sp" /> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="25dp" android:gravity="center"> <!--第一行--> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="生命值:" /> <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_weight="3" /> <TextView android:layout_width="0dp" android:id="@+id/tv_life" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginTop="5dp" android:layout_weight="1" android:text="80" /> </TableRow> <!--第二行--> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="攻击力:" /> <ProgressBar android:id="@+id/progressBar2" style="?android:attr/progressBarStyleHorizontal" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_weight="3" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginTop="5dp" android:layout_weight="1" android:text="80" android:id="@+id/tv_atk"/> </TableRow> <!--第三行--> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="敏捷度:" /> <ProgressBar android:id="@+id/progressBar3" style="?android:attr/progressBarStyleHorizontal" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_weight="3" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginTop="5dp" android:layout_weight="1" android:text="80" android:id="@+id/tv_quick"/> </TableRow> </TableLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp"> <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:drawablePadding="3dp" android:drawableRight="@android:drawable/ic_menu_add" android:onClick="click1" 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>
效果图:
2、activity_shopping.xml:购买装备对应的布局文件。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <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:layout_alignParentLeft="true" android:layout_centerVertical="true" 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_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: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> </RelativeLayout> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <View android:layout_width="30dp" android:layout_height="30dp" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:background="@android:drawable/ic_menu_info_details" /> <TextView android:id="@+id/tv_name1" 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_life1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="生命值" android:textSize="13sp" /> <TextView android:id="@+id/tv_attack1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="攻击力" android:textSize="13sp" /> <TextView android:id="@+id/tv_speed1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="速度" android:textSize="13sp" /> </LinearLayout> </RelativeLayout></LinearLayout>
效果图:
3、Info类:创建一个Info类,用于封装装备信息:
package com.example.thinkpad.myapplication;import java.io.Serializable;public class Info implements Serializable { private String name; private int acctack; private int life; private int speed; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSpeed() { return speed; } public void setSpeed(int speed) { this.speed = speed; } public int getLife() { return life; } public void setLife(int life) { this.life = life; } public int getAcctack() { return acctack; } public void setAcctack(int acctack) { this.acctack = acctack; } public Info(String name, int acctack, int life, int speed) { this.name = name; this.acctack = acctack; this.life = life; this.speed = speed; }}
注意:Intent除了传递基本类型之外,也能传递Serializable或Parcelable类型的数据。为了方便数据传递,在这里让Info类实现Serializable接口。
4、MainActivity:主要用于响应按钮的点击事件,并将返回的装备信息显示到指定的控件中。
package com.example.thinkpad.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.content.Intent;import android.view.View;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity extends AppCompatActivity { public ProgressBar pb1; public ProgressBar pb2; public ProgressBar pb3; public TextView tv_life; public TextView tv_atk; public TextView tv_quick; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //(1)找到我们关心的控件 pb1 = (ProgressBar) findViewById(R.id.progressBar1); pb2 = (ProgressBar) findViewById(R.id.progressBar2); pb3 = (ProgressBar) findViewById(R.id.progressBar3); tv_life = (TextView) findViewById(R.id.tv_life); tv_atk = (TextView) findViewById(R.id.tv_atk); tv_quick = (TextView) findViewById(R.id.tv_quick); //(2)初始化进度条的最大值 pb1.setMax(1000); pb2.setMax(1000); pb3.setMax(1000); } //点击按钮,跳转到shopping页面,进行够买装备 public void click1(View v) { Intent intent = new Intent(this, ShoppingActivity.class); //开启一个页面,并要开启一个页面的返回数据 startActivityForResult(intent, 1); } //点击按钮,跳转到shopping页面,进行够买装备 public void click2(View v) { Intent intent = new Intent(this, ShoppingActivity.class); //开启一个页面,并要开启一个页面的返回数据 startActivityForResult(intent, 1); } //当我们开启的Activity关闭的时候调用这个方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == 10) //代表数据来源于shoppingActivity,取数据 { Info info = (Info) data.getExtras().get("info"); //更新一下ui updataProgressBar(info); } if (resultCode == 5) //代表数据来源于shoppingActivity,取数据 { Info info1 = (Info) data.getExtras().get("info1"); //更新一下ui updataProgressBar(info1); } super.onActivityResult(requestCode, resultCode, data); } //更新当前控件的ui private void updataProgressBar(Info info) //获取当前progressbar的进度 { int progress1 = pb1.getProgress(); int progress2 = pb2.getProgress(); int progress3 = pb3.getProgress(); //(2)更新一下progressbar的进度 pb1.setProgress(progress1 + info.getLife()); pb2.setProgress(progress2 + info.getAcctack()); pb3.setProgress(progress3 + info.getSpeed()); //更新一下textview的值 tv_life.setText(pb1.getProgress() + ""); tv_atk.setText(pb2.getProgress() + ""); tv_quick.setText(pb3.getProgress() + ""); }}
5、ShoppingActivity:用来展示装备信息,当点击ShoppingActivity的装备时,会调回MainActivity并将装备信息回传给MainActivity。
package com.example.thinkpad.myapplication;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.TextView;public class ShoppingActivity extends AppCompatActivity implements View.OnClickListener { private Info info; private Info info1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载布局 setContentView(R.layout.activity_shopping); findViewById(R.id.rl).setOnClickListener(this); findViewById(R.id.rl1).setOnClickListener(this); //(1)初始化显示到界面上的数据 info = new Info("金剑", 20, 100, 20); //找到控件,显示数据 TextView tv_life = (TextView) findViewById(R.id.tv_life); TextView tv_attack = (TextView) findViewById(R.id.tv_attack); TextView tv_speed = (TextView) findViewById(R.id.tv_speed); TextView tv_name = (TextView) findViewById(R.id.tv_name); //初始化一下数据,展示到控件上 tv_attack.setText("攻击力:" + info.getAcctack()); tv_life.setText("生命力:" + info.getLife()); tv_speed.setText("敏捷度:" + info.getSpeed()); tv_name.setText(info.getName()); //(1)初始化显示到界面上的数据 info1 = new Info("银剑", 10, 50, 10); //找到控件,显示数据 TextView tv_life1 = (TextView) findViewById(R.id.tv_life1); TextView tv_attack1 = (TextView) findViewById(R.id.tv_attack1); TextView tv_speed1 = (TextView) findViewById(R.id.tv_speed1); TextView tv_name1 = (TextView) findViewById(R.id.tv_name1); //初始化一下数据,展示到控件上 tv_attack1.setText("攻击力:" + info1.getAcctack()); tv_life1.setText("生命力:" + info1.getLife()); tv_speed1.setText("敏捷度:" + info1.getSpeed()); tv_name1.setText(info1.getName()); } @Override public void onBackPressed() { super.onBackPressed(); } public void onClick(View v) { //具体判断一下点击的是谁 switch (v.getId()) { case R.id.rl: //(1)获取当前的数据,把Info数据返回 Intent intent = new Intent(); intent.putExtra("info", info); //把结果返回给调用者--MainActivity,通过onActivityResult方法返回 setResult(10, intent); //(2)关闭当前这个页面,通过onActivityResult方法把数据返回 finish(); break; case R.id.rl1: //(1)获取当前的数据,把Info数据返回 Intent intent1 = new Intent(); intent1.putExtra("info1", info1); //把结果返回给调用者--MainActivity,通过onActivityResult方法返回 setResult(5, intent1); //(2)关闭当前这个页面,通过onActivityResult方法把数据返回 finish(); break; default: break; } }}
注意: setResult()方法的作用是让当前的Activity返回到它的调用者,在这里可以理解为让ShoppingActivity返回到MainActivity。
最终运行效果图:
在主界面中分别单击“主人购买装备”“小宝宝购买装备”按钮,会跳转至装备展示界面,装备购买成功后,在跳回主界面,并更新数据。
- 装备选择案例
- 案例--装备选择
- Android装备选择案例
- Android装备选择案例
- 案例---装备选择
- Android装备选择案例
- 装备选择案例
- 课本案例--装备选择
- 案例——装备选择
- 案例——装备选择
- Android案例—装备选择
- Android 案例—装备选择
- 案例——装备选择
- Activity跳转(装备选择案例)
- Activity跳转(装备选择案例)
- 关于android的装备选择案例
- 开发小游戏之(案例——装备选择)
- Activity的数据回传——案例:装备选择
- SSL 1764——最小生成树II
- 迷宫
- python 图表plot样式
- L1-006. 连续因子
- codeup模拟赛 进击的二叉查找数
- 装备选择案例
- 求1!+2!+3!+......10!
- 反射
- java中lang sql util包
- SAP HANA XS 专栏
- c++11::std::unordered_map::demo
- 汇编写冒泡排序
- org.hibernate.internal.util.config.ConfigurationException: Unable to perform unmarshalling at line n
- 2017年3月Java编程题整理