cc

来源:互联网 发布:双十一数据直播 编辑:程序博客网 时间:2024/04/25 13:27
1 package com.meityitian.app.views;
2
3 import android.content.Context;
4 import android.support.v4.view.ViewPager;
5 import android.util.AttributeSet;
6 import android.util.Log;
7
8 import com.meityitian.app.utils.Debug;
9
10 /**
11 * 重写,添加了判定滑动方向的方法
12 * @author zxy
13 *
14 */
15 public class meityitianViewPager extends ViewPager {
16 private boolean left = false;
17 private boolean right = false;
18 private boolean isScrolling = false;
19 private int lastValue = -1;
20 private ChangeViewCallback changeViewCallback = null;
21
22 public meityitianViewPager(Context context, AttributeSet attrs) {
23 super(context, attrs);
24 init();
25 }
26
27 public meityitianViewPager(Context context) {
28 super(context);
29 init();
30 }
31
32 /**
33 * init method .
34 */
35 private void init() {
36 setOnPageChangeListener(listener);
37 }
38
39 /**
40 * listener ,to get move direction .
41 */
42 public OnPageChangeListener listener = new OnPageChangeListener() {
43 @Override
44 public void onPageScrollStateChanged(int arg0) {
45 if (arg0 == 1) {
46 isScrolling = true;
47 } else {
48 isScrolling = false;
49 }
50
51 Debug.infoByTag("meityitianViewPager",
52 "meityitianViewPager onPageScrollStateChanged : arg0:"
53 + arg0);
54 if (arg0 == 2) {
55 Debug.infoByTag("meityitianViewPager",
56 "meityitianViewPager onPageScrollStateChanged direction left ? "
57 + left);
58 Debug.infoByTag("meityitianViewPager",
59 "meityitianViewPager onPageScrollStateChanged direction right ? "
60 + right);
61 //notify ....
62 if(changeViewCallback!=null){
63 changeViewCallback.changeView(left, right);
64 }
65 right = left = false;
66 }
67
68 }
69
70 @Override
71 public void onPageScrolled(int arg0, float arg1, int arg2) {
72 if (isScrolling) {
73 if (lastValue > arg2) {
74 // 递减,向右侧滑动
75 right = true;
76 left = false;
77 } else if (lastValue < arg2) {
78 // 递减,向右侧滑动
79 right = false;
80 left = true;
81 } else if (lastValue == arg2) {
82 right = left = false;
83 }
84 }
85 Log.i("meityitianViewPager",
86 "meityitianViewPager onPageScrolled last :arg2 ,"
87 + lastValue + ":" + arg2);
88 lastValue = arg2;
89 }
90
91 @Override
92 public void onPageSelected(int arg0) {
93 if(changeViewCallback!=null){
94 changeViewCallback.getCurrentPageIndex(arg0);
95 }
96 }
97 };
98
99 /**
100 * 得到是否向右侧滑动
101 * @return true 为右滑动
102 */
103 public boolean getMoveRight(){
104 return right;
105 }
106
107 /**
108 * 得到是否向左侧滑动
109 * @return true 为左做滑动
110 */
111 public boolean getMoveLeft(){
112 return left;
113 }
114
115 /**
116 * 滑动状态改变回调
117 * @author zxy
118 *
119 */
120 public interface ChangeViewCallback{
121 /**
122 * 切换视图 ?决定于left和right 。
123 * @param left
124 * @param right
125 */
126 public void changeView(boolean left,boolean right);
127 public void getCurrentPageIndex(int index);
128 }
129
130 /**
131 * set ...
132 * @param callback
133 */
134 public void setChangeViewCallback(ChangeViewCallback callback){
135 changeViewCallback = callback;
136 }
137 }
0 0
原创粉丝点击