先说说整体的思路:
思路梳理:
页面加载完成后,通过 ScheduledExecutorService 执行定时操作,每隔一定时间让
webView执行 WebView.scrollTo(0,height);
同时获取网页的总高度, height叠加最后的高度 >= 网页的总高度 表示执行到最底部,进行切换网页操作
注意:除了使用ScheduledExecutorService 还可以用谁来实现? 没错 Handler
联想另一个需求: 常见的共享汽车App,实时获取行驶的里程,距离、剩余电量.....没错,轮询.
上菜:
/**
*
* 借助一个定时器 来完成需求
* Timer 与 ScheduledExecutorService 实现定时器的效果
* 通过定时器 来完成 每50毫秒钟执行滚动操作
* 经过指定的时间后,执行所指定的任务
* scheduleAtFixedRate(command, initialDelay, period, unit)
* command 所要执行的任务
* initialDelay 第一次启动时 延迟启动时间
* period 每间隔多次时间来重新启动任务
* unit 时间单位
*
*/
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// 页面总高度
totalContentHeight = mWebView.mComputeVerticalScrollRange()-mWebView.getHeight();
runOnUiThread(new Runnable() {
@Override
public void run() {
currHeight += 2; // 每次滚动2
if(scheduledExecutorService.isShutdown()){
// 开启定时任务
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
}
scheduledExecutorService.scheduleAtFixedRate(new ViewScrollTask(), 1, 10, TimeUnit.MILLISECONDS);
mWebView.scrollTo(0,currHeight);
}
});
}
// 用来完成当前高度已2的速度递增的任务
private class ViewScrollTaskimplements Runnable {
public void run() {
// 增加指定的滚动值
currHeight += 2; // 每次滚动2
// Handler来实现图片切换
mHandler.obtainMessage().sendToTarget();
}
}
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
Log.e("name","### handleMessage totalContentHeight: "+totalContentHeight+" currHeight: "+currHeight);
try {
if(totalContentHeight < currHeight){
Log.e("name","当前高度等于总高度,切换网址");
scheduledExecutorService.shutdown();
currHeight = 0;
loadSite(position);
position++;
if (position >= list.size()) {
position = 0;
}
}else{
Log.e("name","当前高度不等于总高度,继续向下滚动");
mWebView.scrollTo(0,currHeight);
}
} catch (Exception e) {
e.printStackTrace();
}
};
};
@Override
protected void onStop() {
super.onStop();
// 停止定时任务
scheduledExecutorService.shutdown();
}
(技术)书接上篇—实现领导的需求:让网页自动滚动(从顶部滚动到底部)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...