package warmupdaterapp.ui; import warmupdaterapp.ui.R; import warmupdaterapp.customExceptions.InvalidPictureException; import warmupdaterapp.misc.Constants; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; public class ScreenshotDetailActivity extends Activity { private int mCurrentScreenshotIndex = 0; private ImageView imageView; private ImageButton nextButton; private ImageButton prevButton; private int maxIndexSize; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.screenshots_detail); imageView = (ImageView) findViewById(R.id.image_view); Intent i = getIntent(); Bundle b = i.getExtras(); mCurrentScreenshotIndex = b.getInt(Constants.SCREENSHOTS_POSITION, 0); maxIndexSize = ScreenshotActivity.getScreenshotSize() - 1; nextButton = (ImageButton) findViewById(R.id.next_button); prevButton = (ImageButton) findViewById(R.id.previous_button); nextButton.setOnClickListener(ButtonOnClickListener); prevButton.setOnClickListener(ButtonOnClickListener); } @Override protected void onStart() { super.onStart(); showScreenshot(); } private void showScreenshot() { //Reenable the Buttons, they will be removed in the following ifs nextButton.setVisibility(View.VISIBLE); prevButton.setVisibility(View.VISIBLE); if (mCurrentScreenshotIndex >= maxIndexSize) { mCurrentScreenshotIndex = maxIndexSize; nextButton.setVisibility(View.GONE); } if (mCurrentScreenshotIndex <= 0) { mCurrentScreenshotIndex = 0; prevButton.setVisibility(View.GONE); } try { imageView.setImageBitmap((ScreenshotActivity.getItem(mCurrentScreenshotIndex)).getBitmap()); } catch (InvalidPictureException e) { imageView.setImageResource(Constants.SCREENSHOTS_FALLBACK_IMAGE); } //Image not yet loaded catch (IndexOutOfBoundsException e) { imageView.setImageResource(Constants.SCREENSHOTS_LOADING_IMAGE); } ((TextView) findViewById(R.id.status_text)).setText(String.format("%d/%d", mCurrentScreenshotIndex + 1, maxIndexSize + 1)); } @Override protected void onStop() { super.onStop(); imageView.getDrawable().setCallback(null); System.gc(); } private final View.OnClickListener ButtonOnClickListener = new View.OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.next_button: mCurrentScreenshotIndex++; break; case R.id.previous_button: mCurrentScreenshotIndex--; break; } showScreenshot(); } }; }