package com.youzi.zhidu; import java.io.File; import java.util.Timer; import java.util.TimerTask; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.ActionBar; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Configuration; import android.graphics.Bitmap; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Environment; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.util.DisplayMetrics; import android.util.Log; import android.view.KeyEvent; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.WindowManager; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.animation.LinearInterpolator; import android.view.animation.TranslateAnimation; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import com.google.gson.JsonObject; import com.koushikdutta.async.future.FutureCallback; import com.koushikdutta.ion.Ion; import com.sina.weibo.sdk.auth.Oauth2AccessToken; import com.sina.weibo.sdk.auth.WeiboAuth; import com.sina.weibo.sdk.auth.WeiboAuthListener; import com.sina.weibo.sdk.auth.sso.SsoHandler; import com.sina.weibo.sdk.exception.WeiboException; import com.sina.weibo.sdk.net.RequestListener; import com.umeng.analytics.MobclickAgent; import com.youzi.zhidu.activity.FeedBackActivity; import com.youzi.zhidu.activity.SettingActivity; import com.youzi.zhidu.cache.ACache; import com.youzi.zhidu.commont.DoubleClickExitHelper; import com.youzi.zhidu.dialog.SweetAlertDialog; import com.youzi.zhidu.fragment.AppTuiFragment; import com.youzi.zhidu.fragment.EveryDayEnglishFragment; import com.youzi.zhidu.fragment.HomeFragment; import com.youzi.zhidu.fragment.OtherFragment; import com.youzi.zhidu.lib.ActionBarDrawerToggle; import com.youzi.zhidu.lib.DrawerArrowDrawable; import com.youzi.zhidu.lib.RoundedImageView; import com.youzi.zhidu.lib.StringUtil; import com.youzi.zhidu.lib.toast.Crouton; import com.youzi.zhidu.lib.toast.Style; import com.youzi.zhidu.lib.weibo.User; import com.youzi.zhidu.lib.weibo.UsersAPI; import com.youzi.zhidu.service.AppUpdateService; public class MainActivity extends FragmentActivity { private DoubleClickExitHelper mDoubleClickExitHelper; private TranslateAnimation myAnimation_Left; private DrawerLayout mDrawerLayout; private ListView mDrawerList; RelativeLayout rl; private ActionBarDrawerToggle mDrawerToggle; private DrawerArrowDrawable drawerArrow; public static FragmentManager fm; private long exitTime = 0; Boolean openOrClose = false; int vc;// ��ȡ��ǰ�汾�� ACache mCache; RoundedImageView iv_main_left_head; TextView user_name; RelativeLayout toprl; ImageView login_tv; LinearLayout animll_id; private WeiboAuth mWeiboAuth; private SsoHandler mSsoHandler; private boolean isLogin = false; // ��ʱ������� private Timer mTimer; private TimerTask mTimerTask; protected static final int UPDATE_TEXT = 0; private Handler mHandler; File sdcardDir; String path; File f; File[] fl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 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); mCache = ACache.get(this); mDoubleClickExitHelper = new DoubleClickExitHelper(this); toprl = (RelativeLayout) findViewById(R.id.toprl); animll_id = (LinearLayout) findViewById(R.id.animll_id); login_tv = (ImageView) findViewById(R.id.login_tv); user_name = (TextView) findViewById(R.id.user_name); iv_main_left_head = (RoundedImageView) findViewById(R.id.iv_main_left_head); // Animation operatingAnim = AnimationUtils // .loadAnimation(this, R.anim.tip); // LinearInterpolator lin = new LinearInterpolator(); // operatingAnim.setInterpolator(lin); // if (operatingAnim != null) { // iv_main_left_head.startAnimation(operatingAnim); // } createSDCardDir(); vc = getVersionCode(this); chekedVersionCode(); MobclickAgent.updateOnlineConfig(this); ActionBar ab = getActionBar(); ab.setDisplayHomeAsUpEnabled(true); ab.setHomeButtonEnabled(true); init(); fm = this.getSupportFragmentManager(); rl = (RelativeLayout) findViewById(R.id.rl); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.navdrawer); drawerArrow = new DrawerArrowDrawable(this) { @Override public boolean isLayoutRtl() { return false; } }; mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, drawerArrow, R.string.drawer_open, R.string.drawer_close) { public void onDrawerClosed(View view) { super.onDrawerClosed(view); invalidateOptionsMenu(); openOrClose = false; } public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); invalidateOptionsMenu(); openOrClose = true; } }; mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerToggle.syncState(); String[] values = new String[] { "ÿ��һ��", "��ѡ����", "������Ƭ", "�Ƽ�Ӧ��" }; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.item_text, values); mDrawerList.setAdapter(adapter); mDrawerList .setOnItemClickListener(new AdapterView.OnItemClickListener() { @SuppressLint({ "ResourceAsColor", "Recycle" }) @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch (position) { case 0: initFragment(new EveryDayEnglishFragment()); setTitle("ÿ��һ��"); break; case 1: initFragment(new OtherFragment()); setTitle("��ѡ����"); break; case 2: initFragment(new HomeFragment()); setTitle("������Ƭ"); break; case 3: initFragment(new AppTuiFragment()); setTitle("�Ƽ�Ӧ��"); break; } mDrawerLayout.closeDrawers(); openOrClose = false; } }); toprl.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (isLogin == true) { Intent it = new Intent(getApplicationContext(), SettingActivity.class); startActivityForResult(it, 1); // overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out); overridePendingTransition(R.anim.zoomin, R.anim.zoomout); } else { sinaLogin(); } } }); clearCache(); } @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); } private void clearCache() { sdcardDir = Environment.getExternalStorageDirectory(); path = sdcardDir.getPath() + "/zhidu"; f = new File(path); fl = f.listFiles(); Log.e("fl.length==", fl.length + ""); if (fl.length == 0) { } else { for (int i = 0; i < fl.length; i++) { if (fl[i].toString().endsWith(".mp3") || fl[i].toString().endsWith(".MP3")) { fl[i].delete(); } } } } /** * ��ʾShortToast */ public void showCustomToast(String pMsg, int view_position) { Crouton.makeText(this, pMsg, Style.CONFIRM, view_position).show(); } public void onClickFeedBack(View v) { Intent it = new Intent(this, FeedBackActivity.class); startActivity(it); } public void onClickSetting(View v) { Intent it = new Intent(this, SettingActivity.class); startActivity(it); } /** * ��ȡ�汾�� * * @param context * @return */ private int getVersionCode(Context context) { int versionCode = 0; try { // ��ȡ����汾�� versionCode = context.getPackageManager().getPackageInfo( "com.youzi.zhidu", 1).versionCode; } catch (NameNotFoundException e) { e.printStackTrace(); } return versionCode; } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); MobclickAgent.onResume(this); // ͳ��ʱ�� String avatar = mCache.getAsString("avatar"); String name = mCache.getAsString("name"); try { if (avatar.equals("")) { login_tv.setVisibility(View.VISIBLE); // login_tv.setText("��¼"); } else { isLogin = true; login_tv.setVisibility(View.GONE); Ion.with(MainActivity.this).load(avatar).asBitmap() .setCallback(new FutureCallback<Bitmap>() { @Override public void onCompleted(Exception e, Bitmap bitmap) { // ivHead.setImageBitmap(bitmap); iv_main_left_head.setImageBitmap(bitmap); } }); } if (!name.equals("")) { isLogin = true; user_name.setText(name); // login_tv.setText(""); login_tv.setVisibility(View.GONE); } else { // login_tv.setText("��¼"); login_tv.setVisibility(View.VISIBLE); } } catch (Exception e) { // TODO: handle exception } } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); MobclickAgent.onPause(this); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { if (mDrawerLayout.isDrawerOpen(rl)) { mDrawerLayout.closeDrawer(rl); openOrClose = false; } else { mDrawerLayout.openDrawer(rl); openOrClose = true; } } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } private void init() { fm = getSupportFragmentManager(); // ֻ����������Ҫ������Fragment�ʬF initFragment(new EveryDayEnglishFragment()); } // �ГQFragment public void changeFragment(Fragment f) { changeFragment(f, false); } // ��ʼ��Fragment(FragmentActivity�к���) public void initFragment(Fragment f) { changeFragment(f, true); } private void changeFragment(Fragment f, boolean init) { FragmentTransaction ft = fm.beginTransaction().setCustomAnimations( R.anim.umeng_fb_slide_in_from_left, R.anim.umeng_fb_slide_out_from_left, R.anim.umeng_fb_slide_in_from_right, R.anim.umeng_fb_slide_out_from_right); ; ft.replace(R.id.fragment_layout, f); if (!init) ft.addToBackStack(null); ft.commitAllowingStateLoss(); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); // OffersManager.getInstance(MainActivity.this).onAppExit(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if (openOrClose == false) { showCustomToast(getString(R.string.back_exit_tips), R.id.fragment_layout); return mDoubleClickExitHelper.onKeyDown(keyCode, event); } else { mDrawerLayout.closeDrawers(); } return true; } return super.onKeyDown(keyCode, event); } public void createSDCardDir() { if (Environment.MEDIA_MOUNTED.equals(Environment .getExternalStorageState())) { // ����һ���ļ��ж��󣬸�ֵΪ�ⲿ�洢����Ŀ¼ File sdcardDir = Environment.getExternalStorageDirectory(); // �õ�һ��·����������sdcard���ļ���·�������� String path = sdcardDir.getPath() + "/zhidu"; File path1 = new File(path); if (!path1.exists()) { // �������ڣ�����Ŀ¼��������Ӧ��������ʱ�򴴽� path1.mkdirs(); System.out.println("paht ok,path:" + path); } } else { System.out.println("false"); return; } } // TODO �Ƿ�汾���� public void chekedVersionCode() { Ion.with(this, Conf.VERSION_CODE).asJsonObject() .setCallback(new FutureCallback<JsonObject>() { @Override public void onCompleted(Exception e, JsonObject result) { if (e != null) { return; } String code = result.get("code").getAsString(); int jsonCode = Integer.parseInt(code); // �ȽϿ�Դ�й����ص�code����ǰ�汾code�Ƿ�һ�� if (jsonCode == vc) { return; } else if (jsonCode > vc) { CountDownTimer timer = new CountDownTimer(12 * 100, 100) { @Override public void onTick(long millisUntilFinished) { long a = millisUntilFinished / 100; if (a == 1) { new SweetAlertDialog(MainActivity.this, SweetAlertDialog.WARNING_TYPE) .setTitleText("�汾���") .setContentText("�����°汾���Ƿ���£�") .setCancelText("�ݲ�����") .setConfirmText("���ϸ���") .showCancelButton(true) .setCancelClickListener( new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick( SweetAlertDialog sDialog) { sDialog.dismiss(); } }) .setConfirmClickListener( new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick( SweetAlertDialog sDialog) { Intent updateIntent = new Intent( MainActivity.this, AppUpdateService.class); updateIntent .putExtra( "titleId", R.string.app_name); startService(updateIntent); sDialog.dismiss(); } }).show(); } else { } } @Override public void onFinish() { } }; timer.start(); } } }); } public PendingIntent getDefalutIntent(int flags) { PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, new Intent(), flags); return pendingIntent; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (mSsoHandler != null) { mSsoHandler.authorizeCallBack(requestCode, resultCode, data); } try { String result = data.getExtras().getString("result");// �õ���Activity // �رպ󷵻ص����� if (result.equals("exit")) { isLogin = false; // login_tv.setText("��¼"); login_tv.setVisibility(View.VISIBLE); user_name.setText(""); iv_main_left_head.setVisibility(View.GONE); } } catch (Exception e) { // TODO: handle exception } } private void sinaLogin() { mWeiboAuth = new WeiboAuth(MainActivity.this, Conf.SINA_APP_KEY, Conf.WEIBO_URL, "all"); mSsoHandler = new SsoHandler(MainActivity.this, mWeiboAuth); mSsoHandler.authorize(new AuthListener()); } class AuthListener implements WeiboAuthListener { @Override public void onCancel() { } @Override public void onComplete(Bundle values) { Oauth2AccessToken accessToken = Oauth2AccessToken .parseAccessToken(values); updateSinaUserInfo(accessToken); } @Override public void onWeiboException(WeiboException e) { e.printStackTrace(); } } private void updateSinaUserInfo(Oauth2AccessToken accessToken) { UsersAPI mUsersAPI = new UsersAPI(accessToken); long uid = Long.parseLong(accessToken.getUid()); // String openid = String.valueOf(uid); RequestListener mlistener = new RequestListener() { @Override public void onWeiboException(WeiboException e) { e.printStackTrace(); } @Override public void onComplete(String response) { if (!StringUtil.isEmpty(response)) { User user = User.parse(response); myAnimation(); addAnimation(); isLogin = true; mCache.put("avatar", user.avatar_large); mCache.put("name", user.name); user_name.setText(user.name); // login_tv.setText(""); login_tv.setVisibility(View.GONE); iv_main_left_head.setVisibility(View.VISIBLE); Ion.with(MainActivity.this).load(user.avatar_large) .asBitmap() .setCallback(new FutureCallback<Bitmap>() { @Override public void onCompleted(Exception e, Bitmap bitmap) { iv_main_left_head.setImageBitmap(bitmap); } }); } } }; mUsersAPI.show(uid, mlistener); } // �������� private void addAnimation() { // login_tv.startAnimation(myAnimation_Left); animll_id.startAnimation(myAnimation_Left); } // �������� private void myAnimation() { DisplayMetrics displayMetrics = new DisplayMetrics(); displayMetrics = this.getResources().getDisplayMetrics(); // �����Ļ��� int screenWidth = displayMetrics.widthPixels; myAnimation_Left = new TranslateAnimation(-screenWidth, 0, 0, 0); myAnimation_Left.setDuration(1800); } }