最近项目中要求实现加载网络图片,当图片长度超过屏幕时,实现图片自动滚动,记录一下,代码如下:
img.postDelayed(runnable,3000);// 项目中要求是3秒后图片再滚动
// 如果想图片加载完就滚动
// img.post(runnable);
Runnable runnable = new Runnable() { @Override public void run() { int off = scrollView.getHeight() - img.getHeight() if (off > 0) { DuLog.i(TAG, "off 大于0"); } else { DuLog.i(TAG, "off 小于0"); scrollView.scrollBy(0, 5);//这里设置每次滚动多少px if (scrollView.getScrollY() == Math.abs(off)) { // 滚动结束 DuLog.i(TAG, "stop scroll"); // Thread.currentThread().interrupt();这里记录一下,这点代码是copy别人的,原主人留了个坑,图片滚动完之后 // 这里打断线程,因为handler是在主线程中,退出这个界面就导致了ANR,找半天原因,注意一下!!!! handler.postDelayed(new Runnable() { // 本项目中要求滚动结束后2秒自动滚动到顶部,无法理解pm的大脑构造 @Override public void run() { scrollView.scrollTo(0, 0); } }, 2000); } else { DuLog.i(TAG, "scroll total" + scrollView.getScrollY()); handler.postDelayed(this, 10);// 设置滚动速度,这里是10毫秒 } } } };