package com.sregg.android.tv.spotifyPlayer.views;
import android.content.Context;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.sregg.android.tv.spotifyPlayer.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by simonreggiani on 15-02-04.
*/
public class NowPlayingIndicatorView extends LinearLayout {
private List<AnimationDrawable> mFrameAnimations;
private boolean mAnimationPlaying;
public NowPlayingIndicatorView(Context context) {
super(context);
init();
}
public NowPlayingIndicatorView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public NowPlayingIndicatorView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public NowPlayingIndicatorView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
private void init() {
mFrameAnimations = new ArrayList<>(3);
mAnimationPlaying = false;
setWeightSum(3);
LayoutParams params = new LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT, 1);
addPeakMeter(params, R.drawable.peak_meter_1);
addEmptySpace();
addPeakMeter(params, R.drawable.peak_meter_2);
addEmptySpace();
addPeakMeter(params, R.drawable.peak_meter_3);
}
private void addEmptySpace() {
addView(new View(getContext()), new LayoutParams(5, 0));
}
private void addPeakMeter(LayoutParams params, int drawableResId) {
ImageView peakMeterIV = new ImageView(getContext());
Drawable drawable = getResources().getDrawable(drawableResId);
drawable.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
peakMeterIV.setBackground(drawable);
addView(peakMeterIV, params);
AnimationDrawable frameAnimation = (AnimationDrawable) peakMeterIV.getBackground();
mFrameAnimations.add(frameAnimation);
}
public void stopAnimations() {
if (mFrameAnimations != null && mAnimationPlaying) {
for (AnimationDrawable frameAnimation : mFrameAnimations) {
frameAnimation.stop();
}
mAnimationPlaying = false;
}
}
public void startAnimation() {
if (mFrameAnimations != null && !mAnimationPlaying) {
for (AnimationDrawable frameAnimation : mFrameAnimations) {
frameAnimation.start();
}
mAnimationPlaying = true;
}
}
}