这个小案例其实是教我们如何使用进度条ProgressBar。

1.创建程序
创建一个名为“装备选择”的工程(但是如果你使用的是Android Stdio的话它不支持中文名,可以设为equip-choice),将包名修改为cn.itcast.select,设计用户交互界面

装备选择程序对应的布局文件(activity_main.xml),代码中用到了控件ProgressBar进度条,它是用来显示小宝宝的生命值,攻击力和敏捷度的。ProgressBar通常用于访问网络展示Loading对话框以及下载文件时显示的进度。它有两种表现形式,一种是水平的(即本案例用到的),另一种是环形的,它的表现形式由style属性控制,ProgressBar几个常用方法属性如下所示:
(1)style属性:控制ProgressBar的表现形式,水平进度条设置style=”?android:attr/progressBarStyleHorizontal”,环形进度条设置style=”?android:attr/progressBarStyleLarge”
(2)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:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:orientation="vertical"android:gravity="center"tools:context="cn.itcast.select.myapplication.MainActivity"><ImageView
        android:layout_width="wrap_content"android:layout_height="150dp"android:id="@+id/pet_imgv"android:layout_gravity="center_horizontal"android:layout_marginBottom="5dp"android:layout_marginTop="30dp"android:src="@drawable/timg"/><TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/prt_dialog_tv"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"><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_gravity="center"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"><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_gravity="center"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"android:layout_marginTop="20dp"><Button
            android:id="@+id/btn_host"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:drawablePadding="5dp"android:drawableRight="@android:drawable/ic_menu_add"android:onClick="click"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="5dp"android:drawableRight="@android:drawable/ic_menu_add"android:onClick="click"android:text="小宝宝购买装备"android:textSize="14sp"/></RelativeLayout>
</LinearLayout>

2.创建装备界面
创建装备界面activit_shop.xml,这个页面是用来展示装备的
布局效果如下:

activity_shop.xml文件代码如下:

<?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="13dp"android:text="生命值"/><TextView
            android:id="@+id/tv_attack"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="13dp"android:text="攻击力"/><TextView
            android:id="@+id/tv_speed"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="13dp"android:text="速度"/></LinearLayout>
</RelativeLayout>

3.创建ItemInfo类
在java下面创建一个名为“cn.itcast.domain”的包,在包里创建一个ItemInfo类,用于封装装备信息。

(1)打开java->Package

(2)选择main

(3)输入包名

(4)建类

ItemInfo类的代码如下:

package cn.itcast.domain;import java.io.Serializable;/*** Created by 李小宁 on 3/25/2017.*/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+"]";}
}

4.创建ShopActivity
ShopActivity是用来展示装备信息的,当单击ShopActivity的装备时,会带着装备信息调回MainActivity并关闭当前这个页面,通过onActivityResult方法把数据返回,

ShopActivity.java代码如下:

