package com.swifty.fillcolor.controller.paint; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.drawable.ColorDrawable; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.Toast; import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import com.swifty.fillcolor.MyApplication; import com.swifty.fillcolor.R; import com.swifty.fillcolor.controller.BaseActivity; import com.swifty.fillcolor.factory.AnimateFactory; import com.swifty.fillcolor.factory.MyDialogFactory; import com.swifty.fillcolor.factory.SharedPreferencesFactory; import com.swifty.fillcolor.model.AsynImageLoader; import com.swifty.fillcolor.model.SaveImageAsyn; import com.swifty.fillcolor.util.FileUtils; import com.swifty.fillcolor.util.ImageSaveUtil; import com.swifty.fillcolor.util.L; import com.swifty.fillcolor.util.ShareImageUtil; import com.swifty.fillcolor.util.UmengUtil; import com.swifty.fillcolor.view.ColorPicker; import com.swifty.fillcolor.view.ImageButton_define; import com.swifty.fillcolor.view.ImageButton_define_secondLay; import com.swifty.fillcolor.view.ImageCheckBox_define; import com.swifty.fillcolor.view.MyProgressDialog; import com.swifty.fillcolor.view.OnCheckedChangeListener; import java.io.File; import uk.co.senab.photoview.ColourImageView; import uk.co.senab.photoview.OnDrawLineListener; import uk.co.senab.photoview.PhotoViewAttacher; public class PaintActivity extends BaseActivity implements View.OnClickListener { ColourImageView colourImageView; PhotoViewAttacher mAttacher; TableLayout tableLayout; ImageView currentColor, cColor1, cColor2, cColor3, cColor4; ColorPicker colorPickerSeekBar, largecolorpicker; ImageView advanceColor; ImageButton_define save, share, open, more, delete; ImageButton_define_secondLay undo, redo; ImageCheckBox_define pick, drawLine, jianbian_color; String URL; int PAINTNAME; LinearLayout advanceLay, largecolorpickerlay; private Bitmap cachedBitmap; private int isShowing = 2; private boolean fromSDcard = false; MyDialogFactory myDialogFactory; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //ActivityUtil.hideStatusBar(this); setContentView(R.layout.activity_paint); initViews(); addEvents(); if (getIntent().hasExtra(MyApplication.BIGPIC)) { fromSDcard = false; URL = getIntent().getExtras().getString(MyApplication.BIGPIC); loadLargeImage(); } else if (getIntent().hasExtra(MyApplication.BIGPICFROMUSER)) { fromSDcard = true; URL = getIntent().getExtras().getString(MyApplication.BIGPICFROMUSER); PAINTNAME = getIntent().getExtras().getInt(MyApplication.BIGPICFROMUSERPAINTNAME); loadLargeImageFromSDcard(); } else { finish(); } } private void loadLargeImageFromSDcard() { MyProgressDialog.show(this, null, getString(R.string.loadpicture)); new AsyncTask() { @Override protected Object doInBackground(Object[] objects) { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); AsynImageLoader.showLagreImageAsynWithNoCacheOpen(colourImageView, URL, new ImageLoadingListener() { @Override public void onLoadingStarted(String s, View view) { } @Override public void onLoadingFailed(String s, View view, FailReason failReason) { MyProgressDialog.DismissDialog(); Toast.makeText(PaintActivity.this, getString(R.string.loadpicturefailed), Toast.LENGTH_SHORT).show(); finish(); } @Override public void onLoadingComplete(String s, View view, Bitmap bitmap) { mAttacher = new PhotoViewAttacher(colourImageView, bitmap); //rotate screen load bitmap saved in the savestates if (cachedBitmap != null) { colourImageView.setImageBT(cachedBitmap); } MyProgressDialog.DismissDialog(); //show advancelay advanceLaytoggle(); } @Override public void onLoadingCancelled(String s, View view) { MyProgressDialog.DismissDialog(); Toast.makeText(PaintActivity.this, getString(R.string.loadpicturefailed), Toast.LENGTH_SHORT).show(); finish(); } }); } }.execute(); } private void loadLargeImage() { MyProgressDialog.show(this, null, getString(R.string.loadpicture)); new AsyncTask() { @Override protected Object doInBackground(Object[] objects) { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); AsynImageLoader.showLagreImageAsynWithAllCacheOpen(colourImageView, URL, new ImageLoadingListener() { @Override public void onLoadingStarted(String s, View view) { } @Override public void onLoadingFailed(String s, View view, FailReason failReason) { MyProgressDialog.DismissDialog(); Toast.makeText(PaintActivity.this, getString(R.string.loadpicturefailed), Toast.LENGTH_SHORT).show(); finish(); } @Override public void onLoadingComplete(String s, View view, Bitmap bitmap) { mAttacher = new PhotoViewAttacher(colourImageView, bitmap); //rotate screen load bitmap saved in the savestates if (cachedBitmap != null) { colourImageView.setImageBT(cachedBitmap); } else { openSaveImage(ImageSaveUtil.convertImageLageUrl(URL).hashCode()); showHintDialog(); } MyProgressDialog.DismissDialog(); //show advancelay advanceLaytoggle(); } @Override public void onLoadingCancelled(String s, View view) { MyProgressDialog.DismissDialog(); Toast.makeText(PaintActivity.this, getString(R.string.loadpicturefailed), Toast.LENGTH_SHORT).show(); finish(); } }); } }.execute(); } private void showHintDialog() { myDialogFactory.showPaintHintDialog(); } private void initViews() { myDialogFactory = new MyDialogFactory(this); advanceLay = (LinearLayout) findViewById(R.id.topfirstlay); colourImageView = (ColourImageView) findViewById(R.id.fillImageview); cColor1 = (ImageView) findViewById(R.id.current_pen1); cColor2 = (ImageView) findViewById(R.id.current_pen2); cColor3 = (ImageView) findViewById(R.id.current_pen3); cColor4 = (ImageView) findViewById(R.id.current_pen4); tableLayout = (TableLayout) findViewById(R.id.colortable); colorPickerSeekBar = (ColorPicker) findViewById(R.id.seekcolorpicker); largecolorpicker = (ColorPicker) findViewById(R.id.largepicker); largecolorpickerlay = (LinearLayout) findViewById(R.id.largepickerlay); advanceColor = (ImageView) findViewById(R.id.advance_color); undo = (ImageButton_define_secondLay) findViewById(R.id.undo); redo = (ImageButton_define_secondLay) findViewById(R.id.redo); save = (ImageButton_define) findViewById(R.id.save); open = (ImageButton_define) findViewById(R.id.open); share = (ImageButton_define) findViewById(R.id.share); more = (ImageButton_define) findViewById(R.id.more); delete = (ImageButton_define) findViewById(R.id.delete); pick = (ImageCheckBox_define) findViewById(R.id.pickcolor); drawLine = (ImageCheckBox_define) findViewById(R.id.drawline); jianbian_color = (ImageCheckBox_define) findViewById(R.id.jianbian_color); } private void addEvents() { advanceColor.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { advanceLaytoggle(); } }); undo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { colourImageView.undo(); } }); redo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { colourImageView.redo(); } }); currentColor = cColor1; getSavedColors(cColor1, cColor2, cColor3, cColor4); cColor1.setOnClickListener(checkCurrentColor); cColor2.setOnClickListener(checkCurrentColor); cColor3.setOnClickListener(checkCurrentColor); cColor4.setOnClickListener(checkCurrentColor); changeCurrentColor(currentColor); colorPickerSeekBar.setOnChangedListener(new ColorPicker.OnColorChangedListener() { @Override public void colorChangedListener(int color) { changeCurrentColor(color); } }); colorPickerSeekBar.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { int action = motionEvent.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: largecolorpickerlay.setVisibility(View.VISIBLE); largecolorpickerlay.startAnimation(AnimateFactory.getInstance().popupAnimation(PaintActivity.this)); case MotionEvent.ACTION_MOVE: largecolorpicker.setColor(colorPickerSeekBar.getColor()); break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: largecolorpickerlay.setVisibility(View.GONE); break; } return false; } }); colorPickerSeekBar.setColor(getResources().getColor(R.color.maincolor)); colourImageView.setOnRedoUndoListener(new ColourImageView.OnRedoUndoListener() { @Override public void onRedoUndo(int undoSize, int redoSize) { if (undoSize != 0) { undo.setEnabled(true); undo.setImageSrc(R.drawable.blueundo); } else { undo.setEnabled(false); undo.setImageSrc(R.drawable.greyundo); } if (redoSize != 0) { redo.setEnabled(true); redo.setImageSrc(R.drawable.blueredo); } else { redo.setEnabled(false); redo.setImageSrc(R.drawable.greyredo); } } }); save.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { saveToLocal(); } }); open.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (fromSDcard) { openSaveImage(PAINTNAME); } else { openSaveImage(ImageSaveUtil.convertImageLageUrl(URL).hashCode()); } } }); share.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { shareImage(); } }); for (int i = 0; i < tableLayout.getChildCount(); i++) { for (int j = 0; j < ((TableRow) tableLayout.getChildAt(i)).getChildCount(); j++) { if (((TableRow) tableLayout.getChildAt(i)).getChildAt(j) instanceof Button) { ((TableRow) tableLayout.getChildAt(i)).getChildAt(j).setOnClickListener(this); } } } pick.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(View buttonView, boolean isChecked) { if (isChecked) { drawLine.setChecked(false); myDialogFactory.showPickColorHintDialog(); colourImageView.setModel(ColourImageView.Model.PICKCOLOR); colourImageView.setOnColorPickListener(new ColourImageView.OnColorPickListener() { @Override public void onColorPick(boolean status, int color) { if (status == true) { changeCurrentColor(color); pick.setChecked(false); } else { Toast.makeText(PaintActivity.this, getString(R.string.pickcolorerror), Toast.LENGTH_SHORT).show(); } } }); } else { backToColorModel(); } } }); drawLine.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(View buttonView, boolean isChecked) { if (isChecked) { pick.setChecked(false); myDialogFactory.showBuxianButtonClickDialog(); colourImageView.setModel(ColourImageView.Model.DRAW_LINE); colourImageView.setOnDrawLineListener(new OnDrawLineListener() { @Override public void OnDrawFinishedListener(boolean drawed, int startX, int startY, int endX, int endY) { if (!drawed) { Toast.makeText(PaintActivity.this, getString(R.string.drawLineHint_finish), Toast.LENGTH_SHORT).show(); } else { myDialogFactory.showBuxianNextPointSetDialog(); } } @Override public void OnGivenFirstPointListener(int startX, int startY) { myDialogFactory.showBuxianFirstPointSetDialog(); } @Override public void OnGivenNextPointListener(int endX, int endY) { } }); } else { colourImageView.clearPoints(); backToColorModel(); } } }); delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View v) { myDialogFactory.dismissDialog(); repaint(); } }; myDialogFactory.showRepaintDialog(listener); } }); more.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { gotoAdvancePaintActivity(); } }); jianbian_color.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(View view, boolean checked) { if (checked) { myDialogFactory.showGradualHintDialog(); colourImageView.setModel(ColourImageView.Model.FILLGRADUALCOLOR); jianbian_color.setText(R.string.jianbian_color); } else { colourImageView.setModel(ColourImageView.Model.FILLCOLOR); jianbian_color.setText(R.string.normal_color); } } }); } private void backToColorModel() { colourImageView.setModel(ColourImageView.Model.FILLCOLOR); jianbian_color.setChecked(false); } View.OnClickListener checkCurrentColor = new View.OnClickListener() { @Override public void onClick(View view) { int id = view.getId(); switch (id) { case R.id.current_pen1: //change background view.setBackgroundResource(R.drawable.main_bg); setWhiteRoundBg(R.id.current_pen2, R.id.current_pen3, R.id.current_pen4); //set currentimageview currentColor = (ImageView) view; //change colourImageview color changeCurrentColor((ImageView) view); break; case R.id.current_pen2: //change background view.setBackgroundResource(R.drawable.main_bg); setWhiteRoundBg(R.id.current_pen1, R.id.current_pen3, R.id.current_pen4); //set currentimageview currentColor = (ImageView) view; //change colourImageview color changeCurrentColor((ImageView) view); break; case R.id.current_pen3: //change background view.setBackgroundResource(R.drawable.main_bg); setWhiteRoundBg(R.id.current_pen2, R.id.current_pen1, R.id.current_pen4); //set currentimageview currentColor = (ImageView) view; //change colourImageview color changeCurrentColor((ImageView) view); break; case R.id.current_pen4: //change background view.setBackgroundResource(R.drawable.main_bg); setWhiteRoundBg(R.id.current_pen2, R.id.current_pen3, R.id.current_pen1); //set currentimageview currentColor = (ImageView) view; //change colourImageview color changeCurrentColor((ImageView) view); break; } } }; private void setWhiteRoundBg(int view1, int view2, int view3) { findViewById(view1).setBackgroundResource(R.drawable.white_bg); findViewById(view2).setBackgroundResource(R.drawable.white_bg); findViewById(view3).setBackgroundResource(R.drawable.white_bg); } private void gotoAdvancePaintActivity() { L.e("advancepaint"); SaveImageAsyn.OnSaveFinishListener finishlistener = new SaveImageAsyn.OnSaveFinishListener() { @Override public void onSaveFinish(String path) { MyProgressDialog.DismissDialog(); Intent intent = new Intent(PaintActivity.this, AdvancePaintActivity.class); intent.putExtra("imagepath", path); startActivityForResult(intent, MyApplication.PaintActivityRequest); } }; saveToLocal(finishlistener); } private void advanceLaytoggle() { if (isShowing == 2) { advanceColor.setImageResource(R.drawable.hidebutton); AnimateFactory.getInstance().BounceInDownAnimation(advanceLay, findViewById(R.id.advancelay2), findViewById(R.id.colorpicklay)); isShowing = 1; } else if (isShowing == 1) { if (advanceLay.getVisibility() == View.VISIBLE) { advanceColor.setImageResource(R.drawable.hidebutton); AnimateFactory.getInstance().SlideOutUpAnimation(advanceLay); isShowing = 0; } else { advanceColor.setImageResource(R.drawable.hidebutton); AnimateFactory.getInstance().BounceInDownAnimation(findViewById(R.id.advancelay2), findViewById(R.id.colorpicklay)); isShowing = 0; } } else { advanceColor.setImageResource(R.drawable.showbutton); AnimateFactory.getInstance().SlideOutUpAnimation(advanceLay, findViewById(R.id.advancelay2), findViewById(R.id.colorpicklay)); isShowing = 2; } } private void shareImage() { UmengUtil.analysitic(PaintActivity.this, UmengUtil.SHAREIMAGE, URL); MyProgressDialog.show(PaintActivity.this, null, getString(R.string.savingimage)); SaveImageAsyn saveImageAsyn = new SaveImageAsyn(); if (fromSDcard) { saveImageAsyn.execute(colourImageView.getmBitmap(), PAINTNAME); } else { saveImageAsyn.execute(colourImageView.getmBitmap(), ImageSaveUtil.convertImageLageUrl(URL).hashCode()); } saveImageAsyn.setOnSaveSuccessListener(new SaveImageAsyn.OnSaveFinishListener() { @Override public void onSaveFinish(String path) { MyProgressDialog.DismissDialog(); if (path == null) { Toast.makeText(PaintActivity.this, getString(R.string.saveFailed), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(PaintActivity.this, getString(R.string.saveSuccess) + path, Toast.LENGTH_SHORT).show(); ShareImageUtil.getInstance(PaintActivity.this).shareImg(path); } } }); } private void saveToLocal() { UmengUtil.analysitic(PaintActivity.this, UmengUtil.SAVEIMAGE, URL); MyProgressDialog.show(PaintActivity.this, null, getString(R.string.savingimage)); SaveImageAsyn saveImageAsyn = new SaveImageAsyn(); if (fromSDcard) { saveImageAsyn.execute(colourImageView.getmBitmap(), PAINTNAME); } else { saveImageAsyn.execute(colourImageView.getmBitmap(), ImageSaveUtil.convertImageLageUrl(URL).hashCode()); } saveImageAsyn.setOnSaveSuccessListener(new SaveImageAsyn.OnSaveFinishListener() { @Override public void onSaveFinish(String path) { MyProgressDialog.DismissDialog(); if (path == null) { Toast.makeText(PaintActivity.this, getString(R.string.saveFailed), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(PaintActivity.this, getString(R.string.saveSuccess) + path, Toast.LENGTH_SHORT).show(); } } }); } private void saveToLocal(SaveImageAsyn.OnSaveFinishListener onSaveFinishListener) { UmengUtil.analysitic(PaintActivity.this, UmengUtil.SAVEIMAGE, URL); MyProgressDialog.show(PaintActivity.this, null, getString(R.string.savingimage)); SaveImageAsyn saveImageAsyn = new SaveImageAsyn(); if (fromSDcard) { saveImageAsyn.execute(colourImageView.getmBitmap(), PAINTNAME); } else { saveImageAsyn.execute(colourImageView.getmBitmap(), ImageSaveUtil.convertImageLageUrl(URL).hashCode()); } saveImageAsyn.setOnSaveSuccessListener(onSaveFinishListener); } private void openSaveImage(int hashCode) { try { String root = Environment.getExternalStorageDirectory().getPath() + "/MyFCWorks/"; String path = root + hashCode + ".png"; File file = new File(path); if (!file.exists()) { throw new Exception("open image failed"); } Bitmap bMap = BitmapFactory.decodeFile(path); colourImageView.setImageBT(bMap); Toast.makeText(this, getString(R.string.opensuccess), Toast.LENGTH_SHORT).show(); } catch (Exception e) { L.e(e.toString()); Toast.makeText(this, getString(R.string.openfailed), Toast.LENGTH_SHORT).show(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); return super.onOptionsItemSelected(item); } @Override public void onClick(View view) { int color; if (Build.VERSION.SDK_INT >= 11) { color = ((ColorDrawable) view.getBackground()).getColor(); } else { Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_4444); Canvas canvas = new Canvas(bitmap); view.getBackground().draw(canvas); int pix = bitmap.getPixel(0, 0); bitmap.recycle(); color = pix; } L.e(color + ""); colorPickerSeekBar.setColor(color); changeCurrentColor(color); } private void changeCurrentColor(int color) { setFillColorModel(); colourImageView.setColor(color); currentColor.setImageDrawable(new ColorDrawable(color)); } private void setFillColorModel() { pick.setChecked(false); drawLine.setChecked(false); } private void changeCurrentColor(ImageView currentColor) { setFillColorModel(); colorPickerSeekBar.setColor(((ColorDrawable) currentColor.getDrawable()).getColor()); colourImageView.setColor(((ColorDrawable) currentColor.getDrawable()).getColor()); } @Override public void onBackPressed() { View.OnClickListener savelistener = new View.OnClickListener() { @Override public void onClick(View view) { DialogInterface.OnDismissListener onCancelListener = new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialogInterface) { saveToLocalandFinish(); } }; myDialogFactory.dismissDialog(onCancelListener); } }; View.OnClickListener quitlistener = new View.OnClickListener() { @Override public void onClick(View view) { myDialogFactory.dismissDialog(); finish(); } }; myDialogFactory.FinishSaveImageDialog(savelistener, quitlistener); } private void saveToLocalandFinish() { UmengUtil.analysitic(PaintActivity.this, UmengUtil.SAVEIMAGE, URL); MyProgressDialog.show(PaintActivity.this, null, getString(R.string.savingimage)); SaveImageAsyn saveImageAsyn = new SaveImageAsyn(); if (fromSDcard) { saveImageAsyn.execute(colourImageView.getmBitmap(), PAINTNAME); } else { saveImageAsyn.execute(colourImageView.getmBitmap(), ImageSaveUtil.convertImageLageUrl(URL).hashCode()); } saveImageAsyn.setOnSaveSuccessListener(new SaveImageAsyn.OnSaveFinishListener() { @Override public void onSaveFinish(String path) { MyProgressDialog.DismissDialog(); if (path == null) { Toast.makeText(PaintActivity.this, getString(R.string.saveFailed), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(PaintActivity.this, getString(R.string.saveSuccess) + path, Toast.LENGTH_SHORT).show(); finish(); } } }); } @Override public void onSaveInstanceState(Bundle outState) { if (colourImageView != null && colourImageView.getmBitmap() != null) { outState.putParcelable("bitmap", (colourImageView.getmBitmap().copy(colourImageView.getmBitmap().getConfig(), true))); } super.onSaveInstanceState(outState); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { if (savedInstanceState.getParcelable("bitmap") != null) cachedBitmap = savedInstanceState.getParcelable("bitmap"); super.onRestoreInstanceState(savedInstanceState); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == MyApplication.PaintActivityRequest) { switch (resultCode) { case MyApplication.RepaintResult: repaint(); break; } } } private void repaint() { if (fromSDcard) { if (FileUtils.deleteFile(URL)) { finish(); } else { Toast.makeText(this, getString(R.string.deletePaintFailed), Toast.LENGTH_SHORT).show(); } } else { MyProgressDialog.show(this, null, getString(R.string.loadpicture)); colourImageView.clearStack(); AsynImageLoader.showLagreImageAsynWithAllCacheOpen(colourImageView, URL, new ImageLoadingListener() { @Override public void onLoadingStarted(String s, View view) { } @Override public void onLoadingFailed(String s, View view, FailReason failReason) { MyProgressDialog.DismissDialog(); Toast.makeText(PaintActivity.this, getString(R.string.loadpicturefailed), Toast.LENGTH_SHORT).show(); finish(); } @Override public void onLoadingComplete(String s, View view, Bitmap bitmap) { mAttacher = new PhotoViewAttacher(colourImageView, bitmap); MyProgressDialog.DismissDialog(); } @Override public void onLoadingCancelled(String s, View view) { MyProgressDialog.DismissDialog(); Toast.makeText(PaintActivity.this, getString(R.string.loadpicturefailed), Toast.LENGTH_SHORT).show(); finish(); } }); } } @Override protected void onPause() { super.onPause(); setSavedColors(cColor1, cColor2, cColor3, cColor4); } private void setSavedColors(ImageView cColor1, ImageView cColor2, ImageView cColor3, ImageView cColor4) { SharedPreferencesFactory.saveInteger(this, SharedPreferencesFactory.SavedColor1, ((ColorDrawable) cColor1.getDrawable()).getColor()); SharedPreferencesFactory.saveInteger(this, SharedPreferencesFactory.SavedColor2, ((ColorDrawable) cColor2.getDrawable()).getColor()); SharedPreferencesFactory.saveInteger(this, SharedPreferencesFactory.SavedColor3, ((ColorDrawable) cColor3.getDrawable()).getColor()); SharedPreferencesFactory.saveInteger(this, SharedPreferencesFactory.SavedColor4, ((ColorDrawable) cColor4.getDrawable()).getColor()); } private void getSavedColors(ImageView cColor1, ImageView cColor2, ImageView cColor3, ImageView cColor4) { cColor1.setImageDrawable(new ColorDrawable(SharedPreferencesFactory.getInteger(this, SharedPreferencesFactory.SavedColor1, getResources().getColor(R.color.red)))); cColor2.setImageDrawable(new ColorDrawable(SharedPreferencesFactory.getInteger(this, SharedPreferencesFactory.SavedColor2, getResources().getColor(R.color.yellow)))); cColor3.setImageDrawable(new ColorDrawable(SharedPreferencesFactory.getInteger(this, SharedPreferencesFactory.SavedColor3, getResources().getColor(R.color.skyblue)))); cColor4.setImageDrawable(new ColorDrawable(SharedPreferencesFactory.getInteger(this, SharedPreferencesFactory.SavedColor4, getResources().getColor(R.color.green)))); } @Override protected void onDestroy() { super.onDestroy(); colourImageView.onRecycleBitmaps(); } }