我正在尝试检测ScrollView何时完成滚动,以便稍微修改其位置.在我使用ACTION_UP检测用户何时举起手指之前,我意识到这不允许我使用“投掷”,因为它会在完成之前修改滚动.
有没有办法检测ScrollView何时完成滚动?或者像ListView一样检测它的滚动状态?
关于如何实现这个的任何其他想法?
谢谢.
最佳答案
我实施了一个基于Jourbac评论的解决方案.
原文链接:https://www.f2er.com/android/430283.html问候
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ScrollView;
public class MyScrollView extends ScrollView {
private static final int WHAT = 1;
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(!hasMessages(WHAT)) {
Log.i("TestScroll","Last msg!. Position from "
+ msg.arg1 + " to " + msg.arg2);
}
}
}
private Handler mHandler = new MyHandler();
public MyScrollView(Context context) {
super(context);
}
public MyScrollView(Context context,AttributeSet attrs) {
super(context,attrs);
}
public MyScrollView(Context context,AttributeSet attrs,int defStyle) {
super(context,attrs,defStyle);
}
@Override
protected void onScrollChanged(int l,int t,int oldl,int oldt) {
super.onScrollChanged(l,t,oldl,oldt);
final Message msg = Message.obtain();
msg.arg1 = oldt;
msg.arg2 = t;
msg.what = WHAT;
mHandler.sendMessageDelayed(msg,500);
}
}