package io.bxbxbai.swipeplaybar;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayDeque;
import java.util.Queue;
import butterknife.ButterKnife;
/**
* PlayBar ViewPager Adapter
*
* @author bxbxbai
*/
public class PlayCtrlBarPagerAdapter extends PagerAdapter {
private static final int NUM_SONGS = 10;
private static final int ANIMATOR_DURATION = 1000 * 10;
private LayoutInflater mInflater;
private Queue<View> mReusableViews;
public PlayCtrlBarPagerAdapter(Context context) {
mInflater = LayoutInflater.from(context);
mReusableViews = new ArrayDeque<>(NUM_SONGS);
}
@Override
public int getCount() {
return NUM_SONGS;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
if (object instanceof View) {
container.removeView((View) object);
mReusableViews.add((View) object);
}
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View v = mReusableViews.poll();
if (v == null) {
v = mInflater.inflate(R.layout.layout_music, container, false);
}
bindData(v, position);
container.addView(v);
setAnimator(v);
return v;
}
private void bindData(View v, int position) {
TextView songName = ButterKnife.findById(v, R.id.tv_song_name);
songName.setText("Try - " + position);
ImageView artistImage = ButterKnife.findById(v, R.id.iv_artist_cover);
if (position % 2 == 1) {
artistImage.setImageResource(R.drawable.adele);
} else {
artistImage.setImageResource(R.drawable.bxbxbai);
}
}
@Override
public float getPageWidth(int position) {
return 1.0f;
}
public static void setAnimator(View view) {
ObjectAnimator animator = ObjectAnimator.ofFloat(view.findViewById(R.id.iv_artist_cover), "rotation", 0f, 360f);
animator.setRepeatCount(Integer.MAX_VALUE);
animator.setDuration(ANIMATOR_DURATION);
animator.setInterpolator(new LinearInterpolator());
view.setTag(R.id.tag_animator, animator);
}
}