package com.example.many_page_look;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v7.app.ActionBarActivity;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import android.widget.Toast;
/**
* webview实现网页轮播
*/
public class MainActivity extends ActionBarActivity {
private List<ImageView> imageViewList;
private List<WebView> webViewList;
private List<View> dotList;
private int prePosition;
private int curPosition;
private ViewPager imageViewPager;
private ViewPagerAdapter1 imageViewPagerAdapter1;
private ScheduledExecutorService scheduledExecutorService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏
setContentView(R.layout.activity_main);
initView();
imageViewPagerAdapter1 = new ViewPagerAdapter1();
imageViewPager.setAdapter(imageViewPagerAdapter1);
imageViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
prePosition = position;
curPosition = position;
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
@Override
public void onStart(){
super.onStart();
//创建大小为1的固定线程池
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
//使得ScollImageTask()每隔两秒执行一次
scheduledExecutorService.scheduleWithFixedDelay(new ScollImageTask(), 10, 10, TimeUnit.SECONDS);
}
Handler hander = new Handler(){
@Override
public void handleMessage(Message msg)
{
imageViewPager.setCurrentItem(curPosition);
}
};
private void initView() {
// TODO Auto-generated method stub
webViewList = new ArrayList<WebView>();
webViewList.add(CreateWebView("http://172.16.4.85:3000/playlists/play/vPVyxpMVk?kiosk=tv&autofitpanels"));
webViewList.add(CreateWebView("http://172.16.3.46:3000/d/hJM8KmCGz/smdzhuang-dai-kan-ban-p3-tian-zheng-zhuang-dai-ji-p1-p2?orgId=1"));
// http://172.16.4.85:3000/playlists/play/vPVyxpMVk?kiosk=tv&autofitpanels
// webViewList.add(CreateWebView("http://172.16.3.46:3000/d/E--D0iGMz/ldian-fen?orgId=1&refresh=10s"));
// webViewList.add(CreateWebView("http://172.16.3.46:3000/d/dhFF5k_Gk/lfeng-jiao-ji-tai-wen-du-cai-ji-p2?orgId=1"));
// webViewList.add(CreateWebView("http://172.16.3.46:3000/d/Cv9JISfMk/lfeng-jiao-kan-ban?orgId=1&refresh=10s"));
dotList = new ArrayList<View>();
dotList.add(findViewById(R.id.dot_0));
dotList.add(findViewById(R.id.dot_1));
// dotList.add(findViewById(R.id.dot_2));
// dotList.add(findViewById(R.id.dot_3));
// dotList.add(findViewById(R.id.dot_4));
imageViewPager = (ViewPager) findViewById(R.id.imageViewPager);
}
private WebView CreateWebView(String url){
WebView webView = new WebView(this);
//Android webView加载Html5页面,JS不能调用问题和click事件无效的解决方法
WebSettings s = webView.getSettings();
s.setBuiltInZoomControls(true); //进行控制缩放
// 让webview只显示一列,也就是自适应页面大小 不能左右滑动,但在使用中发现,只针对4.4以下有效
s.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
s.setUseWideViewPort(true); //让Webivew支持标签的viewport属性,前端html页面适配屏幕一般都会用到这个设置
s.setLoadWithOverviewMode(true); 缩放至屏幕的大小
s.setSavePassword(true); //是否保存密码
s.setSaveFormData(true); //设置WebView是否保存表单数据,默认true,保存数据
s.setJavaScriptEnabled(true); // enable navigator.geolocation 允许支持js
// webView.addJavascriptInterface(new AndroidAndJSInterface(),"Android"); //设置支持js调用java
s.setJavaScriptCanOpenWindowsAutomatically(true);//设置脚本是否允许自动打开弹窗,默认false,不允许
s.setGeolocationEnabled(true); //定位是否可用,默认为true
//可以在数据库中存储历史位置和Web初始权限
// s.setGeolocationDatabasePath("/data/data/org.itri.html5webview/databases/"); // enable Web Storage: localStorage, sessionStorage
s.setDomStorageEnabled(true); //启动webview的html5的本地存储功能,DOM存储API是否可用,默认false。
webView.requestFocus(); //把输入焦点放在调用这个方法的控件上
webView.setScrollBarStyle(0);
//重写alert(),避免js的alert()无效
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
result.confirm();
return true;
}
});
//系统默认会通过手机浏览器打开网页,为了能够直接通过WebView显示网页,则必须设置
webView.setWebViewClient(new WebViewClient(){
@SuppressWarnings("unused")
// public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { //String url
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 该接口,主要是给WebView提供时机,让其选择是否对UrlLoading进行拦截。
// 关于该接口的返回值,True(拦截WebView加载Url),False(允许WebView加载Url)
//使用WebView加载显示url
view.loadUrl(url);
//返回true
return false;
}
});
webView.loadUrl(url);
return webView;
}
private class ViewPagerAdapter1 extends PagerAdapter{
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView(webViewList.get(position));
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(webViewList.get(position));
return webViewList.get(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return webViewList.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
}
private class ScollImageTask implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
curPosition = (curPosition + 1) % webViewList.size();
hander.obtainMessage().sendToTarget();
}
}
}
Android webview实现网页轮播
最新推荐文章于 2024-05-31 14:08:04 发布