转自:http://blog.csdn.net/windone0109/article/details/5380843

首先在layout文件夹下的xml中 加入Java代码

[java] view plain copy
  1. <WebView
  2. android:id="@+id/wv1"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. />

Java代码

[java] view plain copy
  1. publicclassjsWebDemoextendsActivity{
  2. /**Calledwhentheactivityisfirstcreated.*/
  3. @Override
  4. publicvoidonCreate(BundlesavedInstanceState){
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. WebViewwView=(WebView)findViewById(R.id.wv1);
  8. ProxyBridgepBridge=newProxyBridge();
  9. wView.addJavascriptInterface(pBridge,"AliansBridge");
  10. WebSettingswSet=wView.getSettings();
  11. wSet.setJavaScriptEnabled(true);
  12. wView.loadUrl("file:///android_asset/index.html");
  13. }
  14. publicclassProxyBridge{
  15. publicintone(){
  16. return1;
  17. }
  18. }
  19. }
  20. publicclassjsWebDemoextendsActivity{
  21. /**Calledwhentheactivityisfirstcreated.*/
  22. @Override
  23. publicvoidonCreate(BundlesavedInstanceState){
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.main);
  26. WebViewwView=(WebView)findViewById(R.id.wv1);
  27. ProxyBridgepBridge=newProxyBridge();
  28. wView.addJavascriptInterface(pBridge,"AliansBridge");
  29. WebSettingswSet=wView.getSettings();
  30. wSet.setJavaScriptEnabled(true);
  31. wView.loadUrl("file:///android_asset/index.html");
  32. }
  33. publicclassProxyBridge{
  34. publicintone(){
  35. return1;
  36. }
  37. }
  38. }

wView.addJavascriptInterface(pBridge, "AliansBridge");
上句代码是实例化一个方法为的是在html中的js中调用,第二个参数则是 实例化方法的别名,如果要使用这个pBridge,则在js中使用的名字就是AliansBridge。

WebSettings wSet = wView.getSettings();
wSet.setJavaScriptEnabled(true);
上面两句就是允许使用js的意思

