package com.owen.tvrecyclerview.example.tablayout;
import android.content.Context;
import android.support.annotation.FloatRange;
import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.view.ViewPropertyAnimator;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
/**
* Created by owen on 16/8/30.
*/
public class TvTabLayout extends TabLayout {
private static final String LOGTAG = TvTabLayout.class.getSimpleName();
private float mScaleValue = 1f;
public TvTabLayout(Context context) {
this(context, null);
}
public TvTabLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public TvTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void setScaleValue(@FloatRange(from = 1.0) float value) {
mScaleValue = value;
}
@Override
protected void onTabSelected(@NonNull Tab tab) {
ViewPropertyAnimator animator = tab.getView().animate();
if(mScaleValue > 1) {
animator.scaleX(mScaleValue).scaleY(mScaleValue)
.setDuration(500)
.start();
return;
}
animator.scaleX(1.2f).scaleY(1.2f)
.translationY((getHeight() - tab.getView().getHeight()) / 2)
.setInterpolator(new AccelerateDecelerateInterpolator())
.setDuration(700)
.start();
}
@Override
protected void onTabUnselected(@NonNull Tab tab) {
ViewPropertyAnimator animator = tab.getView().animate();
if(mScaleValue > 1) {
animator.scaleX(1).scaleY(1)
.setDuration(500)
.start();
return;
}
animator.scaleX(1f).scaleY(1f)
.translationY(0)
.setInterpolator(new DecelerateInterpolator())
.setDuration(500)
.start();
}
}