package com.sonaive.v2ex.ui;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.sonaive.v2ex.R;
import com.sonaive.v2ex.ui.widgets.HackyViewPager;
import com.sonaive.v2ex.ui.widgets.LoadingPhotoView;
import com.sonaive.v2ex.util.ImageLoader;
import com.sonaive.v2ex.widget.LoadingStatus;
import uk.co.senab.photoview.PhotoViewAttacher;
import static com.sonaive.v2ex.util.LogUtils.LOGV;
import static com.sonaive.v2ex.util.LogUtils.makeLogTag;
/**
* Created by liutao on 12/29/14.
*/
public class ViewPagerActivity extends BaseActivity {
private static final String TAG = makeLogTag(ViewPagerActivity.class);
private static final String ARG_POSTERS = "posters";
private static final String ARG_CURRENT_ITEM = "current_item";
private ViewPager mViewPager;
private String[] posters;
private int currentItem = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pager);
mViewPager = (HackyViewPager) findViewById(R.id.view_pager);
setContentView(mViewPager);
if (savedInstanceState != null) {
posters = savedInstanceState.getStringArray(ARG_POSTERS);
currentItem = savedInstanceState.getInt(ARG_CURRENT_ITEM);
} else {
posters = getIntent().getStringArrayExtra("posters");
currentItem = getIntent().getIntExtra("current_item", 0);
}
mViewPager.setAdapter(new FullSizePosterPagerAdapter(this, posters));
mViewPager.setCurrentItem(currentItem);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putStringArray(ARG_POSTERS, posters);
outState.putInt(ARG_CURRENT_ITEM, currentItem);
super.onSaveInstanceState(outState);
}
static class FullSizePosterPagerAdapter extends PagerAdapter {
final String[] posters;
Context mContext;
ImageLoader mImageLoader;
public FullSizePosterPagerAdapter(Context context, String[] posters) {
mContext = context;
mImageLoader = new ImageLoader(context);
this.posters = posters;
}
@Override
public int getCount() {
return posters.length;
}
@Override
public View instantiateItem(ViewGroup container, int position) {
final LoadingPhotoView photoView = new LoadingPhotoView(container.getContext());
PhotoViewAttacher photoViewAttacher = new PhotoViewAttacher(photoView.getImageView());
photoViewAttacher.setOnViewTapListener(new PhotoViewAttacher.OnViewTapListener() {
@Override
public void onViewTap(View view, float v, float v2) {
((BaseActivity) mContext).finish();
}
});
mImageLoader.loadImage(posters[position].trim(), photoView.getImageView(), new RequestListener<String, Bitmap>() {
@Override
public boolean onException(Exception e, String model, Target<Bitmap> target, boolean isFirstResource) {
photoView.setLoadingState(LoadingStatus.LOAD_FAILED);
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, String model, Target<Bitmap> target, boolean isFromMemoryCache, boolean isFirstResource) {
photoView.setLoadingState(LoadingStatus.FINISH);
return false;
}
});
LOGV(TAG, "Loading image, position is: " + position + ", source is: " + posters[position]);
// Now just add PhotoView to ViewPager and return it
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
container.addView(photoView, 0, params);
return photoView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
}