package org.cuieney.videolife.ui.adapter;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.support.v4.view.PagerAdapter;
import android.support.v7.graphics.Palette;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import org.cuieney.videolife.R;
import org.cuieney.videolife.common.image.ImageLoader;
import org.cuieney.videolife.common.utils.LogUtil;
import org.cuieney.videolife.entity.wyBean.TracksBean;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Observable;
/**
* Created by cuieney on 16/6/13.
*/
public class CoverFlowAdapter extends PagerAdapter {
private List<TracksBean> list;
private LayoutInflater inflater;
public Context context;
private List<WeakReference<View>> viewList;
public CoverFlowAdapter(List<TracksBean> list, Context context) {
this.list = list;
this.context = context;
this.inflater = LayoutInflater.from(context);
viewList = new ArrayList<WeakReference<View>>();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = null;
// 从废弃的里去取 取到则使用 取不到则创建
if (viewList.size() > 0) {
if (viewList.get(0) != null) {
view = initView(viewList.get(0).get(), position);
viewList.remove(0);
}
}
view = initView(null, position);
container.addView(view);
return view;
}
private View initView(View view, int position) {
MyHolder holder = null;
if (view == null) {
view = inflater.inflate(R.layout.play_music_item, null);
holder = new MyHolder(view);
view.setTag(holder);
} else {
holder = (MyHolder) view.getTag();
}
/**
* 初始化数据
*/
if (list != null && position < list.size()) {
TracksBean musicPlayerItem = list.get(position);
ImageLoader.loadAll(context, musicPlayerItem.getSongphoto(), holder.bgImage);
initColor(holder, musicPlayerItem);
}
return view;
}
int color = 0xffffcc00;
private void initColor(MyHolder holder, TracksBean tracksBean) {
Glide.with(context).load(tracksBean.getSongphoto())
.asBitmap()
.override(300, 300)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
Palette.from(resource).generate(palette -> {
try {
color = palette.getLightMutedSwatch().getRgb();
} catch (Exception e) {
LogUtil.d(e.getMessage());
}
holder.container.setBackgroundColor(color);
});
}
});
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
if (object instanceof View) {
View view = (View) object;
container.removeView(view);
viewList.add(new WeakReference<View>(view));
}
}
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return (view == object);
}
public static final class MyHolder implements View.OnClickListener {
public final ImageView bgImage;
public final ImageView collection;
public final ImageView download;
public final ImageView share;
public final LinearLayout container;
public View view;
public MyHolder(View itemView) {
view = itemView;
bgImage = ((ImageView) findViewById(R.id.cover_img));
collection = ((ImageView) findViewById(R.id.collect_icon));
download = ((ImageView) findViewById(R.id.download_icon));
share = ((ImageView) findViewById(R.id.share_icon));
container = ((LinearLayout) findViewById(R.id.container));
// collection.setOnClickListener(this);
}
public View findViewById(int id) {
return view.findViewById(id);
}
@Override
public void onClick(View v) {
int positon = (int) v.getTag();
}
}
}