我试图检查我的用户何时停止滚动。
对此我使用这种方法:
commentsLayout.setScrollViewListener(new ScrollViewListener() {
@Override
public void onScrollChanged(WallScrollView scrollView, int x, int y,
int oldx, int oldy) {
// TODO Auto-generated method stub
oldCommentsYDiefference = oldy;
commentsYDiefference = y;
//do something
}
我注意到当用户停止滚动时,oldCommentsYDiefference
和commentsYDiefference
之间的差异始终为1.
因此,为了检查我的用户何时停止滚动我想到创建一个线程,通过使用此代码检查这两个数字的差异是1:
public void checkFromScrolling()
{
new Thread(new Runnable() {
@Override
public void run() {
Log.i("commentsYDiefference", commentsYDiefference+"");
Log.i("oldCommentsYDiefference", oldCommentsYDiefference+"");
if(commentsYDiefference - oldCommentsYDiefference == 1 || oldCommentsYDiefference - commentsYDiefference == 1)
{
if(checkWallScroll)
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//do things
oldCommentsYDiefference = commentsYDiefference;
checkWallScroll = true;
}
}, 2000);
checkWallScroll = false;
}
}
}).start();
}
我在onCreate中打电话给checkFromScrolling()
。
我的问题是Runnable只运行一次而不是一直运行。 我知道这是因为我的日志报告中只有一个电话
Log.i("commentsYDiefference", commentsYDiefference+"");
Log.i("oldCommentsYDiefference", oldCommentsYDiefference+"");
如何在活动打开时让Runnable一直运行?
答案 0 :(得分:0)
您可以添加一个while循环检查布尔变量(keepRunning)是否为true。然后,您必须在活动结束前将其设置为false。