博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android更新本地xml文件(Webview)
阅读量:5245 次
发布时间:2019-06-14

本文共 4279 字,大约阅读时间需要 14 分钟。

一.Activity中使用

1.创建html文件(可以放在assest中)

    
这里是HTML

HTML内容显示

View Code

2.Activity_main.xml布局(只需要一个WebView控件即可)

View Code

3.MainActivity.java

1 public class MainActivity extends AppCompatActivity { 2     private WebView contentWebView = null; 3  4  5     @Override 6     protected void onCreate(Bundle savedInstanceState) { 7         super.onCreate(savedInstanceState); 8         setContentView(R.layout.activity_main); 9         contentWebView = (WebView) findViewById(R.id.webview);10         // 启用javascript11         contentWebView.getSettings().setJavaScriptEnabled(true);12         // 从assets目录下面的加载html13         contentWebView.loadUrl("file:///android_asset/b.html");14         contentWebView.addJavascriptInterface(MainActivity.this,"android");15 16 17     }18 19     //由于安全原因 需要加 @JavascriptInterface20     @JavascriptInterface21     public void startFunction(){22 23         runOnUiThread(new Runnable() {24             @Override25             public void run() {26                 Toast.makeText(MainActivity.this,"Toast",Toast.LENGTH_SHORT).show();27 28             }29         });30     }31 32     @JavascriptInterface33     public void startFunction(final String text){34         runOnUiThread(new Runnable() {35 36             @Override37             public void run() {38                 new AlertDialog.Builder(MainActivity.this).setMessage(text).show();39 40             }41         });42 43 44     }45 }
View Code

参考:

二.Fragment中使用

1 public View onCreateView(LayoutInflater inflater, ViewGroup container, 2                          Bundle savedInstanceState) { 3     contentView = inflater.inflate(R.layout.fragment_web, container, false); 4     web_view = (WebView)contentView.findViewById(R.id.webview); 5     initView(); 6     web_view.loadUrl(url); 7     //web_view.loadUrl("file:///android_asset/Demo.html"); 8     web_view.setWebViewClient(new WebViewClient()); 9 10     mProgressBar = (ProgressBar)contentView.findViewById(R.id.progressbar);11 12     web_view.setWebChromeClient(new WebChromeClient(){13         @Override14         public void onProgressChanged(WebView view, int newProgress) {15             if (newProgress != 100) {16                 mProgressBar.setProgress(newProgress);17             } else {18                 mProgressBar.setVisibility(View.GONE);19             }20         }21     });22 23 24 25     // Inflate the layout for this fragment26     return contentView;27 }28 29 30 31 设置显示:32 33 private void initView() {34     WebSettings setting = web_view.getSettings();35     setting.setJavaScriptEnabled(true);//支持Js36     setting.setCacheMode(WebSettings.LOAD_DEFAULT);//缓存模式37     //是否支持画面缩放,默认不支持38     setting.setBuiltInZoomControls(true);39     setting.setSupportZoom(true);40     //是否显示缩放图标,默认显示41     setting.setDisplayZoomControls(false);42     //设置网页内容自适应屏幕大小43     setting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING);//注意网上例程很多的是.SINGLE_COLUMN,但调试时发现移动版网站会错位,所以改成44                                            //SINGLE_COLUMN45 46     setting.setUseWideViewPort(true);47     setting.setLoadWithOverviewMode(true);48 49 }
View Code

 参考:

ps:在fragment中如果使用Activity中的js点击会出现点击事件不能执行的情况:此时需

1.(addJavascriptInterface方法中的第一个参数是一个类名,js要实现的方法必须写在类里面)

1 //Fragment中代码2 web_view = (WebView)mView.findViewById(R.id.webView);3         initView();4         web_view.loadUrl("http://hnzldzkj.cn/static/html/hh.html");5         web_view.addJavascriptInterface(new AndroidJs(),"android");
View Code

2.新建AndroidJs.java文件

1 package com.example.dell.zhidao; 2  3 import android.webkit.JavascriptInterface; 4 import android.widget.Toast; 5  6 public class AndroidJs { 7     @JavascriptInterface 8     public void startFunction(){ 9         System.out.println("JSFDSFSDFDSFDSF");10     }11 }
View Code

 2.或者

1 //对js点击事件的实现      2     @JavascriptInterface 3     public void startFunction(final String ids){ 4         this.getActivity().runOnUiThread(new Runnable() { 5             @Override 6             public void run() { 7                 getActivity().setContentView(R.layout.niday); 8             } 9         });10     }
View Code

 

转载于:https://www.cnblogs.com/gaoyukun/p/10375670.html

你可能感兴趣的文章
tomcat7的数据库连接池tomcatjdbc的25个优势
查看>>
Html 小插件5 百度搜索代码2
查看>>
P1107 最大整数
查看>>
多进程与多线程的区别
查看>>
Ubuntu(虚拟机)下安装Qt5.5.1
查看>>
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
查看>>
java 常用命令
查看>>
CodeForces Round #545 Div.2
查看>>
卷积中的参数
查看>>
51nod1076 (边双连通)
查看>>
Item 9: Avoid Conversion Operators in Your APIs(Effective C#)
查看>>
学习Spring Boot:(二十八)Spring Security 权限认证
查看>>
深入浅出JavaScript(2)—ECMAScript
查看>>
STEP2——《数据分析:企业的贤内助》重点摘要笔记(六)——数据描述
查看>>
ViewPager的onPageChangeListener里面的一些方法参数:
查看>>
Jenkins关闭、重启,Jenkins服务的启动、停止方法。
查看>>
CF E2 - Array and Segments (Hard version) (线段树)
查看>>
Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
查看>>
SIGPIPE并产生一个信号处理
查看>>
CentOS
查看>>