Android Open Source - City-Outdoors-Android View Image Activity






From Project

Back to project page City-Outdoors-Android.

License

The source code is released under:

Copyright (c) 2012, Edinburgh Council All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are ...

If you think the Android project City-Outdoors-Android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package uk.co.jarofgreen.cityoutdoors.UI;
/*  w  w  w . j  a  v  a  2s.  c  om*/
import java.io.InputStream;
import java.net.URL;
import java.util.List;

import uk.co.jarofgreen.cityoutdoors.OurApplication;
import uk.co.jarofgreen.cityoutdoors.Model.Content;
import uk.co.jarofgreen.cityoutdoors.R;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.widget.ImageView;
/**
 * 
 * @author James Baster  <james@jarofgreen.co.uk>
 * @copyright City of Edinburgh Council & James Baster
 * @license Open Source under the 3-clause BSD License
 * @url https://github.com/City-Outdoors/City-Outdoors-Android
 */
public class ViewImageActivity extends BaseActivity  implements OnClickListener  {

  ProgressDialog mDialog;
  
  List<Content> content;
  int contentIDX;
  int featureContentID = 0;
  int featureID;
  
  DownloadImageTask downLoadImageTask;
  

   private final int SWIPE_MIN_DISTANCE = 300;
   private final int SWIPE_MAX_OFF_PATH = 250;
   private GestureDetector gestureDetector;
   View.OnTouchListener gestureListener;
  
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.view_image);
        TitleBar.populate(this);
        
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
      featureContentID = extras.getInt("featureContentID");
      Log.d("FEATURECONTENTID",Integer.toString(featureContentID));
      featureID = extras.getInt("featureID");
      Log.d("FEATUREID",Integer.toString(featureID));
    }
    
    OurApplication appState = ((OurApplication)getApplication());
    content = appState.getFeatureContent(featureID);
    
    for (int i = 0; i < content.size(); i++) {
      if (content.get(i).getId() == featureContentID) {
        contentIDX = i;
      }
    }

      mDialog = new ProgressDialog(this);
      mDialog.setMessage(getString(R.string.loading_data_from_server_wait));
      mDialog.setOnCancelListener(new OnCancelListener() {
            public void onCancel(DialogInterface arg0) {
              downLoadImageTask.cancel(true);
              ViewImageActivity.this.finish();
            }
        });    
    
    loadImage();
    
        if (content.size() > 1) {
          gestureDetector = new GestureDetector(new MyGestureDetector());
          gestureListener = new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
              return gestureDetector.onTouchEvent(event);
            }
          };
      
          View v = findViewById(R.id.image);
          v.setOnClickListener(this); 
          v.setOnTouchListener(gestureListener);
        }
        
    }
    
    protected void loadImage() {
      mDialog.show();  
      
      if (downLoadImageTask != null) {
        downLoadImageTask.cancel(true);
      }
      
      Content thisContent = content.get(contentIDX);
      downLoadImageTask = new DownloadImageTask(thisContent.getPictureFullURL());
      downLoadImageTask.execute(true);
    }
    


   protected void prevImage() {
     if (contentIDX == 0) { contentIDX = content.size() -1; } else { --contentIDX; }
     loadImage();     
   }

   protected void nextImage() {
     ++contentIDX;
     if (contentIDX == content.size()) { contentIDX = 0; }
     loadImage();     
   }

    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
      if (content.size() > 1) {
          MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.menu.view_image_menu, menu);
          return true;
      } else {
        return false;
      }
    }
    

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
      switch (item.getItemId()) {
      case R.id.prev_image:
        prevImage();
        return true;
      case R.id.next_image:
        nextImage();
        return true;
      default:
        return super.onOptionsItemSelected(item);
      }
    }   
      
    
    private class DownloadImageTask extends AsyncTask<Boolean, Void, Boolean> {

      Drawable draw;
      String imageURL;
      
    public DownloadImageTask(String imageURL) {
      super();
      this.imageURL = imageURL;      
    }

    protected Boolean doInBackground(Boolean... dummy) {
      try {
        URL url = new URL(imageURL);
        InputStream is = (InputStream)  url.getContent();
        draw = Drawable.createFromStream(is, "src");
      } catch (Exception e) {
        return null;
      }
      return null;
    }


    protected void onPostExecute(Boolean result) {
      if (!isCancelled()) { 
        ImageView iv = (ImageView)findViewById(R.id.image);
        iv.setImageDrawable(draw);
        
        mDialog.dismiss();
      }
    }
    
  }  
    


    class MyGestureDetector extends SimpleOnGestureListener {
      @Override
      public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        Log.i("ONFLING","DIST Y "+ Float.toString(Math.abs(e1.getY() - e2.getY())));
        if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) return false;
        Log.i("ONFLING"," DIST " + Float.toString(e1.getX() - e2.getX()));
        if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE) {
          nextImage();
        }  else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE) {
          prevImage();
        }
        return false;
      }
    }



  public void onClick(View arg0) {
    // TODO Auto-generated method stub
    
  }


    
}




