界面上有2个ScrollLayout,分别在左跟右.当我滚动左边的ScrollView,右边的ScrollView也要滚动,要跟左边的保持一致.我用左边的ScrollView.getScrollY()来设置右边ScrollView的坐标,慢慢滚是可以同步,但是快滚就出问题了,也就是我手指离开了屏幕,左边ScrollView还会有点滚动,但是这个时候就没办法更新右边的ScrollView坐标了.请前辈们帮忙给点思路,这只是问题,原本项目不像这样简单.欢迎大家来讨论下,感激不尽.分实在少,请大家见谅.
float velocityY) {
// TODO Auto-generated method stub
// 参数解释:
// e1:第1个ACTION_DOWN MotionEvent
// e2:最后一个ACTION_MOVE MotionEvent
// velocityX:X轴上的移动速度,像素/秒
// velocityY:Y轴上的移动速度,像素/秒
你把velocityX 和 velocityY 做下限制么,不超过多少速度,过快之后不响应就完了
这只是个思路,我还没碰到过这样的问题
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// 参数解释:
// e1:第1个ACTION_DOWN MotionEvent
// e2:最后一个ACTION_MOVE MotionEvent
// velocityX:X轴上的移动速度,像素/秒
// velocityY:Y轴上的移动速度,像素/秒
// 触发条件 :
// X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒
if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE
&& Math.abs(velocityX) > FLING_MIN_VELOCITY) {
// Fling left 你把上面的条件换了,自己设定个滑动的最小值和最大值,自己试试,合适了为止
} else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE
&& Math.abs(velocityX) > FLING_MIN_VELOCITY) {
// Fling right
}
return false;
}
不过这个需求有点象 SeekBar 的原理,嗯,或许可以从这个上面有点什么想法
这个我之前也想过,这样就有一个问题ScrollView1,ScrollView2,ScrollView3上下滚动时候 ScrollView1,ScrollView2 一起上下滚 ScrollView3不动左右滚动时候 ScrollView2,ScrollView3 一起左右滚 ScrollView1不动能解决这个问题吗?
当然别忘了在LAYOUT的XML文件中,对应的SCROLLVIEW,换成自己重写的这个类.
把你要控制的VIEW SET进来?
不明白什么意思怎么做? 能不能共享demo?
//这个解决了上下和左右同时滚动时的scrollview的两两同步
/**自己重写一个类,继承SCROLLVIEW,重写ONSCROLLCHANGED方法,把你要控制的VIEW SET进来,然后,在ONSCROLLCHANGED方法中,设置该VIEW的SCROLLTO,ONSCROLLCHANGED方法中有四个参数,第二个是纵坐标"t",设置到scrollTo(0,t)中,这样,就可以实现了.
当然别忘了在LAYOUT的XML文件中,对应的SCROLLVIEW,换成自己重写的这个类.
*/
public class SyncScrollView extends ScrollView{ private static final String TAG = "SyncScrollView";
View mView;
public SyncScrollView(Context context) {
super(context);
}
public SyncScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
} public SyncScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
} protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if(mView!=null){
mView.scrollTo(l, t);
}
} public void setScrollView(View view){
mView = view;
}
}//这个继承类的内容同上
public class SyncHorizontalScrollView extends HorizontalScrollView