package com.florianmski.tracktoid.ui.activities;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import com.florianmski.tracktoid.utils.ColorFilterHelper;
import com.florianmski.tracktoid.R;
import com.florianmski.tracktoid.TraktoidConstants;
import com.florianmski.tracktoid.TraktoidTheme;
import com.florianmski.tracktoid.utils.Utils;
import com.florianmski.tracktoid.ui.fragments.base.list.ItemScrollFragment;
import com.florianmski.tracktoid.ui.widgets.TraktImageView;
import com.squareup.picasso.Picasso;
public abstract class HeaderActivity extends TranslucentActivity
{
protected TraktImageView tivFanart;
private ColorDrawable actionBarBackground;
private final ColorFilterHelper cfh = new ColorFilterHelper();
@Override
protected int getContentViewId()
{
return R.layout.activity_header;
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Bundle activityBundle = getIntent().getExtras();
String header = activityBundle.getString(TraktoidConstants.BUNDLE_HEADER);
tivFanart = (TraktImageView) findViewById(R.id.tivFanart);
int color = Utils.getColorFromAttribute(this, R.attr.colorPrimary);
Picasso.with(this)
.load(header)
.placeholder(new ColorDrawable(color))
.into(tivFanart);
}
public void setGroupView(final ItemScrollFragment fragment, final int deltaPoster)
{
tivFanart.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
tivFanart.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int paddingTop = tivFanart.getHeight() - deltaPoster;
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
// if fanart take more than 1/2 of the screen, put the groupView on the fanart halfway
if(tivFanart.getHeight() > (metrics.heightPixels)/2)
paddingTop -= (tivFanart.getHeight()/2);
ViewGroup viewGroup = fragment.getGroupView();
fragment.setGroupViewPadding(viewGroup.getPaddingLeft(),
paddingTop,
viewGroup.getPaddingRight(),
viewGroup.getPaddingBottom());
}
});
}
public void onScrollChanged(ViewGroup viewGroup, int t)
{
int height = viewGroup.getPaddingTop();
// 0 when not translated
// 1 when scrollView hit the top
float percentTranslated = Utils.linearConversion(t, 0, height, 0, 1);
// translate fanart
tivFanart.setTranslationY(-t * 0.5f);
// update fanart saturation
cfh.update(tivFanart, 1 - percentTranslated);
setActionBarAppearance(percentTranslated);
}
private void setActionBarAppearance(float percentTranslated)
{
int alpha = (int) (percentTranslated * 255);
// make action bar bg and text visible
actionBarBackground.setAlpha(alpha);
int color = Color.argb(alpha, 255, 255, 255);
getToolbar().setTitleTextColor(color);
getToolbar().setSubtitleTextColor(color);
}
@Override
public void setTheme(TraktoidTheme theme)
{
super.setTheme(theme);
// default actionbar appearance without scrolling
actionBarBackground = new ColorDrawable(theme.getColor(this));
getSupportActionBar().setBackgroundDrawable(actionBarBackground);
setActionBarAppearance(0);
}
}