Java Source Code List

uk.co.jarofgreen.cityoutdoors.OurApplication.java
uk.co.jarofgreen.cityoutdoors.Storage.java
uk.co.jarofgreen.cityoutdoors.API.BaseCall.java
uk.co.jarofgreen.cityoutdoors.API.BaseSubmitContentOrReportCall.java
uk.co.jarofgreen.cityoutdoors.API.CheckCurrentUserCall.java
uk.co.jarofgreen.cityoutdoors.API.CollectionCall.java
uk.co.jarofgreen.cityoutdoors.API.CollectionsCall.java
uk.co.jarofgreen.cityoutdoors.API.FeatureCall.java
uk.co.jarofgreen.cityoutdoors.API.FeatureFavouriteCall.java
uk.co.jarofgreen.cityoutdoors.API.FeaturesCall.java
uk.co.jarofgreen.cityoutdoors.API.IndexCall.java
uk.co.jarofgreen.cityoutdoors.API.InformationNeededFromContext.java
uk.co.jarofgreen.cityoutdoors.API.LogInOrSignUpCall.java
uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureCheckinQuestionFreeTextAnswerCall.java
uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureCheckinQuestionHigherOrLowerAnswerCall.java
uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureCheckinQuestionMultipleChoiceAnswerCall.java
uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureContentCall.java
uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureReportCall.java
uk.co.jarofgreen.cityoutdoors.Model.BaseUploadContentOrReport.java
uk.co.jarofgreen.cityoutdoors.Model.Collection.java
uk.co.jarofgreen.cityoutdoors.Model.Content.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestionContent.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestionFreeText.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestionHigherOrLower.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestionMultipleChoice.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestionPossibleAnswer.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestion.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckin.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureFavourite.java
uk.co.jarofgreen.cityoutdoors.Model.Feature.java
uk.co.jarofgreen.cityoutdoors.Model.ItemField.java
uk.co.jarofgreen.cityoutdoors.Model.Item.java
uk.co.jarofgreen.cityoutdoors.Model.UploadFeatureContent.java
uk.co.jarofgreen.cityoutdoors.Model.UploadFeatureReport.java
uk.co.jarofgreen.cityoutdoors.Service.LoadDataIfStaleService.java
uk.co.jarofgreen.cityoutdoors.Service.LoadDataService.java
uk.co.jarofgreen.cityoutdoors.Service.LoadUserDataService.java
uk.co.jarofgreen.cityoutdoors.Service.SendFeatureContentOrReportService.java
uk.co.jarofgreen.cityoutdoors.Service.SendFeatureFavouriteService.java
uk.co.jarofgreen.cityoutdoors.UI.AboutActivity.java
uk.co.jarofgreen.cityoutdoors.UI.AboutLegalActivity.java
uk.co.jarofgreen.cityoutdoors.UI.BaseActivity.java
uk.co.jarofgreen.cityoutdoors.UI.BaseListActivity.java
uk.co.jarofgreen.cityoutdoors.UI.BaseMonthlyActivity.java
uk.co.jarofgreen.cityoutdoors.UI.BaseNewFeatureContentOrReportActivity.java
uk.co.jarofgreen.cityoutdoors.UI.BrowseMapActivity.java
uk.co.jarofgreen.cityoutdoors.UI.CollectionActivity.java
uk.co.jarofgreen.cityoutdoors.UI.CollectionsActivity.java
uk.co.jarofgreen.cityoutdoors.UI.FavouritesActivity.java
uk.co.jarofgreen.cityoutdoors.UI.FeatureActivity.java
uk.co.jarofgreen.cityoutdoors.UI.FeatureCheckinQuestionExplanationActivity.java
uk.co.jarofgreen.cityoutdoors.UI.FeatureChildrenActivity.java
uk.co.jarofgreen.cityoutdoors.UI.LogInOrSignUpActivity.java
uk.co.jarofgreen.cityoutdoors.UI.LogInTwitterActivity.java
uk.co.jarofgreen.cityoutdoors.UI.MainActivity.java
uk.co.jarofgreen.cityoutdoors.UI.NewFeatureContentActivity.java
uk.co.jarofgreen.cityoutdoors.UI.NewFeatureReportActivity.java
uk.co.jarofgreen.cityoutdoors.UI.PreferencesActivity.java
uk.co.jarofgreen.cityoutdoors.UI.SendFeatureContentOrReportProgressActivity.java
uk.co.jarofgreen.cityoutdoors.UI.SplashActivity.java
uk.co.jarofgreen.cityoutdoors.UI.TermsAndConditionsActivity.java
uk.co.jarofgreen.cityoutdoors.UI.TitleBar.java
uk.co.jarofgreen.cityoutdoors.UI.ViewImageActivity.java
uk.co.jarofgreen.cityoutdoors.UI.WhatsOnActivity.java
uk.co.jarofgreen.cityoutdoors.UI.WildlifeActivity.java