package com.stfalcon.frescoimageviewersample.features.demo.styled;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.generic.RoundingParams;
import com.stfalcon.frescoimageviewer.ImageViewer;
import com.stfalcon.frescoimageviewersample.R;
import com.stfalcon.frescoimageviewersample.common.views.ImageOverlayView;
import com.stfalcon.frescoimageviewersample.features.demo.DemoActivity;
import com.stfalcon.frescoimageviewersample.utils.AppUtils;
import com.stfalcon.frescoimageviewersample.utils.StylingOptions;
import java.util.Random;
import jp.wasabeef.fresco.processors.GrayscalePostprocessor;
/*
* Created by troy379 on 06.03.17.
*/
public class StyledViewActivity extends DemoActivity {
private ImageOverlayView overlayView;
private StylingOptions options;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
options = new StylingOptions();
AppUtils.showGotItSnackbar(findViewById(R.id.coordinator),
R.string.message_styling);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.styling_options_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
options.showDialog(this);
return super.onOptionsItemSelected(item);
}
@Override
protected void showPicker(int startPosition) {
ImageViewer.Builder builder = new ImageViewer.Builder<>(this, posters)
.setStartPosition(startPosition)
.setOnDismissListener(getDismissListener());
builder.hideStatusBar(options.get(StylingOptions.Property.HIDE_STATUS_BAR));
if (options.get(StylingOptions.Property.IMAGE_MARGIN)) {
builder.setImageMargin(this, R.dimen.image_margin);
}
if (options.get(StylingOptions.Property.CONTAINER_PADDING)) {
builder.setContainerPadding(this, R.dimen.image_margin);
}
if (options.get(StylingOptions.Property.IMAGES_ROUNDING)) {
builder.setCustomDraweeHierarchyBuilder(getRoundedHierarchyBuilder());
}
builder.allowSwipeToDismiss(options.get(StylingOptions.Property.SWIPE_TO_DISMISS));
builder.allowZooming(options.get(StylingOptions.Property.ZOOMING));
if (options.get(StylingOptions.Property.SHOW_OVERLAY)) {
overlayView = new ImageOverlayView(this);
builder.setOverlayView(overlayView);
builder.setImageChangeListener(getImageChangeListener());
}
if (options.get(StylingOptions.Property.RANDOM_BACKGROUND)) {
builder.setBackgroundColor(getRandomColor());
}
if (options.get(StylingOptions.Property.POST_PROCESSING)) {
builder.setCustomImageRequestBuilder(
ImageViewer.createImageRequestBuilder()
.setPostprocessor(new GrayscalePostprocessor()));
}
builder.show();
}
private ImageViewer.OnImageChangeListener getImageChangeListener() {
return new ImageViewer.OnImageChangeListener() {
@Override
public void onImageChange(int position) {
String url = posters[position];
overlayView.setShareText(url);
overlayView.setDescription(descriptions[position]);
}
};
}
private ImageViewer.OnDismissListener getDismissListener() {
return new ImageViewer.OnDismissListener() {
@Override
public void onDismiss() {
AppUtils.showInfoSnackbar(findViewById(R.id.coordinator),
R.string.message_on_dismiss, false);
}
};
}
private GenericDraweeHierarchyBuilder getRoundedHierarchyBuilder() {
RoundingParams roundingParams = new RoundingParams();
roundingParams.setRoundAsCircle(true);
return GenericDraweeHierarchyBuilder.newInstance(getResources())
.setRoundingParams(roundingParams);
}
private int getRandomColor() {
Random random = new Random();
return Color.argb(255, random.nextInt(156), random.nextInt(156), random.nextInt(156));
}
}