您的位置:首页 > 本地本地
Android开发中对显示HTML内容的几种方式
admin2024-05-03人已围观
一、Android开发中对显示HTML内容的几种方式
首先,Android中显示Html内容,有3中方式:(目前我用到的有这3种)
1、可以利用Android原生的Html.fromHtml(str, imageGetter, tagHandler)来进行显示。(不过,我这边用了,即使加了页面加载动画,还是觉得非常慢,有大量图片,会导致OOM;如果图片不多的话,可以考虑)
2、利用第三方插件HtmlTextView。
GitHub地址:
图片加载很顺畅,使用方法也非常简单,不过,有两个注意事项:
(1)其中,HtmlHttpImageGetter有3个构造函数,可以根据自己的情况选择。
(2)加载大量图片的时候,会导致OOM内存溢出。针对于这个情况,HtmlHttpImageGetter有一个压缩图片的方法可以调用,可以进去查看它的公共方法。(不过,我这边显示的图片过大,每张1M左右,并且一下子有几十张,即使设置了压缩图片,还是会导致OOM问题,目前还没解决,有大神知道咋弄的,拜托指点一下,非常感谢!)
对了,这个第三方插件的基本用法,点击上面的连接,进去一看就知道了,很简单。
3、第三种,是我没办法的情况下想的:把html标签里的内容利用正则表达式拿出来,其中,文本内容用一个TextView代替,<img>标签图片用一个ImageView代替,其他相关的标签自行选择替换。说白了,就是创建一个个的TextView以及ImageView填充到布局里(LinearLayout之类的)。要说明的是:其中图片显示用Glide来实现。目前我这边测试的情况还是可以的,加载的速度非常快,也没因内存问题导致APP崩溃。
二、Android如何在布局文件中使用.properties属性文件
只能在代码中使用,不能在布局中使用,因为布局文件是android的属性配置文件与properties文件是同级的,都是工程配置文件,所以不能互相调用,只能在代码里调用
三、android里面怎么加html文件
html页面(命名:Android.html放在assets文件夹下):::::
<!DOCTYPE html PUBLIC -//WAPFORUM//DTD XHTML Mobile 1.0//EN
<html xmlns=>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8 />
<script language=javascript type=text/javascript>
function get4Android(str){
document.getElementById(show).innerHTML=This is a message from android:+str;
}
</script>
</head>
<body>
<div id=show></div>
</body>
</html>
Text.java代码:::
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Text extends Activity implements OnClickListener {
private Button button;
private TextView text;
private WebView web;
private EditText edit;
private Handler handler;
private void initView() {
button = (Button) this.findViewById(R.id.button2);
web = (WebView) this.findViewById(R.id.webView1);
edit = (EditText) this.findViewById(R.id.editText1);
button.setOnClickListener(this);
}
private void setWebView() {
web.setWebViewClient(new WebViewClient());
web.requestFocus();
WebSettings setting = web.getSettings();
setting.setJavaScriptEnabled(true);
web.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
web.requestFocus();
return false;
}
});
web.addJavascriptInterface(new SendAndroid(), theKey);
web.loadUrl(file:///android_asset/android.html);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
setWebView();
handler = new Handler() {
public void handleMessage(android.os.Message msg) {
String str = msg.obj.toString();
text.setText(str);
};
};
}
@Override
public void onClick(View v) {
Editable editable = edit.getText();
web.loadUrl(javascript:get4Android(\ + editable.toString()
+ \));
}
class SendAndroid {
public void runOnAndroidJavaScript(final String str) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(****** + str);
Message mes = handler.obtainMessage();
mes.obj = str;
handler.sendMessage(mes);
}
}).start();
}
}
}
主要是:web.loadUrl(javascript:get4Android(\ + editable.toString()+ \));中的“javascript:get4Android”要和html中的【function get4Android(str){
document.getElementById(show).innerHTML=This is a message from android:+str;
}】方法名相同
很赞哦! ()
上一篇:我是九江学院09年毕业生,想知道档案在哪里?'>谈谈自媒体、新媒体和融媒体
下一篇:返回列表'>返回列表