package com.pan.simplepicture.activity; import in.srain.cube.image.ImageLoader; import in.srain.cube.image.ImageLoaderFactory; import in.srain.cube.image.impl.DefaultImageLoadHandler; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Random; import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; import android.content.res.ColorStateList; import android.content.res.Resources; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Process; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.pan.simplepicture.ConstantValue; import com.pan.simplepicture.R; import com.pan.simplepicture.manager.SystemBarTintManager; import com.pan.simplepicture.manager.SystemBarTintManager.SystemBarConfig; import com.pan.simplepicture.utils.MD5Utils; import com.pan.simplepicture.widget.LoadingPage; import com.pan.simplepicture.widget.LoadingPage.LoadResult; import com.umeng.analytics.MobclickAgent; public class BaseActivity extends ActionBarActivity { /** UI 线程ID */ private long mUIThreadId; private LayoutInflater mInflater; protected ActionBar mActionBar; public HashMap<String, String> map = new HashMap<String, String>(); protected Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { onHandleMessage(msg); } }; /** 记录处于前台的Activity */ private static BaseActivity mForegroundActivity = null; /** 记录所有活动的Activity */ private static final List<BaseActivity> mActivities = new LinkedList<BaseActivity>(); /** * 加载图片 */ public ImageLoader imageLoader; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (DEBUG) { showStatus("onCreate"); } /* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { setTranslucentStatus(true); SystemBarTintManager tintManager = new SystemBarTintManager(this); tintManager.setStatusBarTintEnabled(true); tintManager.setStatusBarTintResource(R.color.actionbar_color); }*/ initInfo(); init(); initView(); initActionBar(); } /*@TargetApi(19) private void setTranslucentStatus(boolean on) { Window win = getWindow(); WindowManager.LayoutParams winParams = win.getAttributes(); final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; if (on) { winParams.flags |= bits; } else { winParams.flags &= ~bits; } win.setAttributes(winParams); }*/ @Override public void onBackPressed() { super.onBackPressed(); out2Left(); } protected void initInfo() { mActivities.add(this); mUIThreadId = android.os.Process.myTid(); // 初始化请求参数 map.put("deviceModel", Build.MODEL.replace(" ", "+")); map.put("plamformVersion", Build.VERSION.RELEASE); map.put("deviceName", Build.MANUFACTURER); map.put("plamform", "Android"); map.put("imieId", MD5Utils.MD5(ConstantValue.str + ConstantValue.str)); // 加载图片 imageLoader = ImageLoaderFactory.create(this); DefaultImageLoadHandler handler = new DefaultImageLoadHandler(this); handler.setLoadingImageColor(getStrColor()); handler.setImageFadeIn(true); handler.setImageRounded(false, 0); imageLoader.setImageLoadHandler(handler); } @Override protected void onDestroy() { mActivities.remove(this); if (DEBUG) { showStatus("onDestroy"); } super.onDestroy(); } protected void initActionBar() { mActionBar = getSupportActionBar(); setActionBarTitle(); int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android"); TextView actTitle = (TextView) findViewById(titleId); actTitle.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); out2Left(); } }); actTitle.setTextColor(Color.WHITE); mActionBar.setHomeButtonEnabled(true); mActionBar.setIcon(android.R.color.transparent); mActionBar.setDisplayHomeAsUpEnabled(true); mActionBar.setDisplayShowHomeEnabled(true); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case (android.R.id.home): finish(); out2Left(); return true; default: return super.onOptionsItemSelected(item); } } protected void setActionBarTitle() { } protected void init() { } protected void initView() { LoadingPage page = new LoadingPage(this) { @Override public LoadResult load() { // TODO Auto-generated method stub return BaseActivity.this.load(); } @Override public View createLoadedView() { // TODO Auto-generated method stub return BaseActivity.this.createLoadedView(); } }; setContentView(page); page.show(); } protected View createLoadedView() { // TODO Auto-generated method stub return null; } protected LoadResult load() { // TODO Auto-generated method stub return null; } /** 由子类实现如何处理事件 */ protected void onHandleMessage(Message msg) { } @Override protected void onNewIntent(Intent intent) { mUIThreadId = android.os.Process.myTid(); super.onNewIntent(intent); } @Override protected void onResume() { mForegroundActivity = this; if (DEBUG) { showStatus("onResume"); } MobclickAgent.onPageStart(this.getClass().getSimpleName()); MobclickAgent.onResume(this); super.onResume(); } @Override protected void onPause() { mForegroundActivity = null; if (DEBUG) { showStatus("onPause"); } MobclickAgent.onPageEnd(this.getClass().getSimpleName()); MobclickAgent.onPause(this); super.onPause(); } /** * 获取UI线程ID * * @return UI线程ID */ public long getUIThreadId() { return mUIThreadId; } public Context getThemeContext() { return this; } public boolean post(Runnable run) { return mHandler.post(run); } public boolean postDelayed(Runnable run, long delay) { return mHandler.postDelayed(run, delay); } public void removeCallbacks(Runnable run) { mHandler.removeCallbacks(run); } public View inflate(int resId) { if (null == mInflater) { mInflater = LayoutInflater.from(getThemeContext()); } return mInflater.inflate(resId, null); } public String[] getStringArray(int resId) { return getThemeContext().getResources().getStringArray(resId); } public int getDimen(int resId) { return getThemeContext().getResources().getDimensionPixelSize(resId); } public int getColor(int resId) { return getThemeContext().getResources().getColor(resId); } public ColorStateList getColorStateList(int resId) { return getThemeContext().getResources().getColorStateList(resId); } public Drawable getDrawable(int resId) { return getThemeContext().getResources().getDrawable(resId); } /** dip转换px */ public int dip2px(int dip) { final float scale = getResources().getDisplayMetrics().density; return (int) (dip * scale + 0.5f); } /** pxz转换dip */ public int px2dip(int px) { final float scale = getResources().getDisplayMetrics().density; return (int) (px / scale + 0.5f); } /** 对toast的简易封装。线程安全,可以在非UI线程调用。 */ public void showToastSafe(final int resId, final int duration) { if (Process.myTid() == mUIThreadId) { // 调用在UI线程 Toast.makeText(getBaseContext(), resId, duration).show(); } else { // 调用在非UI线程 post(new Runnable() { @Override public void run() { Toast.makeText(getBaseContext(), resId, duration).show(); } }); } } public void out2Left() { overridePendingTransition(R.anim.new_dync_no, R.anim.new_dync_out_to_left); } public void int4Right() { overridePendingTransition(R.anim.new_dync_in_from_right, R.anim.new_dync_no); } /** 对toast的简易封装。线程安全,可以在非UI线程调用。 */ public void showToastSafe(final CharSequence text, final int duration) { if (Process.myTid() == mUIThreadId) { // 调用在UI线程 Toast.makeText(getBaseContext(), text, duration).show(); } else { // 调用在非UI线程 post(new Runnable() { @Override public void run() { Toast.makeText(getBaseContext(), text, duration).show(); } }); } } private static final boolean DEBUG = false; @Override protected void onRestart() { super.onRestart(); if (DEBUG) { showStatus("onRestart"); } } @Override protected void onStop() { super.onStop(); if (DEBUG) { showStatus("onStop"); } } private void showStatus(String status) { final String[] className = ((Object) this).getClass().getName() .split("\\."); Log.i("生命周期", String.format("%s------------%s", className[className.length - 1], status)); } public String getStrColor() { Random random = new Random(); int index = random.nextInt(resColors.length); return resColors[index]; } public void setRandomColor() { ((DefaultImageLoadHandler) imageLoader.getImageLoadHandler()) .setLoadingImageColor(getStrColor()); } private String resColors[] = { "#FFFBBF58", "#FFFF7342", "#FFF56773", "#FFE898BF", "#FF695B8E", "#FF13B7D2", "#FF2AB081", "#FF2D72D9", "#FFD94130", "#FF1ABC9C", "#FFBC5357" }; public void showToast(boolean flag, String msg) { Toast toast = Toast.makeText(this, "自定义", 0); toast.setGravity(Gravity.CENTER, 0, 0); View view = View.inflate(this, R.layout.customer_toast, null); ImageView iv_icon = (ImageView) view.findViewById(R.id.iv_icon); if (flag) { iv_icon.setImageResource(R.drawable.icon_toast_game_ok); } else { iv_icon.setImageResource(R.drawable.icon_toast_game_error); } TextView tv_des = (TextView) view.findViewById(R.id.tv_des); tv_des.setText(msg); toast.setView(view); toast.show(); } }