package jianshu.io.app.card; import android.animation.AnimatorInflater; import android.animation.AnimatorSet; import android.app.Activity; import android.content.Context; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import net.tsz.afinal.FinalBitmap; import it.gmariotti.cardslib.library.internal.Card; import jianshu.io.app.R; import jianshu.io.app.model.UpdateItem; /** * Created by Administrator on 2014/6/3. */ public abstract class TimeStreamCard extends Card { protected FinalBitmap mFb; protected UpdateItem mItem; protected ImageView mAvatar; protected TextView mTime; private AnimatorSet rightFlip; private AnimatorSet leftFlip; private GestureDetector mGestureDetector; private GestureDetector.SimpleOnGestureListener mGestureListener; public TimeStreamCard(Context context, UpdateItem item, FinalBitmap fb, int innerLayout) { super(context, innerLayout); mItem = item; mFb = fb; rightFlip = (AnimatorSet) AnimatorInflater.loadAnimator(context, R.anim.card_flip_right); leftFlip = (AnimatorSet) AnimatorInflater.loadAnimator(context, R.anim.card_flip_left); } @Override public void setupInnerViewElements(ViewGroup parent, View view) { super.setupInnerViewElements(parent, view); View temp = view.findViewById(R.id.timestream_avatar); if (temp != null) { mAvatar = (ImageView) temp; if (mItem.getAvatarUrl() != null) { mFb.display(mAvatar, mItem.getAvatarUrl()); } } mTime = (TextView) view.findViewById(R.id.timestream_time); mTime.setText(mItem.getTime()); 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); } }); } public void onClick(Activity activity) { } }