package com.com.mr_wrong.Scroller;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.animation.BounceInterpolator;
import android.widget.OverScroller;
import android.widget.TextView;
/**
* Created by Mr_Wrong on 2015/5/14.
*/
public class JellyTextView extends TextView {
private OverScroller mScroller;
private float startX, startY;
private float lastX, lastY;
public JellyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
mScroller = new OverScroller(getContext(), new BounceInterpolator());
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
startX = getX();
startY = getY();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = event.getRawX();
lastY = event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
float disx = event.getRawX() - lastX;
float disy = event.getRawY() - lastY;
disx = Math.abs(disx)>getWidth()/2?getWidth()/2:disx;
offsetLeftAndRight((int) disx);
// offsetTopAndBottom((int) disy);
lastX = event.getRawX();
lastY = event.getRawY();
break;
case MotionEvent.ACTION_UP:
// mScroller.startScroll((int) getX(), (int) getY(), -(int) (getX() - startX), -(int) (getY() - startY));
invalidate();
break;
}
return super.onTouchEvent(event);
}
@Override
public void computeScroll() {
if (mScroller.computeScrollOffset()) {
setX(mScroller.getCurrX());
setY(mScroller.getCurrY());
invalidate();
}
super.computeScroll();
}
public void spingBack() {
if (mScroller.springBack((int) getX(), (int) getY(), 50, 100, 0, (int) getY() - 100)) {
invalidate();
}
}
}