//package reco.frame.tv.view;
//
//
//import reco.frame.tv.R;
//import android.content.Context;
//import android.graphics.Rect;
//import android.os.Handler;
//import android.os.Message;
//import android.util.AttributeSet;
//import android.util.Log;
//import android.view.FocusFinder;
//import android.view.KeyEvent;
//import android.view.MotionEvent;
//import android.view.VelocityTracker;
//import android.view.View;
//import android.view.ViewGroup;
//import android.widget.Scroller;
//import android.widget.Toast;
//
//public class VerticalPager extends ViewGroup {
//
// private final String TAG = "VerticalPager";
// private final int ACTION_START_SCROLL = 0;
// private boolean scollFlag, initFlag;
// private final int DELAY = 231, DURATION = 570;
// private Scroller mScroller;
// private VelocityTracker mVelocityTracker;
// private int mLastMotionY;
// public final static int PAGE_DESK = 1, PAGE_TOOL = 0, PAGE_PUSH = 2;
// private MyScrollPageChangerListener myScrollPageChangerListener;
// public int curPage, initPage;
// private int pageHeight;
// private int maxPage;
//
// private Handler handler = new Handler() {
// public void handleMessage(android.os.Message msg) {
//
// switch (msg.what) {
// case ACTION_START_SCROLL:
// int page = (Integer) msg.obj;
// if (scollFlag) {
// scollFlag = false;
// if (page > -1 && page < maxPage) {
// setCurrentPage(page);
// }
// }
//
// break;
// }
//
// };
// };
//
// public VerticalPager(Context context, AttributeSet attrs) {
// super(context, attrs);
// init(context);
// }
//
// public VerticalPager(Context context) {
// super(context);
// init(context);
// }
//
// public VerticalPager(Context context, AttributeSet attrs, int defStyle) {
// super(context, attrs, defStyle);
// init(context);
// }
//
// private void init(Context context) {
// mScroller = new Scroller(context);
// this.initFlag = true;
// this.initPage = 0;
// this.scollFlag = false;
// this.curPage = 0;
// this.pageHeight = (int) getResources().getDimension(R.dimen.px630);
//
// }
//
// @Override
// protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// int width = MeasureSpec.getSize(widthMeasureSpec);
// int height = MeasureSpec.getSize(heightMeasureSpec);
// int count = getChildCount();
// this.maxPage = count;
// for (int i = 0; i < count; i++) {
// getChildAt(i).measure(width, height);
// }
// setMeasuredDimension(width, height);
// }
//
// @Override
// protected void onLayout(boolean changed, int l, int t, int r, int b) {
// this.pageHeight = b;
// int totalHeight = -initPage * b;
// int count = getChildCount();
//
// for (int i = 0; i < count; i++) {
// View childView = getChildAt(i);
// childView.layout(l, totalHeight, r, totalHeight + b);
// totalHeight += b;
// }
//
// }
//
// public void setInitPage(int page) {
// this.initPage = page;
// this.curPage = page;
// }
//
//
// @Override
// public boolean dispatchKeyEventPreIme(KeyEvent event) {
// //Log.e(TAG, "curPage=" + curPage + "---" + scollFlag);
// if (event.getAction() == KeyEvent.ACTION_DOWN) {
//
// int direction=0;
// switch (event.getKeyCode()) {
// case KeyEvent.KEYCODE_DPAD_DOWN:
// direction=View.FOCUS_DOWN;
// break;
// case KeyEvent.KEYCODE_DPAD_RIGHT:
// direction=View.FOCUS_RIGHT;
// break;
// case KeyEvent.KEYCODE_DPAD_UP:
// direction=View.FOCUS_UP;
// break;
// case KeyEvent.KEYCODE_DPAD_LEFT:
// direction=View.FOCUS_LEFT;
// break;
// }
// View focused = findFocus();
// if (focused!=null&&direction!=0) {
// View next=focused.focusSearch(direction);
// if (next!=null) {
// String focusTagNow = focused.getTag().toString()+"";
// String focusTagNext = next.getTag().toString()+"";
// if (!"".equals(focusTagNext)
// &&!"".equals(focusTagNow)
// &&!focusTagNow.equals(focusTagNext)) {
// int nextPage=Integer.parseInt(focusTagNext);
// if (nextPage>0&& !scollFlag
// && mScroller.isFinished()) {
// // 先清除按钮动画
// scollFlag = true;
// Message msg = handler.obtainMessage();
// msg.obj = nextPage-1;
// msg.what = ACTION_START_SCROLL;
// handler.sendMessageDelayed(msg, DELAY);
// } else {
// return true;
// }
// }
// }
// }
//
//
// }
//
//
//
// return super.dispatchKeyEventPreIme(event);
// }
//
// @Override
// protected void onScrollChanged(int l, int t, int oldl, int oldt) {
// if (t > oldt) {
// this.myScrollPageChangerListener.onPageChange(curPage - 1, curPage);
// } else if (t < oldt) {
// this.myScrollPageChangerListener.onPageChange(curPage + 1, curPage);
// }
// super.onScrollChanged(l, t, oldl, oldt);
// }
//
// /**
// * 调用此方法滚动到目标位置
// *
// * @param fx
// * @param fy
// */
// public void smoothScrollTo(int fx, int fy) {
// int dx = fx - mScroller.getFinalX();
// int dy = fy - mScroller.getFinalY();
// smoothScrollBy(dx, dy);
// }
//
// /**
// * 调用此方法设置滚动的相对偏移
// *
// * @param dx
// * @param dy
// */
// public void smoothScrollBy(int dx, int dy) {
//
// // 设置mScroller的滚动偏移量
// mScroller.startScroll(mScroller.getFinalX(), mScroller.getFinalY(), dx,
// dy);
// invalidate();
// }
//
// /**
// * 跳转至指定页面
// *
// * @param page
// */
// public void setCurrentPage(int page) {
//
// if (page < 0 || page > maxPage - 1) {
// return;
// }
// if (page == curPage) {
// return;
// }
// if (page < curPage) {
// int distance=(page-curPage)*pageHeight;
// mScroller.startScroll(0, mScroller.getFinalY(), 0, distance,
// DURATION);
// } else {
// int distance=(page-curPage)*pageHeight;
// mScroller.startScroll(0, mScroller.getFinalY(), 0, distance,
// DURATION);
// }
//
//
// curPage = page;
// invalidate();
//
// }
//
// @Override
// public boolean onTouchEvent(MotionEvent event) {
//
// // if (mVelocityTracker == null) {
// // mVelocityTracker = VelocityTracker.obtain();
// // }
// // mVelocityTracker.addMovement(event);
// //
// // int action = event.getAction();
// //
// // float y = event.getY();
// //
// // switch (action) {
// // case MotionEvent.ACTION_DOWN:
// // if (!mScroller.isFinished()) {
// // mScroller.abortAnimation();
// // }
// // mLastMotionY = (int) y;
// //
// // break;
// // case MotionEvent.ACTION_MOVE:
// // int deltaY = (int) (mLastMotionY - y);
// // scrollBy(0, deltaY);
// // invalidate();
// //
// // mLastMotionY = (int) y;
// // break;
// // case MotionEvent.ACTION_UP:
// // if (mVelocityTracker != null) {
// // mVelocityTracker.recycle();
// // mVelocityTracker = null;
// // }
// // // Log.e("montion", "" +
// // // getScrollY()+"==="+getHeight()+"==="+mLastMotionY);
// // if (getScrollY() < 0) {
// // mScroller.startScroll(0, -mLastMotionY, 0, -getScrollY());
// // } else if (getScrollY() > (getHeight() * (getChildCount() - 1))) {
// // View lastView = getChildAt(getChildCount() - 1);
// // mScroller.startScroll(0, lastView.getTop() + getHeight(), 0,
// // -300);
// // } else {
// // int position = getScrollY() / getHeight();
// // int mod = getScrollY() % getHeight();
// //
// // if (mod > getHeight() / 3) {
// // View positionView = getChildAt(position + 1);
// // mScroller.startScroll(0, positionView.getTop() - 300, 0,
// // +300);
// // } else {
// // View positionView = getChildAt(position);
// // mScroller.startScroll(0, positionView.getTop() + 300, 0,
// // -300);
// // }
// //
// // }
// // invalidate();
// // break;
// // }
//
// return true;
// }
//
// @Override
// public void computeScroll() {
// super.computeScroll();
//
// // 先判断mScroller滚动是否完成
// if (mScroller.computeScrollOffset()) {
//
// // 这里调用View的scrollTo()完成实际的滚动
// scrollTo(0, mScroller.getCurrY());
// // 必须调用该方法,否则不一定能看到滚动效果
// postInvalidate();
// }
// super.computeScroll();
// }
//
// public void setPageChangeListener(MyScrollPageChangerListener myListener) {
// this.myScrollPageChangerListener = myListener;
// }
//
// public interface MyScrollPageChangerListener {
// public void onPageChange(int pageBefore, int pageCurrent);
// }
//
//}