由于本人还是个菜鸡……代码质量难以保证,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