package org.horaapps.leafpic.fragments; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.signature.StringSignature; import com.davemorrissey.labs.subscaleview.ImageSource; import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; import org.horaapps.leafpic.R; import org.horaapps.leafpic.activities.SingleMediaActivity; import org.horaapps.leafpic.data.Media; import org.horaapps.leafpic.util.PreferenceUtil; import org.horaapps.leafpic.views.RotateTransformation; import java.util.Date; import uk.co.senab.photoview.PhotoView; import uk.co.senab.photoview.PhotoViewAttacher; /** * Created by dnld on 18/02/16. */ @SuppressWarnings("ResourceType") public class ImageFragment extends Fragment { private Media img; public static ImageFragment newInstance(Media media) { ImageFragment imageFragment = new ImageFragment(); Bundle args = new Bundle(); args.putParcelable("image", media); imageFragment.setArguments(args); return imageFragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); img = getArguments().getParcelable("image"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (PreferenceUtil.getInstance(getContext()).getBoolean(getString(R.string.preference_sub_scaling) , false)) { SubsamplingScaleImageView imageView = new SubsamplingScaleImageView(getContext()); imageView.setImage(ImageSource.uri(img.getUri())); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ((SingleMediaActivity) getActivity()).toggleSystemUI(); } }); return imageView; } else { PhotoView photoView = new PhotoView(getContext()); displayMedia(photoView, true); photoView.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() { @Override public void onPhotoTap(View view, float x, float y) { ((SingleMediaActivity) getActivity()).toggleSystemUI(); } @Override public void onOutsidePhotoTap() { ((SingleMediaActivity) getActivity()).toggleSystemUI(); } }); photoView.setMaximumScale(5.0F); photoView.setMediumScale(3.0F); return photoView; } } /* private void rotateLoop() { //april fools new Handler().postDelayed(new Runnable() { @Override public void run() { photoView.setRotationBy(1); rotateLoop(); } }, 5); }*/ private void displayMedia(PhotoView photoView, boolean useCache) { //PreferenceUtil SP = PreferenceUtil.getInstance(getContext()); Glide.with(getContext()) .load(img.getUri()) .asBitmap() .signature(useCache ? img.getSignature(): new StringSignature(new Date().getTime()+"")) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .thumbnail(0.5f) .transform(new RotateTransformation(getContext(), img.getOrientation(), false)) .animate(R.anim.fade_in) .into(photoView); } public boolean rotatePicture(int rotation) { // TODO: 28/08/16 not working yet /*PhotoView photoView = (PhotoView) getView(); int orientation = Measure.rotateBy(img.getOrientation(), rotation); Log.wtf("asd", img.getOrientation()+" + "+ rotation+" = " +orientation); if(photoView != null && img.setOrientation(orientation)) { Glide.clear(photoView); Glide.with(getContext()) .load(img.getUri()) .asBitmap() .signature(img.getSignature()) .diskCacheStrategy(DiskCacheStrategy.SOURCE) //.thumbnail(0.5f) .transform(new RotateTransformation(getContext(), rotation , true)) .into(photoView); return true; }*/ return false; } }