我正在尝试以编程方式触发视图中的滑动。还有其他问题的答案,但他们没有为我工作。我还看到一些comments表示程序化的拖动/滚动因安全原因被禁用,这是真的吗?我很想找到一个明确的答案。
我尝试了以下方法,poster显示通过视频工作,所以它应该工作!我的AndroidManifest有什么需要吗?我也尝试过scrollBy() API,但不会滚动我的内容,而是将内容移到屏幕外。
更重要的是,我已经在我的视图中注册了一个OnTouchListener,并看到下面的代码复制了相同的事件触发格式(ACTION_DOWN,ACTION_MOVE,ACTION_UP)t,点击+拖动,鼠标滚轮,但点击+拖动和鼠标滚轮在程序滚动/滑动时不起作用。
final Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
final MotionEvent event = MotionEvent.obtain(System.currentTimeMillis(), System.currentTimeMillis(), MotionEvent.ACTION_DOWN, 500, 700, 0);
dispatchTouchEvent(event);
event.recycle();
}
});
handler.postDelayed(new Runnable() {
@Override
public void run() {
final MotionEvent event = MotionEvent.obtain(System.currentTimeMillis(), System.currentTimeMillis(), MotionEvent.ACTION_MOVE, 500, 700 ,0);
dispatchTouchEvent(event);
event.recycle();
}
}, 50);
handler.postDelayed(new Runnable() {
@Override
public void run() {
final MotionEvent event = MotionEvent.obtain(System.currentTimeMillis(), System.currentTimeMillis(), MotionEvent.ACTION_MOVE, 500 ,700 + 400, 0);
dispatchTouchEvent(event);
event.recycle();
}
}, 100);
handler.postDelayed(new Runnable() {
@Override
public void run() {
final MotionEvent event = MotionEvent.obtain(System.currentTimeMillis(), System.currentTimeMillis(), MotionEvent.ACTION_UP, 500, 700 + 400, 0);
dispatchTouchEvent(event);
event.recycle();
}
}, 1000);