add image zoom fragment
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/commit/7d6d86bf Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/7d6d86bf Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/7d6d86bf Branch: refs/heads/master Commit: 7d6d86bfa38f3434dff1a94e7c2b5773ea88f307 Parents: cb1384b Author: Sagar <[email protected]> Authored: Sun Jul 24 19:25:22 2016 +0530 Committer: Sagar <[email protected]> Committed: Sun Jul 24 19:25:22 2016 +0530 ---------------------------------------------------------------------- .../mobile/ui/imagezoom/ImageZoomFragment.java | 243 +++++++++++++++++++ 1 file changed, 243 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/7d6d86bf/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomFragment.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomFragment.java new file mode 100644 index 0000000..7599e35 --- /dev/null +++ b/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomFragment.java @@ -0,0 +1,243 @@ +package org.apache.taverna.mobile.ui.imagezoom; + + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.load.resource.drawable.GlideDrawable; +import com.bumptech.glide.request.Request; +import com.bumptech.glide.request.animation.GlideAnimation; +import com.bumptech.glide.request.target.SizeReadyCallback; +import com.bumptech.glide.request.target.Target; + +import org.apache.taverna.mobile.R; +import org.apache.taverna.mobile.data.DataManager; +import org.apache.taverna.mobile.utils.ConnectionInfo; + +import android.content.Context; +import android.graphics.Matrix; +import android.graphics.PointF; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.os.Handler; +import android.support.annotation.Nullable; +import android.support.design.widget.Snackbar; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; +import uk.co.senab.photoview.PhotoViewAttacher; + +public class ImageZoomFragment extends Fragment implements ImageZoomMvpView { + + @BindView(R.id.ivWorkflowImage) + ImageView workflowImage; + + @BindView(R.id.ivClose) + ImageView close; + + public static final String ID = "id"; + + private static final String SERVER_ERROR = "Sever Error. Please try after sometime"; + + private static final String TAG = "ImageZoomFragment"; + + private String id; + + private String jpgURI; + + private DataManager dataManager; + + private ImageZoomPresenter mImageZoomPresenter; + + private ConnectionInfo mConnectionInfo; + + PhotoViewAttacher mAttacher; + + // These matrices will be used to scale points of the image + Matrix matrix = new Matrix(); + Matrix savedMatrix = new Matrix(); + + // The 3 states (events) which the user is trying to perform + static final int NONE = 0; + static final int DRAG = 1; + static final int ZOOM = 2; + int mode = NONE; + + // these PointF objects are used to record the point(s) the user is touching + PointF start = new PointF(); + PointF mid = new PointF(); + float oldDist = 1f; + + public static ImageZoomFragment newInstance(String id) { + + Bundle args = new Bundle(); + + args.putString(ID, id); + + ImageZoomFragment fragment = new ImageZoomFragment(); + fragment.setArguments(args); + + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + id = getArguments().getString(ID); + + dataManager = new DataManager(); + mImageZoomPresenter = new ImageZoomPresenter(dataManager); + mConnectionInfo = new ConnectionInfo(getContext()); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle + savedInstanceState) { + + View rootView = inflater.inflate(R.layout.fragment_image_zoom, container, false); + + ButterKnife.bind(this, rootView); + + mImageZoomPresenter.attachView(this); + + return rootView; + } + + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + if (mConnectionInfo.isConnectingToInternet()) { + + mImageZoomPresenter.loadImage(id, workflowImage); + } else { + + showErrorSnackBar(getString(R.string.no_internet)); + } + + + + + } + + @OnClick(R.id.ivClose) + public void closeActivity(View v) { + + getActivity().finish(); + } + + + + @Override + public void showErrorSnackBar(String error) { + + final Snackbar snackbar = Snackbar.make(workflowImage, error, Snackbar.LENGTH_INDEFINITE); + + snackbar.setAction("OK", new View.OnClickListener() { + @Override + public void onClick(View view) { + + snackbar.dismiss(); + getActivity().finish(); + } + }); + + snackbar.show(); + + Handler handler = new Handler(); + + handler.postDelayed(new Runnable() { + public void run() { + snackbar.dismiss(); + getActivity().finish(); + } + }, 2000); + } + + @Override + public Context getAppContext() { + return getContext(); + } + + @Override + public void setJPGuri(String uri) { + jpgURI = uri; + } + + @Override + public void setJPGImage() { + + + Glide.with(getContext()) + .load(jpgURI) + .diskCacheStrategy(DiskCacheStrategy.SOURCE) + .placeholder(R.drawable.placeholder) + .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) + .into(new Target<GlideDrawable>() { + @Override + public void onLoadStarted(Drawable placeholder) { + workflowImage.setImageDrawable(placeholder); + } + + @Override + public void onLoadFailed(Exception e, Drawable errorDrawable) { + showErrorSnackBar(SERVER_ERROR); + } + + @Override + public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) { + workflowImage.setImageDrawable(resource.getCurrent()); + addImageAttacher(); + + } + + @Override + public void onLoadCleared(Drawable placeholder) { + workflowImage.setImageDrawable(placeholder); + } + + @Override + public void getSize(SizeReadyCallback cb) { + + } + + @Override + public void setRequest(Request request) { + + } + + @Override + public Request getRequest() { + return null; + } + + @Override + public void onStart() { + + } + + @Override + public void onStop() { + + } + + @Override + public void onDestroy() { + + } + }); + + } + + @Override + public void addImageAttacher() { + mAttacher = new PhotoViewAttacher(workflowImage); + } + + +}
