/*
* Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.ui;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.animation.FastOutSlowInInterpolator;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import java.util.ArrayList;
import butterknife.BindInt;
import butterknife.BindView;
import butterknife.ButterKnife;
import me.zhanghai.android.douya.R;
import me.zhanghai.android.douya.network.api.info.apiv2.Image;
import me.zhanghai.android.systemuihelper.SystemUiHelper;
public class GalleryActivity extends AppCompatActivity {
private static final String KEY_PREFIX = GalleryActivity.class.getSimpleName() + '.';
private static final String EXTRA_IMAGE_LIST = KEY_PREFIX + "image_list";
private static final String EXTRA_POSITION = KEY_PREFIX + "position";
@BindInt(android.R.integer.config_mediumAnimTime)
int mToolbarHideDuration;
@BindView(R.id.toolbar)
Toolbar mToolbar;
@BindView(R.id.viewPager)
ViewPager mViewPager;
private SystemUiHelper mSystemUiHelper;
public static Intent makeIntent(ArrayList<String> imageList, int position, Context context) {
return new Intent(context, GalleryActivity.class)
.putStringArrayListExtra(EXTRA_IMAGE_LIST, imageList)
.putExtra(EXTRA_POSITION, position);
}
public static Intent makeImageListIntent(ArrayList<Image> imageList, int position,
Context context) {
ArrayList<String> imageUrlList = new ArrayList<>();
for (Image image : imageList) {
imageUrlList.add(image.getLargest());
}
return makeIntent(imageUrlList, position, context);
}
public static Intent makeIntent(String image, Context context) {
ArrayList<String> imageList = new ArrayList<>();
imageList.add(image);
return makeIntent(imageList, 0, context);
}
public static Intent makeIntent(Image image, Context context) {
return makeIntent(image.getLargest(), context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gallery_activity);
ButterKnife.bind(this);
setSupportActionBar(mToolbar);
mSystemUiHelper = new SystemUiHelper(this, SystemUiHelper.LEVEL_IMMERSIVE,
SystemUiHelper.FLAG_IMMERSIVE_STICKY,
new SystemUiHelper.OnVisibilityChangeListener() {
@Override
public void onVisibilityChange(boolean visible) {
if (visible) {
mToolbar.animate()
.alpha(1)
.translationY(0)
.setDuration(mToolbarHideDuration)
.setInterpolator(new FastOutSlowInInterpolator())
.start();
} else {
mToolbar.animate()
.alpha(0)
.translationY(-mToolbar.getBottom())
.setDuration(mToolbarHideDuration)
.setInterpolator(new FastOutSlowInInterpolator())
.start();
}
}
});
// This will set up window flags.
mSystemUiHelper.show();
ArrayList<String> imageList = getIntent().getStringArrayListExtra(EXTRA_IMAGE_LIST);
mViewPager.setAdapter(new GalleryAdapter(imageList, new GalleryAdapter.OnTapListener() {
@Override
public void onTap() {
mSystemUiHelper.toggle();
}
}));
int position = getIntent().getIntExtra(EXTRA_POSITION, 0);
mViewPager.setCurrentItem(position);
mViewPager.setPageTransformer(true, new ViewPagerTransformers.Depth());
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}