package com.thankcreate.care.lab;
import java.util.Stack;
import org.achartengine.model.CategorySeries;
import com.markupartist.android.widget.ActionBar;
import com.markupartist.android.widget.ActionBar.Action;
import com.thankcreate.care.BaseActivity;
import com.thankcreate.care.R;
import com.thankcreate.care.R.layout;
import com.thankcreate.care.R.menu;
import com.thankcreate.care.tool.ui.ToastHelper;
import com.umeng.analytics.MobclickAgent;
import com.umeng.common.net.r;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
public class LabCatActivity extends BaseActivity {
private final int UP = 1;
private final int DOWN = 2;
private final int LEFT = 3;
private final int RIGHT = 4;
private final int INVALID = 5;
/**
* 当Egg被触发后,经过REGRET_TIME会使喵喵复原
* 嗯,喵喵~
*/
private final int REGRET_TIME = 3000;
private TextView textMiao;
protected ActionBar actionBar;
private GestureDetector myGestureDetector;
private float density = 1;
private int correctArray[] = {UP, UP, DOWN, DOWN, LEFT, RIGHT, LEFT, RIGHT};
private Stack<Integer> inputStack = new Stack<Integer>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lab_cat);
initActionBar();
initWhatEver();
initControl();
initGesture();
MobclickAgent.onEvent(this, "LabCatActivity");
}
private void initControl() {
textMiao = (TextView) findViewById(R.id.lab_cat_miao);
}
private void initWhatEver() {
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
density = metric.density;
}
private void initGesture() {
myGestureDetector = new GestureDetector(this, new CatGestureListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return myGestureDetector.onTouchEvent(event);
}
protected void initActionBar() {
actionBar = (ActionBar) findViewById(R.id.actionbar);
actionBar.setTitle("奇怪的地方");
addActionBarBackButton(actionBar);
actionBar.addActionRight(new Action() {
@Override
public void performAction(View view) {
new AlertDialog.Builder(LabCatActivity.this)
.setIcon(R.drawable.thumb_help)
.setTitle(">_<")
.setMessage("亲,玩过魂斗罗没?")
.setPositiveButton("谁要跟你亲!", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.setPositiveButton("关你蛋事喵~", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.create().show();
}
@Override
public int getDrawable() {
return R.drawable.thumb_help;
}
});
}
private void dispatchDicrection(int type)
{
Log.i("---dirction---", String.valueOf(type));
inputStack.push(type);
judge();
}
private void judge()
{
if(inputStack.size() == 0)
return;
for(int i = 0; i < inputStack.size(); i++)
{
if(correctArray[i] != inputStack.get(i))
{
inputStack.clear();
return;
}
}
// 如果任何一个单字都没有发生不匹配,而且已经到了正确长度
// 则说明已经完全匹配,开始出效果
if(inputStack.size() == correctArray.length)
{
showEgg();
inputStack.clear();
}
}
private void showEgg()
{
MediaPlayer player = MediaPlayer.create(this, R.raw.cat);
player.start();
textMiao.setText("喵喵~");
new Handler().postDelayed(new Runnable() {
public void run() {
textMiao.setText("喵~");
}
}, REGRET_TIME);
}
class CatGestureListener implements OnGestureListener{
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
/**
* e1是起始点,e2是终结点,后面那两个蛋蛋是加速度
*/
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
float xDelta = e2.getX() - e1.getX();
float yDelta = e2.getY() - e1.getY();
if(Math.abs(xDelta) > Math.abs(yDelta))
{
if(xDelta > 0)
dispatchDicrection(RIGHT);
else
dispatchDicrection(LEFT);
}
else if(Math.abs(yDelta) > Math.abs(xDelta))
{
if(yDelta > 0)
dispatchDicrection(DOWN);
else
dispatchDicrection(UP);
}
else
{
dispatchDicrection(INVALID);
}
return true;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
}
}