Android自学笔记(四)简单电子宠物的实现

这篇博客记录了作者在学习Android过程中尝试实现一个简单电子宠物的过程。应用使用了逆转裁判的游戏素材,并借助android-gif-drawable库展示gif。宠物有喂食、清洁和玩耍三个互动选项,角色状态通过ProgressBar显示,由后台Service每小时更新。博客中还展示了涉及的类和布局文件设计。
摘要由CSDN通过智能技术生成

 由于本人还是个菜鸡……代码质量难以保证,so仅供个人学习记录目的和仅供参考……要是发现什么bug会编辑博客……有意见建议欢迎提出!

  最近在Android学习的过程中接触到了简单的动画效果,就突然想做个电子宠物应用一下(~ ̄▽ ̄)~*。

  素材来源是游戏逆转裁判的素材……也算表达一下个人对这一系列的爱……(~ ̄▽ ̄)~*。

gif的显示用的是GitHub的开源库:android-gif-drawable,https://github.com/koral--/android-gif-drawable

实现之后的界面如下,左上角有喂食,清洁和玩耍三个选项,屏幕下方是角色活动区域,由于个人水平不够,目前只能按照规定的路线移动。然后在按钮右侧,采用了ProgressBar来显示角色当前的状态,状态由service后台更新。


  首先,定义了一个存储状态,资源文件id,对话等的类,如下

package com.ldgforever.NZpetty;

import com.ldgforever.NZpetty.R.drawable;

public class petState {
	
	private static int mHunger = 100;
	private static int mCleaning = 100;
	private static int mHappiness= 100;
	
	private static String[] mHungerDialog = {			
			"你给我吃的是什么垃圾食品",     "还不错的样子",
			"有点好吃",                    "吃什么好呢",
			"要不要一起吃??",               "……哼",
			"……(饿了)" ,                 "这……这是什么啊!"
	};

	private static int[] hungerHeadImage = {
			R.drawable.mingcowhide,     R.drawable.mingcross,
			R.drawable.mingonefinger,   R.drawable.mingpointat,
			R.drawable.mingwave,        R.drawable.mingcrossed,
			R.drawable.mingthreat,      R.drawable.mingwtf
	};
	
	private static String[] mCleanDialog = {
			"舒服多了",                  "……(愉悦)",
			"你看见我的小黄鸭了么",       "……(心情不错)",
			"肥皂找不到了",              "快去给本小姐烧水!"
	};
	
	private static int[] cleanHeadImage = {
			R.drawable.mingpointat,     R.drawable.mingcross,   
			R.drawable.mingwave,        R.drawable.mingonefinger,
			R.drawable.mingcrossed,     R.drawable.mingcowhide
	};
	
	private static String[] mPlayDialog = {
			"只有白痴的律师才会用白痴的思维询问白痴的证人从而得到白痴的答案……就让本人的皮鞭告诉你真相吧!",
			"……哼",
			"白痴看到白痴在白日梦里看到了另一个白痴的白痴……",
			"……(暴躁)",
			"这个月的工资问题可要仔细研究一下了……",
			"导弹?……还挺可爱的",
			"干的好,这一鞭是赏你的!!",
			"如果把我惹火了,我可以把一两个男的弄哭给你看!",
			"卑鄙、下流、肮脏、无耻、败类加人渣的臭男人",
			"就算你有自信,错误也是不会改变的!"
	};
	
	private static int[] happinessHeadImage = {
			R.drawable.mingthreat,      R.drawable.mingcrossed,
			R.drawable.mingwave,        R.drawable.mingcowhide,
			R.drawable.mingpointat,     R.drawable.mingonefinger,
			R.drawable.mingwave,        R.drawable.mingcross,
			R.drawable.mingcowhide,     R.drawable.mingpointat
	};
	
	private static int[] onTouchImage = {
			R.drawable.minganger,     R.drawable.mingmanner,
			R.drawable.mingfall,      R.drawable.mingtada,
			R.drawable.mingandlang,   R.drawable.minghuggy
	};
	
	public static int getHunger() {
		return mHunger;
	}

	public static void setHunger(int hunger) {
		mHunger = hunger;
	}

	public static int getCleaning() {
		return mCleaning;
	}

	public static void setCleaning(int cleaning) {
		mCleaning = cleaning;
	}

	public static String getHungerDialog(int index) {
		return mHungerDialog[index];
	}

	public void setHungerDialog(String[] hungerDialog) {
		mHungerDialog = hungerDialog;
	}

	public static String getCleanDialog(int index) {
		return mCleanDialog[index];
	}

	public void setCleanDialog(String[] cleanDialog) {
		mCleanDialog = cleanDialog;
	}

	public static String getPlayDialog(int index) {
		return mPlayDialog[index];
	}

	public void setPlayDialog(String[] playDialog) {
		mPlayDialog = playDialog;
	}
	
	public static int getHappiness() {
		return mHappiness;
	}

	public static void setHappiness(int happiness) {
		mHappiness = happiness;
	}

	
	public static int getHungerHeadImage(int index) {
		return hungerHeadImage[index];
	}

	public void setHungerHeadImage(int[] hungerHeadImage) {
		this.hungerHeadImage = hungerHeadImage;
	}

	public static int getCleaningHeadImage(int index) {
		return cleanHeadImage[index];
	}

	public void setCleaningHeadImage(int[] cleanHeadImage) {
		this.cleanHeadImage = cleanHeadImage;
	}
	
	public static int getHappinessHeadImage(int index) {
		return happinessHeadImage[index];
	}

	public void setHappinessHeadImage(int[] happinessHeadImage) {
		this.happinessHeadImage = happinessHeadImage;
	}
	
	public static int getOnTouchImage(int index) {
		return onTouchImage[index];
	}

	public void setOnTouchImage(int[] onTouchImage) {
		this.onTouchImage = onTouchImage;
	}
}


  然后,MainActivity及其布局文件

<pre class="java" name="code">package com.ldgforever.NZpetty;

import java.util.Map;
import com.ldgforever.savedata.savedataBySharedPreference;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation;
import android.widget.ProgressBar;
import android.widget.Toast;
import pl.droidsonroids.gif.GifDrawable;
import pl.droidsonroids.gif.GifImageView;

public class MainActivity extends Activity {

	private static ProgressBar mHungerProgress;
	private static ProgressBar mCleanProgress;
	private static ProgressBar mHappinessProgress;

	public static int mHunger;
	public static int mCleanness;
	public static int mHappiness;
	private int mRole;
	private String RoleChoosen = null;

	private GifImageView gifImageViewWW;
	private GifImageView gifImageViewWE;
	private GifImageView gifImageViewMovement;
	
	private GifDrawable gifDrawableWW;
	private GifDrawable 
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值