package com.michael.doubanonline; import java.util.ArrayList; import java.util.HashMap; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import com.actionbarsherlock.app.ActionBar.LayoutParams; import com.michael.doubanonline.base.BaseActivity; import com.michael.doubanonline.base.BaseCompatableAdapter; import com.michael.doubanonline.util.ToastUtil; /** * 关于的对话框 * */ public class AboutActivity extends BaseActivity { private static final String MY_APP_URL = "market://details?id=com.eu.exe";// 评价 private static final String MY_DOUBAN_URL = "http://www.douban.com/people/67175724/";// 我的站点 private static final String KEY_ID = "KEY_ID";// 方便setOnClickListener private static final String KEY_CONTENT = "KEY_CONTENT"; private static final String KEY_TYPE = "KEY_TYPE"; private static final String TYPE_COMMON = "TYPE_COMMON";// 普通的 private static final String TYPE_DECLARE_RIGHT = "TYPE_DECLARE_RIGHT";// 声明权利 private static final String TYPE_DECLARE_OPEN_SOURCE = "TYPE_DECLARE_OPEN_SOURCE";// 声明开源 ArrayList<HashMap<String, Object>> data; private LinearLayout llBg; private ImageView ivIcon; private ListView lvList; private void iniComponent() { llBg = (LinearLayout) findViewById(R.id.llBg); ivIcon = (ImageView) findViewById(R.id.ivIcon); lvList = (ListView) findViewById(R.id.lvList); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);// 需要添加的语句 iniComponent(); // this.setTitle("关于豆瓣Online"); this.setTitle(""); data = new ArrayList<HashMap<String, Object>>(); setCommonDateSource(); final AboutAdapter adapter = new AboutAdapter(this, data); lvList.setAdapter(adapter); lvList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { @SuppressWarnings("unchecked") HashMap<String, Object> map = (HashMap<String, Object>) parent.getItemAtPosition(position); switch (Integer.valueOf(map.get(KEY_ID).toString())) { case 0: openMyDoubanWebsiteOrEvaluateMyApp(MY_APP_URL); break; case 1: openMyDoubanWebsiteOrEvaluateMyApp(MY_DOUBAN_URL); break; case 2: ToastUtil.show("发送反馈"); break; case 3: setDeclareDataSource(); startDeclareFadeAnimation(); break; case 4: case 5: setCommonDateSource(); break; default: break; } adapter.notifyDataSetChanged(); } }); ivIcon.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { startHiddenAnimFadeIn(); return false; } }); } /** * 应用程序图标被长按时候的动画 * */ private void startHiddenAnimFadeIn() { int childCount = llBg.getChildCount(); if (childCount > 0) { for (int i = 0; i < childCount; i++) { llBg.getChildAt(i).setVisibility(View.GONE); } } llBg.setBackgroundResource(R.drawable.forget_love); Animation animFadeIn = AnimationUtils.loadAnimation(AboutActivity.this, R.anim.about_hidden_info_fade_in); animFadeIn.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { // do nothing } @Override public void onAnimationRepeat(Animation animation) { // do nothing } @Override public void onAnimationEnd(Animation animation) { llBg.postDelayed(new Runnable() { @Override public void run() { startHiddenAnimFadeOut(); } }, 3000); } }); llBg.startAnimation(animFadeIn); } /** * 启动隐藏的动画 * */ private void startHiddenAnimFadeOut() { Animation animFadeOut = AnimationUtils.loadAnimation(AboutActivity.this, R.anim.about_hidden_info_fade_out); animFadeOut.setFillAfter(true); animFadeOut.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { finish(); } }); llBg.startAnimation(animFadeOut); } /** * 声明被点击时候的动画 * */ private void startDeclareFadeAnimation() { Animation animation = AnimationUtils.loadAnimation(this, R.anim.about_list_view_fade_in); lvList.startAnimation(animation); } /** * 设置普通的数据源 * */ private void setCommonDateSource() { data.clear(); HashMap<String, Object> map; // map = new HashMap<String, Object>(); // map.put(KEY_ID, 0); // map.put(KEY_CONTENT, "评价此应用"); // map.put(KEY_TYPE, TYPE_COMMON); // data.add(map); map = new HashMap<String, Object>(); map.put(KEY_ID, 1); map.put(KEY_CONTENT, "我的豆瓣主页"); map.put(KEY_TYPE, TYPE_COMMON); data.add(map); // map = new HashMap<String, Object>(); // map.put(KEY_ID, 2); // map.put(KEY_CONTENT, "意见反馈"); // map.put(KEY_TYPE, TYPE_COMMON); // data.add(map); map = new HashMap<String, Object>(); map.put(KEY_ID, 3); map.put(KEY_CONTENT, "声明"); map.put(KEY_TYPE, TYPE_COMMON); data.add(map); } /** * 设置声明数据源 * */ private void setDeclareDataSource() { data.clear(); HashMap<String, Object> map; map = new HashMap<String, Object>(); map.put(KEY_ID, 4); map.put(KEY_CONTENT, "本应用非豆瓣出品。\n本人保留所有权利。"); map.put(KEY_TYPE, TYPE_DECLARE_RIGHT); data.add(map); map = new HashMap<String, Object>(); map.put(KEY_ID, 5); map.put(KEY_CONTENT, "感谢使用的开源项目:\nJackWharton--ActionBarSherlock\nchrisbanes--AndroidPullToRefresh\nloopj--AndroidAsyncHttp\nnostra13--UniversalImageLoader"); map.put(KEY_TYPE, TYPE_DECLARE_OPEN_SOURCE); data.add(map); } /** * 打开我的网站或者评价我的应用程序 * * */ private void openMyDoubanWebsiteOrEvaluateMyApp(String url) { // Uri uri = Uri.parse(url); // Intent intent = new Intent(Intent.ACTION_VIEW, uri); // startActivity(intent); Intent intent = new Intent(this, WebViewActivity.class); intent.putExtra(WebViewActivity.KEY_TITLE, "我的豆瓣主页"); intent.putExtra(WebViewActivity.KEY_URL, url); startActivity(intent); } class AboutAdapter extends BaseCompatableAdapter<HashMap<String, Object>> { public AboutAdapter(Context context, ArrayList<HashMap<String, Object>> data) { super(context, data); } class ViewHolder { TextView tvContent; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { viewHolder = new ViewHolder(); convertView = super.layoutInflater.inflate(R.layout.list_item_about, parent, false); viewHolder.tvContent = (TextView) convertView.findViewById(R.id.tv_content); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } HashMap<String, Object> map = super.data.get(position); viewHolder.tvContent.setText(map.get(KEY_CONTENT).toString()); if (map.get(KEY_TYPE).equals(TYPE_COMMON)) { viewHolder.tvContent.setGravity(Gravity.LEFT); viewHolder.tvContent.setPadding(8, 6, 7, 6); viewHolder.tvContent.setGravity(Gravity.CENTER); viewHolder.tvContent.setTextColor(Color.WHITE); viewHolder.tvContent.setTextSize(16); } else if (map.get(KEY_TYPE).equals(TYPE_DECLARE_RIGHT)) { viewHolder.tvContent.setGravity(Gravity.LEFT); viewHolder.tvContent.setPadding(0, 8, 0, 8); viewHolder.tvContent.setGravity(Gravity.CENTER); viewHolder.tvContent.setTextColor(Color.WHITE); viewHolder.tvContent.setTextSize(16); } else if (map.get(KEY_TYPE).equals(TYPE_DECLARE_OPEN_SOURCE)) { viewHolder.tvContent.setGravity(Gravity.LEFT); viewHolder.tvContent.setPadding(0, 8, 0, 8); viewHolder.tvContent.setGravity(Gravity.CENTER); viewHolder.tvContent.setTextColor(Color.GRAY); viewHolder.tvContent.setTextSize(14); } return convertView; } } }