package jianshu.io.app.card;
import android.animation.AnimatorInflater;
import android.animation.AnimatorSet;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import com.shamanland.fonticon.FontIconDrawable;
import net.tsz.afinal.FinalBitmap;
import it.gmariotti.cardslib.library.internal.Card;
import jianshu.io.app.R;
import jianshu.io.app.model.ArticleItem;
/**
* Created by Administrator on 2014/5/11.
*/
public class JianshuBaseCard extends Card {
protected FinalBitmap fb;
protected ArticleItem item;
protected static Resources resources;
protected static Drawable heartDrawable;
protected static Drawable heartEmptyDrawable;
protected static int GrayColor = -1;
protected static int JianshuColor = -1;
private AnimatorSet rightFlip;
private AnimatorSet leftFlip;
private GestureDetector mGestureDetector;
private GestureDetector.SimpleOnGestureListener mGestureListener;
public JianshuBaseCard(final Context context, ArticleItem item, FinalBitmap fb, int layoutId) {
super(context, layoutId);
rightFlip = (AnimatorSet) AnimatorInflater.loadAnimator(context, R.anim.card_flip_right);
leftFlip = (AnimatorSet) AnimatorInflater.loadAnimator(context, R.anim.card_flip_left);
this.item = item;
this.fb = fb;
if(JianshuBaseCard.resources == null) {
JianshuBaseCard.resources = context.getResources();
}
if(JianshuBaseCard.heartDrawable == null) {
JianshuBaseCard.heartDrawable = FontIconDrawable.inflate(JianshuBaseCard.resources, R.xml.fa_heart);
}
if(JianshuBaseCard.heartEmptyDrawable == null) {
JianshuBaseCard.heartEmptyDrawable = FontIconDrawable.inflate(JianshuBaseCard.resources, R.xml.fa_heart_o);
}
if(JianshuBaseCard.GrayColor == -1) {
JianshuBaseCard.GrayColor = JianshuBaseCard.resources.getColor(R.color.textGray);
}
if(JianshuBaseCard.JianshuColor == -1) {
JianshuBaseCard.JianshuColor = JianshuBaseCard.resources.getColor(R.color.jianshu);
}
}
public ArticleItem getItem() {
return this.item;
}
@Override
public void setupInnerViewElements(ViewGroup parent, View view) {
super.setupInnerViewElements(parent, view);
final View parentView = (View) parent.getParent();
rightFlip.setTarget(parentView);
leftFlip.setTarget(parentView);
mGestureListener = new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
int width = parentView.getWidth();
float x = e.getX();
boolean isPressingRight = x >= width / 2;
if(isPressingRight) {
leftFlip.start();
} else {
rightFlip.start();
}
return false;
}
};
mGestureDetector = new GestureDetector(getContext(), mGestureListener);
//注意不是绑定到parentView上
parent.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
}
});
}
}