package coolbuy360.searchhealth; import java.util.HashMap; import java.util.Map; import coolbuy360.control.CustomerScrollView; import coolbuy360.control.CustomerScrollView.onTurnListener; import coolbuy360.control.RotateAnimation; import coolbuy360.control.RotateAnimation.InterpolatedTimeListener; import coolbuy360.control.ScoreChangePopup; import coolbuy360.logic.User; import coolbuy360.searchhealth.MemberLogin.loginbtnOnClick; import coolbuy360.searchhealth.R.id; import coolbuy360.searchhealth.R.layout; import coolbuy360.searchhealth.R.string; import coolbuy360.service.BuilderGestureExt; import coolbuy360.service.CommandResult; import coolbuy360.service.CommonMethod; import coolbuy360.service.DisplayParams; import coolbuy360.service.DisplayUtil; import android.R.anim; import android.app.Activity; import android.app.Dialog; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.BackgroundColorSpan; import android.text.style.ForegroundColorSpan; import android.util.Log; import android.view.GestureDetector; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.ScaleAnimation; import android.view.animation.TranslateAnimation; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.PopupWindow.OnDismissListener; import android.widget.ProgressBar; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; public class MemberHealthScore extends Activity implements InterpolatedTimeListener, onTurnListener { public static String tagString = "MemberHealthScore"; private ImageView customer_scrollview_bg; private Button member_score_btn_check; private TextView member_score_txt_checkstate; private TextView member_score_text_total; private TextView member_score_text_detail; private CustomerScrollView customerScrollView; private GestureDetector gestureDetector; private Button member_score_btn_More; private View line_up; // private TableLayout tl_main; private int current_id = 0; PopupWindow popupWindow; private int todayScore = 0; public ProgressBar pBarLoading; /* * private int drawable_id[] = { R.drawable.member_health_score_hole, * R.drawable.member_health_score_hole_artist, * R.drawable.member_health_hole_information }; */ private int drawable_id[] = { R.drawable.score_uncheck, R.drawable.score_had_check }; private int drawablebg_id[] = { R.drawable.score_header_bg, R.drawable.score_header_bg, R.drawable.score_header_bg, R.drawable.score_header_bg, R.drawable.score_header_bg, R.drawable.score_header_bg, R.drawable.score_header_bg, R.drawable.score_header_bg, R.drawable.score_header_bg, R.drawable.score_header_bg }; protected void initView() { setContentView(R.layout.memberhealthscore); customerScrollView = (CustomerScrollView) findViewById(R.id.customerScrollView); customer_scrollview_bg = (ImageView) findViewById(R.id.customer_scrollview_bg); customer_scrollview_bg.setImageResource(drawablebg_id[GetRandom(8)]); line_up = (View) findViewById(R.id.line_up); member_score_btn_check = (Button) findViewById(R.id.member_score_btn_check); //Log.i(tagString, tagString + "member_score_btn_check clickable= "+ member_score_btn_check.isClickable()); member_score_btn_check.isClickable(); member_score_txt_checkstate = (TextView) findViewById(R.id.member_score_txt_checkstate); member_score_text_total = (TextView) findViewById(R.id.member_score_text_val); String totalScore = User.getScore(this); if (totalScore == null && totalScore.equals("")) { member_score_text_total.setText("0"); } else { member_score_text_total.setText(totalScore); } member_score_text_detail = (TextView) findViewById(R.id.member_score_text_detail); pBarLoading = (ProgressBar) findViewById(R.id.member_score_check_loading_progressbar); customerScrollView.setTurnListener(this); member_score_btn_More = (Button) this .findViewById(R.id.member_score_btn_More); member_score_btn_More.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO �Զ����ɵķ������ Intent intent = new Intent(MemberHealthScore.this, MemberEarnMoreScore.class); MemberHealthScore.this.startActivity(intent); } }); TextView titleView = (TextView) this .findViewById(R.id.actionbar_page_title); titleView.setText(R.string.program_healthscore); ImageButton prebtnButton = (ImageButton) this .findViewById(R.id.actionbar_pre_btn); prebtnButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO �Զ����ɵķ������ MemberHealthScore.this.finish(); } }); member_score_btn_check.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO �Զ����ɵķ������ new AsyncCheckHandle().execute(); } }); //Log.i(tagString, tagString + "member_score_btn_check clickable= "+ member_score_btn_check.isClickable()); member_score_btn_check.setClickable(false); //Log.i(tagString, tagString + "member_score_btn_check clickable= "+ member_score_btn_check.isClickable()); member_score_text_detail.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MemberHealthScore.this, MemberScoreLog.class); MemberHealthScore.this.startActivity(intent); } }); /* �һ���Ʒ */ FrameLayout member_exchange_gif_layout = (FrameLayout) findViewById(R.id.member_exchange_gif_layout); member_exchange_gif_layout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { /*Intent intent = new Intent(MemberHealthScore.this, MemberScoreExchange.class); MemberHealthScore.this.startActivity(intent);*/ } }); /* member_exchange_gif_layout.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int action =event.getAction(); switch (action) { case MotionEvent.ACTION_MOVE: Log.i(tagString, tagString + "member_exchange_gif_layout: ACTION_MOVE:"); break; case MotionEvent.ACTION_DOWN: Log.i(tagString, tagString + "member_exchange_gif_layout: ACTION_DOWN:"); break; case MotionEvent.ACTION_UP: Log.i(tagString, tagString + "member_exchange_gif_layout: ACTION_UP:"); break; default: break; } return false; } });*/ /* member_exchange_gif_layout.setOnTouchListener(new CommonMethod.setOnPressed()); member_exchange_gif_layout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MemberHealthScore.this, MemberScoreExchange.class); MemberHealthScore.this.startActivity(intent); } });*/ /* �һ�Ǯ */ FrameLayout member_exchange_money_layout = (FrameLayout) findViewById(R.id.member_exchange_money_layout); /* member_exchange_money_layout .setOnTouchListener(new CommonMethod.setOnPressed());*/ member_exchange_money_layout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { /*Intent intent = new Intent(MemberHealthScore.this, MemberScoreExchange.class); MemberHealthScore.this.startActivity(intent);*/ } }); /* �һ�� */ FrameLayout member_exchange_activity_layout = (FrameLayout) findViewById(R.id.member_exchange_activity_layout); /* member_exchange_activity_layout .setOnTouchListener(new CommonMethod.setOnPressed());*/ member_exchange_activity_layout .setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { /*Intent intent = new Intent(MemberHealthScore.this, MemberScoreExchange.class); MemberHealthScore.this.startActivity(intent);*/ } }); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView(); customerScrollView.setImageView(customer_scrollview_bg);// ���� customerScrollView.setLine_up(line_up); new AsyncLoader_Refresh().execute(); //GestureEvent(); } @Override protected void onRestart() { // TODO �Զ����ɵķ������ Log.i(tagString, tagString + " onRestart"); super.onRestart(); } /** * �ı�ǩ����������� * * @param textView * @param dayString * @param scoreString */ private void CheckValueState(TextView textView, String strsString) { int dayStartIndex = strsString.indexOf("��"); int dayEndIndex = strsString.indexOf("��"); int scoreStartIndex = strsString.indexOf("��"); SpannableStringBuilder style = new SpannableStringBuilder(strsString); // style.setSpan(new // BackgroundColorSpan(Color.RED),5,7,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); style.setSpan(new ForegroundColorSpan(Color.RED), dayStartIndex + 1, dayEndIndex, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); style.setSpan(new ForegroundColorSpan(Color.RED), scoreStartIndex + 1, strsString.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); textView.setText(style); } /** * ��ʾ���ֱ仯���� * * @param parentViewID * @param value */ private void showScoreChange(int parentViewID, int value) { ScoreChangePopup popupWindow = new ScoreChangePopup(this, value); todayScore = value; popupWindow.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss() { // TODO �Զ����ɵķ������ changeTotalScore(todayScore); } }); popupWindow.showAtLocation(findViewById(parentViewID), Gravity.CENTER, 0, 0); popupWindow.delayedDismiss(); } public void changeTotalScore(int score) { int total = Integer.valueOf( member_score_text_total.getText().toString()).intValue(); total += score; member_score_text_total.setText(total + ""); } /* * ���� Javadoc�� * * @see android.app.Activity#onResume() */ @Override protected void onResume() { Log.i(tagString, tagString + " onResume"); // TODO �Զ����ɵķ������ customer_scrollview_bg.setImageResource(drawablebg_id[GetRandom(10)]); super.onResume(); } @Override public void onTurn() { RotateAnimation animation = new RotateAnimation(); animation.setFillAfter(true); animation.setInterpolatedTimeListener(this); animation.setRepeatCount(-1); member_score_btn_check.startAnimation(animation); // current_id = current_id < drawable_id.length - 1 ? ++current_id : 0; // current_id=0; new AsyncLoader_Refresh().execute(); } @Override public void interpolatedTime(float interpolatedTime) { // ��������ת���ȹ���ʱ������ͼƬ���ݣ� if (interpolatedTime > 0.5f) { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), drawable_id[current_id]); // member_score_btn_check.setImageBitmap(bitmap); member_score_btn_check .setBackgroundResource(drawable_id[current_id]); } } /** * ��ȡ��0��ʼ��maxint-1������� * * @param maxint * @return */ private int GetRandom(int maxint) { int n = 0; for (int i = 0; i < 30; i++) { n = 1 + (int) (Math.random() * maxint); } return n - 1; } /** * ǩ������ ����ǩ������<br/> * ��ǩ���ɹ�<br/> * ����[result],[message],[addscore],[score],[checkintimes],[nextscore],[today * ];<br/> * today��ʾ�����Ƿ�ǩ����״̬��1Ϊ��ǩ����0Ϊδǩ��<br/> * ��ǩ��ʧ��<br/> * ����[result],[message]��ֵ�� */ private class AsyncCheckHandle extends AsyncTask<String, Void, Boolean> { Map<String, String> innerMap = new HashMap<String, String>(); CommandResult commandResult = new CommandResult(false, "ǩ��ʧ�ܣ�δ֪����"); @Override protected void onPreExecute() { // TODO �Զ����ɵķ������ showLoading(); super.onPreExecute(); } @Override protected Boolean doInBackground(String... params) { // TODO �Զ����ɵķ������ try { User user = new User(MemberHealthScore.this); commandResult = user.checkIn(); if (commandResult.getResult()) { innerMap = commandResult.getOriginalResult(); return true; } else { return false; } } catch (Exception e) { commandResult.setResult(false); commandResult.setMessage("ϵͳ����������"); return false; } } @Override protected void onPostExecute(Boolean result) { cancelLoading(); member_score_btn_check.clearAnimation(); if (result) { int addscore = Integer.valueOf(innerMap.get("addscore")) .intValue(); int checkintimes = Integer .valueOf(innerMap.get("checkintimes")).intValue(); int nextscore = Integer.valueOf(innerMap.get("nextscore")) .intValue(); // showPopupWindow(addscore+""); showScoreChange(R.id.member_score_btn_check, addscore); String strsString = "������ǩ��" + checkintimes + "�� ����+" + nextscore; CheckValueState(member_score_txt_checkstate, strsString); member_score_btn_check.setClickable(false); current_id = 1; member_score_btn_check .setBackgroundResource(drawable_id[current_id]); } else { Toast.makeText(MemberHealthScore.this, commandResult.getMessage(), 1).show(); } } } /** * ��ȡǩ��״̬ * * @author Administrator //����ǩ������ * //����ȡ�ɹ�������[score],[checkintimes],[nextscore],[today]; * //����ȡʧ�ܣ�����[message]��ֵ�� */ private class AsyncLoader_Refresh extends AsyncTask<String, Void, Boolean> { Map<String, String> innerMap = new HashMap<String, String>(); CommandResult commandResult = new CommandResult(false, "ǩ��ʧ�ܣ�δ֪����"); @Override protected void onPreExecute() { // TODO �Զ����ɵķ������ showLoading(); } @Override protected Boolean doInBackground(String... params) { // TODO �Զ����ɵķ������ try { User user = new User(MemberHealthScore.this); commandResult = user.getCheckInState(); if (commandResult.getResult()) { innerMap = commandResult.getOriginalResult(); return true; } else { return false; } } catch (Exception e) { commandResult.setResult(false); commandResult.setMessage("ϵͳ����������"); return false; } } @Override protected void onPostExecute(Boolean result) { cancelLoading(); member_score_btn_check.clearAnimation(); if (result) { int totalscore = Integer.valueOf(innerMap.get("score")) .intValue(); int checkintimes = Integer .valueOf(innerMap.get("checkintimes")).intValue(); int nextscore = Integer.valueOf(innerMap.get("nextscore")) .intValue(); int today = Integer.valueOf(innerMap.get("today")).intValue(); if (today == 0) { // showPopupWindow(addscore+""); String strsString = "������ǩ��" + checkintimes + "�� ����+" + nextscore; CheckValueState(member_score_txt_checkstate, strsString); current_id = 0; member_score_btn_check .setBackgroundResource(drawable_id[current_id]); member_score_btn_check.setClickable(true); member_score_text_total.setText(totalscore + ""); } else { String strsString = "������ǩ��" + checkintimes + "�� ����+" + nextscore; CheckValueState(member_score_txt_checkstate, strsString); current_id = 1; member_score_btn_check .setBackgroundResource(drawable_id[current_id]); member_score_btn_check.setClickable(false); member_score_text_total.setText(totalscore + ""); } } else { Toast.makeText(MemberHealthScore.this, commandResult.getMessage(), 1).show(); } } } public void showLoading() { if (pBarLoading != null) { pBarLoading.setVisibility(View.VISIBLE); } } public void cancelLoading() { pBarLoading.setVisibility(View.GONE); } /* private void GestureEvent() { gestureDetector = new BuilderGestureExt(this, new BuilderGestureExt.OnGestureResult() { @Override public void onGestureResult(int direction) { if (direction == 2 || direction == 3) { // show(Integer.toString(direction)); MemberHealthScore.this.finish(); overridePendingTransition(R.anim.push_no, R.anim.push_right_out); } } }).Buile(); } @Override public boolean onTouchEvent(MotionEvent event) { return gestureDetector.onTouchEvent(event); }*/ }