package com.ljp.laucher; import java.io.File; import java.util.ArrayList; import java.util.List; import weibo4android.Weibo; import weibo4android.WeiboException; import weibo4android.http.AccessToken; import weibo4android.http.RequestToken; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Vibrator; import android.preference.PreferenceManager; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.animation.TranslateAnimation; import android.widget.AdapterView; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.feedback.NotificationType; import com.feedback.UMFeedbackService; import com.ljp.laucher.additem.AddItemActivity; import com.ljp.laucher.database.LaucherDataBase; import com.ljp.laucher.databean.ContentItem; import com.ljp.laucher.itemcontent.WeiboDetailActivity; import com.ljp.laucher.myanimations.MyAnimations; import com.ljp.laucher.myview.DragGridView; import com.ljp.laucher.myview.ScrollLayout; import com.ljp.laucher.path.AboutActivity; import com.ljp.laucher.path.FeedbackActivity; import com.ljp.laucher.path.HelpActivity; import com.ljp.laucher.path.SetActivity; import com.ljp.laucher.usercenter.UserCenterActivity; import com.ljp.laucher.usercenter.UserLoginActivity; import com.ljp.laucher.usercenter.UserWeiboActivity; import com.ljp.laucher.util.Configure; import com.ljp.laucher.util.FileOperation; import com.ljp.laucher.util.OAuthConstantBean; import com.mobclick.android.MobclickAgent; import com.mobclick.android.ReportPolicy; import com.mobclick.android.UmengConstants; public class MiLaucherActivity extends Activity { LaucherDataBase database = new LaucherDataBase(MiLaucherActivity.this); private boolean areButtonsShowing; private RelativeLayout composerButtonsWrapper; private ImageView composerButtonsShowHideButtonIcon; private RelativeLayout composerButtonsShowHideButton; ContentItem map_none = new ContentItem(); ContentItem map_null = new ContentItem(); ArrayList<ContentItem> addDate = new ArrayList<ContentItem>();// 每一页的数据 /** GridView. */ private ScrollLayout lst_views; TextView tv_page;// int oldPage=1; private ImageView runImage, delImage; float bitmap_width, bitmap_height; LinearLayout.LayoutParams param; TranslateAnimation left, right; Animation up, down; public static final int PAGE_SIZE = 8;public int PAGE_COUNT = 2, PAGE_CURRENT=0;; ArrayList<DragGridView> gridviews = new ArrayList<DragGridView>(); ArrayList<ArrayList<ContentItem>> lists = new ArrayList<ArrayList<ContentItem>>();// 全部数据的集合集lists.size()==countpage; ArrayList<ContentItem> lstDate = new ArrayList<ContentItem>();// 每一页的数据 ContentItem map; SensorManager sm;SensorEventListener lsn; boolean isClean = false;Vibrator vibrator;int rockCount = 0; int addPosition=0,addPage=0; ImageButton btn_skin;SharedPreferences sp_skin; BroadcastReceiver setpositionreceiver;IntentFilter setPositionFilter;boolean finishCount=false; Class<?>[] classes ={AboutActivity.class,UserCenterActivity.class,SetActivity.class,HelpActivity.class,FeedbackActivity.class}; ProgressDialog progressDialog; //0227更新壁纸切换: BroadcastReceiver setbgreceiver;IntentFilter setbgFilter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_milaucher); MobclickAgent.setDebugMode(true); MobclickAgent.setSessionContinueMillis(1000); MobclickAgent.onError(this); MobclickAgent.setAutoLocation(false); UmengConstants.enableCacheInUpdate = false; UMFeedbackService.enableNewReplyNotification(this, NotificationType.AlertDialog); MobclickAgent.setUpdateOnlyWifi(false); MobclickAgent.update(this, 1000 * 60 * 60 * 24);// daily MobclickAgent .setDefaultReportPolicy(this, ReportPolicy.BATCH_AT_LAUNCH); MobclickAgent.updateOnlineConfig(this); database.open(); lstDate = database.getLauncher(); addDate = lstDate; database.close(); map_none.setText("none"); map_null.setText(null); if(lstDate.size()==0) Toast.makeText(MiLaucherActivity.this, "网络有点不给力哦", 2200).show(); init(); initData(); initPath(); initBroadCast();initBgBroadCast(); for (int i = 0; i < Configure.countPages; i++) { lst_views.addView(addGridView(i)); } lst_views.setPageListener(new ScrollLayout.PageListener() { @Override public void page(int page) { setCurPage(page); } }); runImage = (ImageView) findViewById(R.id.run_image); setImageBgAndRun(); delImage = (ImageView) findViewById(R.id.dels); vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); lsn = new SensorEventListener() { public void onSensorChanged(SensorEvent e) { if (e.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { if (!isClean && rockCount >= 7) { isClean = true; rockCount = 0; vibrator.vibrate(100); CleanItems(); return; } float newX = e.values[SensorManager.DATA_X]; float newY = e.values[SensorManager.DATA_Y]; float newZ = e.values[SensorManager.DATA_Z]; // if ((newX >= 18 || newY >= 20||newZ >= 20 )&&rockCount<4) // { if ((newX >= 16 || newY >= 18 || newZ >= 18) && rockCount % 2 == 0) { rockCount++; return; } if ((newX <= -16 || newY <= -18 || newZ <= -18) && rockCount % 2 == 1) { rockCount++; return; } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } }; sm.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME); } public void init() { // relate = (RelativeLayout) findViewById(R.id.relate); lst_views = (ScrollLayout) findViewById(R.id.views); tv_page = (TextView) findViewById(R.id.tv_page); tv_page.setText("1"); Configure.inits(MiLaucherActivity.this); param = new LinearLayout.LayoutParams( android.view.ViewGroup.LayoutParams.FILL_PARENT, android.view.ViewGroup.LayoutParams.FILL_PARENT); param.rightMargin = 100; param.leftMargin = 20; } public void initData() { Configure.countPages = (int) Math.ceil(lstDate.size() / (float) PAGE_SIZE); if(Configure.countPages==0) return; lists = new ArrayList<ArrayList<ContentItem>>(); for (int i = 0; i < Configure.countPages; i++) { lists.add(new ArrayList<ContentItem>()); for (int j = PAGE_SIZE * i; j < (PAGE_SIZE * (i + 1) > lstDate .size() ? lstDate.size() : PAGE_SIZE * (i + 1)); j++) lists.get(i).add(lstDate.get(j)); } boolean isLast = true; for (int i = lists.get(Configure.countPages - 1).size(); i < PAGE_SIZE; i++) { if (isLast) { lists.get(Configure.countPages - 1).add(map_null); isLast = false; } else lists.get(Configure.countPages - 1).add(map_none); } } public void CleanItems() { lstDate = new ArrayList<ContentItem>(); for (int i = 0; i < lists.size(); i++) { for (int j = 0; j < lists.get(i).size(); j++) { if (lists.get(i).get(j).getText() != null && !lists.get(i).get(j).getText().equals("none")) { lstDate.add(lists.get(i).get(j)); } } } initData(); lst_views.removeAllViews(); gridviews = new ArrayList<DragGridView>(); for (int i = 0; i < Configure.countPages; i++) { lst_views.addView(addGridView(i)); } isClean = false; lst_views.snapToScreen(0); } public void resetNull(int position){ if (getFristNonePosition(lists.get(position)) > 0&& getFristNullPosition(lists.get(position)) < 0) { lists.get(position).set(getFristNonePosition(lists.get(position)),map_null); } if (getFristNonePosition(lists.get(position)) < 0&& getFristNullPosition(lists.get(position)) < 0) { if (position == Configure.countPages - 1 || (getFristNullPosition(lists.get(lists.size() - 1)) < 0 && getFristNonePosition(lists.get(lists.size() - 1)) < 0)) { lists.add(new ArrayList<ContentItem>()); lists.get(lists.size() - 1).add(map_null); for (int i = 1; i < PAGE_SIZE; i++) lists.get(lists.size() - 1).add(map_none); lst_views.addView(addGridView(Configure.countPages)); Configure.countPages++; } else if (getFristNonePosition(lists.get(lists.size() - 1)) > 0 && getFristNullPosition(lists.get(lists.size() - 1)) < 0) { lists.get(lists.size() - 1).set(getFristNonePosition(lists.get(lists.size() - 1)),map_null); ((DragGridAdapter) ((gridviews.get(lists.size() - 1)).getAdapter())).notifyDataSetChanged(); } } } public int getFristNonePosition(ArrayList<ContentItem> array) { for (int i = 0; i < array.size(); i++) { if (array.get(i) != null && array.get(i).getText() != null && array.get(i).getText().equals("none")) { return i; } } return -1; } public int getFristNullPosition(ArrayList<ContentItem> array) { for (int i = 0; i < array.size(); i++) { if (array.get(i) != null && array.get(i).getText() == null) { return i; } } return -1; } public LinearLayout addGridView(int i) { // if (lists.get(i).size() < PAGE_SIZE) // lists.get(i).add(null); LinearLayout linear = new LinearLayout(MiLaucherActivity.this); DragGridView gridView = new DragGridView(MiLaucherActivity.this); gridView.setAdapter(new DragGridAdapter(MiLaucherActivity.this,gridView, lists .get(i))); gridView.setNumColumns(2); gridView.setHorizontalSpacing(0); gridView.setVerticalSpacing(0); final int ii = i; gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, final int arg2, long arg3) { // TODO Auto-generated method stub String text = lists.get(ii).get(arg2).getText(); Intent intent = new Intent(); if(text != null && text.equals("none")){ return; }else if (text == null) { addPage = ii;addPosition = arg2; intent.setClass(MiLaucherActivity.this, AddItemActivity.class); }else if(text.equals("我的微博")){ if(Configure.N_USER_NAME==null || Configure.N_USER_NAME.equals("")){ intentToLogin(); return; }else{ intent.setClass(MiLaucherActivity.this,UserWeiboActivity.class); } }else{ intent.setClass(MiLaucherActivity.this, WeiboDetailActivity.class); intent.putExtra("username", lists.get(ii).get(arg2).getText()); } startActivity(intent); overridePendingTransition(R.anim.anim_fromright_toup6, R.anim.anim_down_toleft6); } }); gridView.setSelector(R.drawable.selector_null); gridView.setPageListener(new DragGridView.G_PageListener() { @Override public void page(int cases, int page) { switch (cases) { case 0:// 滑动页面 lst_views.snapToScreen(page); setCurPage(page); new Handler().postDelayed(new Runnable() { @Override public void run() { Configure.isChangingPage = false; } }, 800); break; case 1:// 删除按钮上来 delImage.setBackgroundResource(R.drawable.del); delImage.setVisibility(0); delImage.startAnimation(up); break; case 2:// 删除按钮变深 delImage.setBackgroundResource(R.drawable.del_check); Configure.isDelDark = true; break; case 3:// 删除按钮变淡 delImage.setBackgroundResource(R.drawable.del); Configure.isDelDark = false; break; case 4:// 删除按钮下去 delImage.startAnimation(down); break; case 5:// 松手动作 delImage.startAnimation(down); lists.get(Configure.curentPage).add(Configure.removeItem, map_null); lists.get(Configure.curentPage).remove( Configure.removeItem + 1); ((DragGridAdapter) ((gridviews.get(Configure.curentPage)) .getAdapter())).notifyDataSetChanged(); break; } } }); gridView.setOnItemChangeListener(new DragGridView.G_ItemChangeListener() { @Override public void change(int from, int to, int count) { ContentItem toString = (ContentItem) lists.get( Configure.curentPage - count).get(from); lists.get(Configure.curentPage - count).add(from, (ContentItem) lists.get(Configure.curentPage).get(to)); lists.get(Configure.curentPage - count).remove(from + 1); lists.get(Configure.curentPage).add(to, toString); lists.get(Configure.curentPage).remove(to + 1); ((DragGridAdapter) ((gridviews .get(Configure.curentPage - count)).getAdapter())) .notifyDataSetChanged(); ((DragGridAdapter) ((gridviews.get(Configure.curentPage)) .getAdapter())).notifyDataSetChanged(); } }); gridviews.add(gridView); linear.addView(gridView, param); return linear; } public void initBgBroadCast(){ setbgreceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub setImageBgAndRun(); } }; setbgFilter = new IntentFilter( "intentToBgChange"); registerReceiver(setbgreceiver, setbgFilter); } public void runAnimation() { down = AnimationUtils.loadAnimation(MiLaucherActivity.this, R.anim.griditem_del_down); up = AnimationUtils .loadAnimation(MiLaucherActivity.this, R.anim.griditem_del_up); down.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation arg0) { // TODO Auto-generated method stub delImage.setVisibility(8); } }); right = new TranslateAnimation(Animation.ABSOLUTE, 0f, Animation.ABSOLUTE, -bitmap_width + Configure.getScreenWidth(MiLaucherActivity.this), Animation.ABSOLUTE, 0f, Animation.ABSOLUTE, 0f); left = new TranslateAnimation(Animation.ABSOLUTE, -bitmap_width + Configure.getScreenWidth(MiLaucherActivity.this), Animation.ABSOLUTE, 0f, Animation.ABSOLUTE, 0f, Animation.ABSOLUTE, 0f); right.setDuration(25000); left.setDuration(25000); right.setFillAfter(true); left.setFillAfter(true); right.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { // TODO Auto-generated method stub runImage.startAnimation(left); } }); left.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { // TODO Auto-generated method stub runImage.startAnimation(right); } }); runImage.startAnimation(right); } public void setImageBgAndRun() { System.out.println(getSharedPreferences("mysetup", 0).getInt("bg_id", 0)+"=="); Bitmap bitmap = BitmapFactory.decodeStream(getResources() .openRawResource(Configure.images[getSharedPreferences("mysetup", 0).getInt("bg_id", 0)]), null, null); bitmap_width = bitmap.getWidth(); bitmap_height = bitmap.getHeight(); // if(bitmap_width<=screen_width || bitmap_height <=screen_height){ Matrix matrix = new Matrix(); float scaleW = (Configure.getScreenWidth(MiLaucherActivity.this) * 3 /2)/ bitmap_width;System.out.println(scaleW+"=="); float scaleH = Configure.getScreenHeight(MiLaucherActivity.this) / bitmap_height; matrix.postScale(scaleW, scaleH); bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); bitmap_width = bitmap.getWidth(); bitmap_height = bitmap.getHeight(); // } runImage.setImageBitmap(bitmap); runAnimation(); } public void setCurPage(final int page) { Animation a = MyAnimations.getScaleAnimation(1.0f, 0.0f, 1.0f, 1.0f, 300); a.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { // TODO Auto-generated method stub tv_page.setText((page + 1) + ""); tv_page.startAnimation(MyAnimations.getScaleAnimation(0.0f, 1.0f, 1.0f, 1.0f, 300)); } }); tv_page.startAnimation(a); } public void initPath() { MyAnimations.initOffset(MiLaucherActivity.this); btn_skin = (ImageButton) findViewById(R.id.composer_button_sleep); sp_skin = getSharedPreferences("skin", MODE_PRIVATE); btn_skin.setBackgroundResource(sp_skin.getBoolean("id", true)?R.drawable.composer_sleep:R.drawable.composer_sun); composerButtonsWrapper = (RelativeLayout) findViewById(R.id.composer_buttons_wrapper); composerButtonsShowHideButton = (RelativeLayout) findViewById(R.id.composer_buttons_show_hide_button); composerButtonsShowHideButtonIcon = (ImageView) findViewById(R.id.composer_buttons_show_hide_button_icon); // composerButtonsShowHideButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (!areButtonsShowing) { composerButtonsShowHideButtonIcon .startAnimation(MyAnimations.getRotateAnimation(0, -270,300)); MyAnimations.startAnimationsIn(composerButtonsWrapper, 300); } else { composerButtonsShowHideButtonIcon .startAnimation(MyAnimations.getRotateAnimation(-270,0, 300)); MyAnimations.startAnimationsOut(composerButtonsWrapper, 300); } areButtonsShowing = !areButtonsShowing; } }); for (int i = 0; i < composerButtonsWrapper.getChildCount(); i++) { final int position=i; composerButtonsWrapper.getChildAt(i).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub if(position==5){ sp_skin.edit().putBoolean("id", !sp_skin.getBoolean("id", true)).commit(); btn_skin.setBackgroundResource(sp_skin.getBoolean("id", true)?R.drawable.composer_sleep:R.drawable.composer_sun); Toast.makeText(MiLaucherActivity.this,!sp_skin.getBoolean("id", true)? "已开启夜间模式":"夜间模式已关闭", 3000).show(); }else{ Intent intent = new Intent(MiLaucherActivity.this, classes[position]); startActivity(intent); overridePendingTransition(R.anim.anim_fromright_toup6, R.anim.anim_down_toleft6); } } }); } composerButtonsShowHideButton .startAnimation(MyAnimations.getRotateAnimation(0,360,200)); } public void intentToLogin(){ progressDialog = ProgressDialog.show(MiLaucherActivity.this, "请稍等片刻...", "马上为您准备登录", true, true); new Thread() { public void run() { System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY); System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET); String authUrl =null; Weibo weibo = new Weibo(); RequestToken requestToken; try { requestToken = weibo .getOAuthRequestToken("life://UserCheckActivity"); OAuthConstantBean.getInstance() .setRequestToken(requestToken); authUrl = requestToken .getAuthenticationURL() + "&display=mobile"; } catch (WeiboException e) { e.printStackTrace(); } Message msg = loginHandler.obtainMessage(); msg.obj=authUrl; loginHandler.sendMessage(msg); } }.start(); } Handler loginHandler = new Handler() { public void handleMessage(Message msg) { progressDialog.dismiss(); Intent intent = new Intent(); Bundle bundle = new Bundle(); bundle.putString("url",(String) msg.obj); intent.putExtras(bundle); intent.setClass(MiLaucherActivity.this, UserLoginActivity.class); startActivity(intent); } }; @Override protected void onNewIntent(final Intent intent) { progressDialog = ProgressDialog.show(MiLaucherActivity.this, "请稍等片刻...", "授权验证中,马上为您跳转", true, true); new Thread() { public void run() { try { Uri uri = intent.getData(); if (uri == null) { return; } Weibo weibo = OAuthConstantBean.getInstance().getWeibo(); RequestToken requestToken = OAuthConstantBean.getInstance() .getRequestToken(); String nulls = uri.getQueryParameter("oauth_verifier"); if (nulls != null) { AccessToken accessToken = requestToken .getAccessToken(nulls); weibo.setToken(accessToken.getToken(), accessToken.getTokenSecret()); List<weibo4android.Status> statuses = null; statuses = weibo.getUserTimeline(); if (statuses.size() != 0) { SharedPreferences refreshtime = getSharedPreferences( "sp_users", 0); refreshtime.edit().putLong("UserId",accessToken.getUserId()).commit(); refreshtime.edit().putString("UserName",statuses.get(0).getUser().getName()).commit(); refreshtime.edit().putString("Token", accessToken.getToken()).commit(); refreshtime.edit().putString("TokenSecret",accessToken.getTokenSecret()).commit(); Configure.setUserWeibo(accessToken.getUserId(),statuses.get(0).getUser().getName(),accessToken.getToken(),accessToken.getTokenSecret()); } else { Toast.makeText(getApplicationContext(), "授权失败,请重试", Toast.LENGTH_LONG).show(); } } } catch (WeiboException e) { // TODO: handle exception e.printStackTrace(); } Message msg = ForwardHandler.obtainMessage(); ForwardHandler.sendMessage(msg); } }.start(); } Handler ForwardHandler = new Handler() { public void handleMessage(Message msg) { progressDialog.dismiss(); Intent intent = new Intent(); intent.setClass(MiLaucherActivity.this, UserWeiboActivity.class); startActivity(intent); } }; public void initBroadCast(){ setpositionreceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub final String str =intent.getStringExtra("text");boolean isExit=false; Configure.countPages = lists.size(); for (int i = 0; i < lists.size(); i++) { for(int j=0;j<lists.get(i).size();j++){ if(lists.get(i).get(j).getText()!=null && lists.get(i).get(j).getText().equals(str)){ isExit=true; lists.get(i).add(j,map_null); lists.get(i).remove(j + 1); ((DragGridAdapter) ((gridviews.get(i)).getAdapter())).notifyDataSetChanged(); } } } if(!isExit){ ContentItem item = new ContentItem(); item.setText(str); database.open(); item.setIcon(database.getItemsUrl(str)); database.close(); if(lists.get(addPage).get(addPosition).getText()==null){//当前add位置是否已占有 lists.get(addPage).set(addPosition, item); resetNull(lists.size() - 1); ((DragGridAdapter) ((gridviews.get(addPage)).getAdapter())).notifyDataSetChanged(); }else{ if(getFristNonePosition(lists.get(lists.size() - 1)) > 0){ lists.get(lists.size() - 1).set(getFristNonePosition(lists.get(lists.size() - 1)), item); resetNull(lists.size() - 1); ((DragGridAdapter) ((gridviews.get(gridviews.size()-1)).getAdapter())).notifyDataSetChanged(); }else if(getFristNullPosition(lists.get(lists.size() - 1)) > 0){ lists.get(lists.size() - 1).set(getFristNullPosition(lists.get(lists.size() - 1)), item); resetNull(lists.size() - 1); ((DragGridAdapter) ((gridviews.get(gridviews.size()-1)).getAdapter())).notifyDataSetChanged(); }else{//当前最后页面已经填满 lists.add(new ArrayList<ContentItem>()); lists.get(lists.size() - 1).add(item); for (int i = 1; i < PAGE_SIZE; i++) lists.get(lists.size() - 1).add(map_none); lst_views.addView(addGridView(Configure.countPages)); Configure.countPages++; } } } } }; setPositionFilter = new IntentFilter( "intentToAddLauncher"); registerReceiver(setpositionreceiver, setPositionFilter); } @Override public boolean dispatchKeyEvent(KeyEvent event) { // TODO Auto-generated method stub\ if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { if(finishCount){ if(lstDate.size()==0){ finish();return true; } progressDialog = ProgressDialog.show(MiLaucherActivity.this, "请稍等片刻...", "小夜正在努力的为您保存状态", true, true); new Thread(){ public void run(){ LaucherDataBase database = new LaucherDataBase(MiLaucherActivity.this); database.open(); database.deleteLauncher(); for (int i = 0; i < lists.size(); i++) { database.insertLauncher(lists.get(i)); } database.close(); SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(MiLaucherActivity.this); boolean isClearImage = settings.getBoolean("checkbox_clearimage", false); if(isClearImage){ File f = new File("/sdcard/night_girls/weibos"); FileOperation.deleteFile(f); f.delete(); } sm.unregisterListener(lsn); unregisterReceiver(setpositionreceiver);unregisterReceiver(setbgreceiver); if (!android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){ clear(MiLaucherActivity.this.getCacheDir()); } Message msg = finishHandler.obtainMessage(); finishHandler.sendMessage(msg); } }.start(); }else{ finishCount=true; Toast.makeText(MiLaucherActivity.this, "再按一次返回键退出", 2000).show(); new Handler().postDelayed(new Runnable() { @Override public void run() { finishCount=false; } },2000); } return true; } } return super.dispatchKeyEvent(event); } private Handler finishHandler = new Handler() { public void handleMessage(Message msg) { progressDialog.dismiss(); finish(); } }; @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); PAGE_COUNT=Configure.countPages;PAGE_CURRENT=Configure.curentPage; MobclickAgent.onPause(this); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Configure.countPages=PAGE_COUNT;Configure.curentPage=PAGE_CURRENT; } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); } public void clear(File cacheDir){ File[] files=cacheDir.listFiles(); for(File f:files) f.delete(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); MobclickAgent.onResume(this); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_BACK){ if(MobclickAgent.isDownloadingAPK()){ warningDialog(this); } } return super.onKeyDown(keyCode, event); } private void warningDialog(Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage("You are downloading apk, are you sure to exits ?"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub MiLaucherActivity.this.finish(); } }); builder.create(); builder.show(); } }