wView.loadUrl(file:///android_asset/index.html);
就是在asset下放入一个index.html文件,这个文件包含js的代码,注意路径是“///”,这个android_asset不是文件夹的名字是系统自动生成的,其实就是asset文件夹的系统路径。

index.html 内容如下

Java代码

[xhtml] view plain copy
  1. <html><body>
  2. <divid="output">Testpage.</div>
  3. <inputtype="submit"value="changeto1"onclick="document.getElementById('output').innerHTML=AliansBridge.one()"/>
  4. </body></html>
  5. <html><body>
  6. <divid="output">Testpage.</div>
  7. <inputtype="submit"value="changeto1"onclick="document.getElementById('output').innerHTML=AliansBridge.one()"/>
  8. </body></html>

这里要注意 如果你只有一个方法需要被js调用

ProxyBridge pBridge = new ProxyBridge();
wView.addJavascriptInterface(pBridge, "AliansBridge");

如果你需要调用好多个方法呢 这里只要

wView.addJavascriptInterface(this, "AliansBridge");

把整个android程序所在的类 本身实例化传递就可以了

这里呢可以参看附件中的实例riademo

你如果想继续扩展可以参看

http://www.ophonesdn.com/article/show/115

2.上面是javascript调用android的方法,那么android也可以调用js的方法

Java代码

[java] view plain copy
  1. publicclasswebJsDemoextendsActivity{
  2. /**Calledwhentheactivityisfirstcreated.*/
  3. privateWebViewmWebView;
  4. privateHandlermHandler=newHandler();
  5. @Override
  6. publicvoidonCreate(BundlesavedInstanceState){
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.main);
  9. mWebView=(WebView)findViewById(R.id.wv1);
  10. WebSettingswebSettings=mWebView.getSettings();
  11. webSettings.setSavePassword(false);
  12. webSettings.setSaveFormData(false);
  13. webSettings.setJavaScriptEnabled(true);
  14. webSettings.setSupportZoom(false);
  15. mWebView.setWebChromeClient(newMyWebChromeClient());
  16. mWebView.addJavascriptInterface(newDemoJavaScriptInterface(),"demo");
  17. mWebView.loadUrl("file:///android_asset/demo.html");
  18. }
  19. finalclassDemoJavaScriptInterface{
  20. DemoJavaScriptInterface(){
  21. }
  22. /**
  23. *ThisisnotcalledontheUIthread.Postarunnabletoinvoke
  24. *loadUrlontheUIthread.
  25. */
  26. publicvoidclickOnAndroid(){
  27. mHandler.post(newRunnable(){
  28. publicvoidrun(){
  29. mWebView.loadUrl("javascript:wave()");
  30. }
  31. });
  32. }
  33. }
  34. /**
  35. *Providesahookforcalling"alert"fromjavascript.Usefulfor
  36. *debuggingyourjavascript.
  37. */
  38. finalclassMyWebChromeClientextendsWebChromeClient{
  39. @Override
  40. publicbooleanonJsAlert(WebViewview,Stringurl,Stringmessage,
  41. JsResultresult){
  42. //TODOAuto-generatedmethodstub
  43. Log.d("aa",message);
  44. Log.d("url",url);
  45. Log.d("result",""+result);
  46. result.confirm();
  47. returnsuper.onJsAlert(view,url,message,result);
  48. }
  49. }
  50. publicclasswebJsDemoextendsActivity{
  51. /**Calledwhentheactivityisfirstcreated.*/
  52. privateWebViewmWebView;
  53. privateHandlermHandler=newHandler();
  54. @Override
  55. publicvoidonCreate(BundlesavedInstanceState){
  56. super.onCreate(savedInstanceState);
  57. setContentView(R.layout.main);
  58. mWebView=(WebView)findViewById(R.id.wv1);
  59. WebSettingswebSettings=mWebView.getSettings();
  60. webSettings.setSavePassword(false);
  61. webSettings.setSaveFormData(false);
  62. webSettings.setJavaScriptEnabled(true);
  63. webSettings.setSupportZoom(false);
  64. mWebView.setWebChromeClient(newMyWebChromeClient());
  65. mWebView.addJavascriptInterface(newDemoJavaScriptInterface(),"demo");
  66. mWebView.loadUrl("file:///android_asset/demo.html");
  67. }
  68. finalclassDemoJavaScriptInterface{
  69. DemoJavaScriptInterface(){
  70. }
  71. /**
  72. *ThisisnotcalledontheUIthread.Postarunnabletoinvoke
  73. *loadUrlontheUIthread.
  74. */
  75. publicvoidclickOnAndroid(){
  76. mHandler.post(newRunnable(){
  77. publicvoidrun(){
  78. mWebView.loadUrl("javascript:wave()");
  79. }
  80. });
  81. }
  82. }
  83. /**
  84. *Providesahookforcalling"alert"fromjavascript.Usefulfor
  85. *debuggingyourjavascript.
  86. */
  87. finalclassMyWebChromeClientextendsWebChromeClient{
  88. @Override
  89. publicbooleanonJsAlert(WebViewview,Stringurl,Stringmessage,
  90. JsResultresult){
  91. //TODOAuto-generatedmethodstub
  92. Log.d("aa",message);
  93. Log.d("url",url);
  94. Log.d("result",""+result);
  95. result.confirm();
  96. returnsuper.onJsAlert(view,url,message,result);
  97. }
  98. }

其中上面的代码 也提到了怎么在android中调试js mWebView.setWebChromeClient(new MyWebChromeClient());

上面的代码来源于别人的实例。

最后还要注意在这个实例中demo.html和两个image应该在同一个文件夹asset下

转自:http://blog.csdn.net/windone0109/article/details/5380941

首先在layout文件夹下的xml中 加入WebView控件

[xhtml] view plain copy
  1. <WebView
  2. android:id="@+id/wv1"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. />

再在主文件中输入如下代码

[java] view plain copy
  1. publicclassTestDemoextendsActivity{
  2. /**Calledwhentheactivityisfirstcreated.*/
  3. @Override
  4. publicvoidonCreate(BundlesavedInstanceState){
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. WebViewwView=(WebView)findViewById(R.id.wv1);
  8. WebSettingswSet=wView.getSettings();
  9. wSet.setJavaScriptEnabled(true);
  10. //wView.loadUrl("file:///android_asset/index.html");
  11. //wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");
  12. wView.loadUrl("http://wap.baidu.com");
  13. }
  14. }

//wView.loadUrl("file:///android_asset/index.html");

-----打开本包内asset目录下的index.html文件
//wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");

-----打开本地sd卡内的index.html文件
//wView.loadUrl("
http://wap.baidu.com");

-----打开指定URL的html文件

转自:http://blog.csdn.net/windone0109/article/details/5381170

加载asset中的文件字体以及使用

  1. AssetManagermanager=this.getAssets();
  2. try
  3. {
  4. manager.open("tahoma.ttf");
  5. TextViewtv=(TextView)this.findViewById(R.id.testMe);
  6. tv.setTypeface(Typeface.createFromAsset(manager,"tahoma.ttf"));
  7. tv.setTextSize(50f);
  8. tv.setText(ArabicUtilities.reshape("adsdadsالحمدللهasdad"));
  9. }catch(Exceptionex){
  10. //TODO
  11. }

更多相关文章

  1. android 源代码错误
  2. Android sqlite 数据库在java代码中的增删改查
  3. Android将需要的日志文件LOG记录到本地文件夹下指定的文件
  4. android代码实现按钮自旋转
  5. Android中MAC地址获取代码
  6. Android 打开指定文件夹
  7. Android 将asserts文件夹内文件写入SD卡中

随机推荐

  1. Android视频处理 --处理视频第一帧缩略图
  2. Android——eclipse共享library以及导出j
  3. Android 只开启一个Activity实例
  4. android 设置EditText和TextView不可见
  5. Android 6.0替换原系统Launcher傻瓜教程
  6. Android中的快捷键
  7. Android跨进程唤醒APP,启动指定页面
  8. AndroidStudio开发遇见问题总结
  9. Android动画之Animation
  10. Android MVVM