package com.jparkie.aizoban.views.fragments;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
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.animation.GlideAnimation;
import com.bumptech.glide.request.target.GlideDrawableImageViewTarget;
import com.jparkie.aizoban.R;
import com.jparkie.aizoban.utils.FitRenderBoundsTransformation;
import com.jparkie.aizoban.views.widgets.GestureImageView;
public class PageFragment extends Fragment {
public static final String TAG = PageFragment.class.getSimpleName();
public static final String URL_ARGUMENT_KEY = TAG + ":" + "UrlArgumentKey";
public static final String POSITION_ARGUMENT_KEY = TAG + ":" + "PositionArgumentKey";
private GestureImageView mGestureImageView;
private String mUrl;
private int mPosition;
public static PageFragment newInstance(String url, int position) {
PageFragment newInstance = new PageFragment();
Bundle arguments = new Bundle();
arguments.putString(URL_ARGUMENT_KEY, url);
arguments.putInt(POSITION_ARGUMENT_KEY, position);
newInstance.setArguments(arguments);
return newInstance;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle arguments = getArguments();
if (arguments != null) {
if (arguments.containsKey(URL_ARGUMENT_KEY)) {
mUrl = arguments.getString(URL_ARGUMENT_KEY);
}
if (arguments.containsKey(POSITION_ARGUMENT_KEY)) {
mPosition = arguments.getInt(POSITION_ARGUMENT_KEY);
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View pageView = inflater.inflate(R.layout.fragment_page, container, false);
mGestureImageView = (GestureImageView) pageView.findViewById(R.id.gestureImageView);
return pageView;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mGestureImageView.setScaleType(ImageView.ScaleType.CENTER);
Drawable placeHolderDrawable = getResources().getDrawable(R.drawable.ic_image_white_48dp);
placeHolderDrawable.setColorFilter(getResources().getColor(R.color.accentPinkA200), PorterDuff.Mode.MULTIPLY);
Drawable errorHolderDrawable = getResources().getDrawable(R.drawable.ic_error_white_48dp);
errorHolderDrawable.setColorFilter(getResources().getColor(R.color.accentPinkA200), PorterDuff.Mode.MULTIPLY);
Glide.with(this)
.load(mUrl)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(placeHolderDrawable)
.error(errorHolderDrawable)
.animate(android.R.anim.fade_in)
.transform(new FitRenderBoundsTransformation(getActivity(), mGestureImageView))
.into(new GlideDrawableImageViewTarget(mGestureImageView) {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> animation) {
super.onResourceReady(resource, animation);
mGestureImageView.setTag(PageFragment.TAG + ":" + mPosition);
mGestureImageView.initializeView();
}
});
}
}