您的位置:首页 > 本地本地

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年毕业生,想知道档案在哪里?'>谈谈自媒体、新媒体和融媒体

下一篇:返回列表'>返回列表

随机图文