package cn.itcast.select.myapplication;import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;import cn.itcast.domain.ItemInfo;public class ShopActivity extends AppCompatActivity implements View.OnClickListener {private ItemInfo itemInfo;@Overrideprotected 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());}public void onClick(View v){switch(v.getId()){//具体判断一下点击的谁case R.id.rl:   //证明点击的就是这个布局//(1)获取当前的数据 把info数据返回Intent intent =new Intent();intent.putExtra("equipment",itemInfo);//把结果返回给调用者(MainActivity)setResult(1,intent);//(2)关闭当前这个页面,通过onActivityResult方法把数据返回finish();break;}}
}

5.编写界面交互界面(MainActivity.java)
此界面主要用于响应按钮的点击事件,并将返回的装备信息显示到指定的控件中,更新进度条。

MainActivity页面代码如下:

package cn.itcast.select.myapplication;import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;import cn.itcast.domain.ItemInfo;public class MainActivity extends AppCompatActivity {//定义所需要的控件private ProgressBar mprogressBar1;private ProgressBar mprogressBar2;private ProgressBar mprogressBar3;private TextView mLifeTV;private TextView mAttackTV;private TextView mSpeedTV;@Overrideprotected 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);mprogressBar2.setMax(1000);mprogressBar3.setMax(1000);}//开启新的activity并且想获取他的返回值--点击按钮跳转到另外一个ShopActivity页面进行购买装备public void click(View view){Intent intent=new Intent(this,ShopActivity.class);startActivityForResult(intent,1);   //返回请求结果,请求码为1}//当开启的ShopActivity关闭的时候protected void onActivityResult(int requestCode,int resultCode,Intent data){super.onActivityResult(requestCode,resultCode,data);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()+"");}
}

6.清单文件的配置:

AndroidManifest.xml文件的具体代码如下:

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

7.程序运行的界面:

点击“主人购买装备”或者“小宝宝购买装备”,跳转到装备展示页面

点一下装备展示界面的文字或图片就会购买成功,跳转到之前的界面并且小宝宝的生命值,攻击力和敏捷度都会有相应的增加

这样我们就把装备选择给完成了,这个小案例想告诉大家的是如何使用ProgressBar进度条。

开发小游戏之(案例——装备选择)相关推荐

  1. 个人使用CocosCreator开发小游戏路上的一些“坑坑洼洼”

    个人使用CocosCreator开发小游戏路上的一些"坑坑洼洼" 开场自白 微信小游戏 适配 一般界面弹窗节点适配 套路的需求适配 PS ps中的ps 摄像机的新手操作 tiled ...

  2. 【Unity3D开发小游戏】《愤怒的小鸟》开发教程

    [Unity3D开发小游戏]<愤怒的小鸟>开发教程 2019年09月11日 10:34:36 恬静的小魔龙 阅读数 1698更多 分类专栏: Unity3D日常 Unity3d手游开发 U ...

  3. 微信小游戏入门案例——拼图游戏

    微信小游戏入门案例--拼图游戏 涉及内容:canvas组件.小程序界面绘图API 目录结构: pages\game\game.js // pages/game/game.js // 方块的初始位置 v ...

  4. 【Unity3D开发小游戏】专栏文章导读清单

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 一.前言 本专栏,以小游戏的开发为手段,以学习为目的,在学习的道路中,总是要 ...

  5. [python] 开发小游戏 豆豆吃花瓣

    今天来做一个python游戏 使用python的游戏框架pygame开开发一个自创的豆豆吃花瓣的游戏[还没有取名字?] 首先看下游戏主目录下有些什么文件 就一个img的文件夹,和一个py的文件 img ...

  6. C语言开发小游戏—编译器篇graphic.h的安装

    用C语言开发小游戏的前期准备-以VS2015编译器为例 要开发小游戏很大 程度上C和C++都会涉及,并且会涉及不少库函数的知识,在这里简单起见,我先把开发一个简单的图形界面游戏需要的东西在这里写一下, ...

  7. 智力开发小游戏集含游戏过程中数据存取-C#入门教学程序

    对于初学C#程序开发的学员,一般进行采取开发小游戏程序,这样做首先不会让学员失去学习的兴趣,其次可以将C#中基本的控件与类的写法整合到这些游戏程序中,再次将对数据库的操作也教给学员.通过几年的观察这样 ...

  8. 微信小程序案例源码-cocos creator跨平台开发小游戏案例

    前言 本人一直想学习游戏开发,以前做过Android游戏开发,但电脑坏了,所有源码都没有了,后面也就没有开发了,近来下班之余又想开发游戏了.开发游戏之前,需要考虑开发平台及语言,以前基于Android ...

  9. 个人开发小游戏应该如何选择游戏引擎?

    随着微信生态中,小程序应用指数级的增长,许多休闲游戏变成为了众多游戏厂商流量变现的新手段.以近期很火的"羊了个羊"为例,它便是我们常常所说的小游戏.今天我们就来介绍几款游戏开发引擎 ...

  10. 开发者还能这样开发小游戏变现

    根据<2022微信小游戏增长白皮书>显示,目前微信小游戏开发者数量已经超过10万人次,特别是在持续出现小游戏爆火社交平台的趋势下,小游戏发展势头强劲. 此外仅看微信小游戏的商业规模,202 ...

最新文章

  1. pythongps聚类_python实现K聚类算法
  2. C++trie类的实现(附完整源码)
  3. mysql集群从节点无法启动_一次galera cluster集群故障节点无法启动问题排查
  4. 算法设计与分析——递归与分治策略——棋盘覆盖
  5. 能直接挂在iis的动静态网站_如何防止网站高并发引起的系统崩溃?
  6. 计算机游戏屏幕中,电脑屏幕上的游戏怎么录制
  7. 微信小程序实现类似微信评论区回复组件(mpx)
  8. VS2015:解决VS2015许可证已过期的问题
  9. Linux 学习笔记16 信号量
  10. java线上CPU、内存打满处理
  11. 打破数据围墙 加速金融创新
  12. MYSQL_ASSOC
  13. 【计算1970年到任意一个年月距离有多久】
  14. 4.一起学习Highcharts 配置选项详细说明
  15. 图片Base64编码
  16. elementui upload与form一起提交
  17. 方便面产业的繁荣重生记
  18. 在matlab图中加国界线,科学网-Matlab 利用m_map加国界线-肖鑫的博文
  19. 7-34 青蛙过桥 (50分)
  20. PyCharm打包py文件为exe文件

热门文章

  1. 2款 新版月老在线牵盲盒+交友盲盒+小纸条盲盒+交友匹配+同城交友小程序源学习
  2. 给ESXi虚拟机硬盘瘦身
  3. 初中计算机竞赛面试题目及答案,2019上半年初中信息技术教师资格面试真题及答案(第一批)...
  4. Android 获取圆角图标bitmap黑色背景问题解决
  5. ubuntu不支持安装搜狗_Ubuntu下安装搜狗输入法已经fcitx升级后搜狗输入法不能使用的解决办法...
  6. 测试打分用什么软件,测名软件哪个比较好
  7. 前端下载excel文件的两种方法
  8. 中国软件公司排名(北京)(杭州)
  9. vue.js转换乘html_Vue.js的声明式共享元素转换
  10. mysql生日提醒_生日提醒为我所有的用户mysql