package ren.solid.ganhuoio.module.home.provider;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.graphics.Color;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import me.drakeet.multitype.ItemViewProvider;
import ren.solid.ganhuoio.R;
import ren.solid.ganhuoio.bean.Daily;
import ren.solid.ganhuoio.module.home.activity.DailyActivity;
import ren.solid.library.imageloader.ImageLoader;
import ren.solid.library.utils.DateUtils;
/**
* Created by _SOLID
* GitHub:https://github.com/burgessjp
* Date:2017/3/12
* Time:16:00
* Desc:
*/
public class DailyViewProvider
extends ItemViewProvider<Daily, DailyViewProvider.ViewHolder> {
@NonNull
@Override
protected ViewHolder onCreateViewHolder(
@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) {
View root = inflater.inflate(R.layout.item_daily, parent, false);
return new ViewHolder(root);
}
@Override
protected void onBindViewHolder(@NonNull final ViewHolder holder, @NonNull final Daily daily) {
boolean isToday = DateUtils.isToday(DateUtils.parseDate(daily.getDate()));
String showDate = isToday ? "#今日推荐" : "#" + daily.getDate();
ImageLoader.displayImage(holder.iv_img, daily.getImgUrl());
holder.iv_img.setColorFilter(Color.parseColor("#5e000000"));
holder.tv_date.setText(showDate);
holder.tv_desc.setText(daily.getTitle().replace("今日力推:", ""));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DailyActivity.start((Activity) v.getContext(), v, daily.getTitle(), daily.getDate(), daily.getImgUrl());
}
});
holder.itemView.setOnTouchListener(new OnTapListener(holder));
}
static class ViewHolder extends RecyclerView.ViewHolder {
ImageView iv_img;
TextView tv_date;
TextView tv_desc;
ViewHolder(View itemView) {
super(itemView);
iv_img = (ImageView) itemView.findViewById(R.id.iv_img);
tv_date = (TextView) itemView.findViewById(R.id.tv_date);
tv_desc = (TextView) itemView.findViewById(R.id.tv_desc);
}
}
static class OnTapListener implements View.OnTouchListener {
ViewHolder holder;
public OnTapListener(ViewHolder holder) {
this.holder = holder;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
holder.iv_img.setColorFilter(null);
hide(holder.tv_date);
hide(holder.tv_desc);
View parent = (View) holder.itemView.getParent();
if (parent != null)
parent.setOnTouchListener(this);
break;
case MotionEvent.ACTION_UP:
holder.iv_img.setColorFilter(Color.parseColor("#5e000000"));
show(holder.tv_date);
show(holder.tv_desc);
break;
}
return false;
}
void show(View v) {
ObjectAnimator alpha = ObjectAnimator.ofFloat(v, "alpha", 0, 1);
alpha.setDuration(300);
alpha.start();
}
void hide(View v) {
ObjectAnimator alpha = ObjectAnimator.ofFloat(v, "alpha", 1, 0);
alpha.setDuration(300);
alpha.start();
}
}
}