package org.wikipedia.page.leadimages;
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.ColorInt;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.widget.FrameLayout;
import org.wikipedia.R;
import org.wikipedia.views.FaceAndColorDetectImageView;
import org.wikipedia.views.ViewUtil;
import butterknife.BindView;
import butterknife.ButterKnife;
import static org.wikipedia.util.GradientUtil.getCubicGradient;
public class PageHeaderImageView extends FrameLayout {
@BindView(R.id.view_page_header_image_image) FaceAndColorDetectImageView image;
@BindView(R.id.view_page_header_image_gradient) View gradientView;
public PageHeaderImageView(Context context) {
super(context);
init();
}
public PageHeaderImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public PageHeaderImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public PageHeaderImageView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
public void setLoadListener(@Nullable FaceAndColorDetectImageView.OnImageLoadListener listener) {
image.setOnImageLoadListener(listener);
}
public void load(@Nullable String url) {
if (TextUtils.isEmpty(url)) {
setVisibility(GONE);
} else {
setVisibility(VISIBLE);
image.loadImage(Uri.parse(url));
}
}
public void setAnimationPaused(boolean paused) {
if (image.getController() != null && image.getController().getAnimatable() != null) {
if (paused) {
image.getController().getAnimatable().stop();
} else {
image.getController().getAnimatable().start();
}
}
}
public FaceAndColorDetectImageView getImage() {
return image;
}
public void setFocusPoint(PointF focusPoint) {
image.getHierarchy().setActualImageFocusPoint(focusPoint);
}
private void init() {
setVisibility(GONE);
// Clip the Ken Burns zoom animation applied to the image.
setClipChildren(true);
inflate(getContext(), R.layout.view_page_header_image, this);
ButterKnife.bind(this);
@ColorInt int color = ContextCompat.getColor(getContext(), R.color.new_lead_gradient_start);
Drawable gradient = getCubicGradient(color, Gravity.BOTTOM);
ViewUtil.setBackgroundDrawable(gradientView, gradient);
}
}