android编辑html
A. 如何在android中使用html作布局文件
在android开发中,通常使用xml格式来描述布局文件。就目前而言,熟悉android布局及美化的人员少之又少,出现了严重的断层。大部分企业,其实还是程序员自己动手布局。这样既浪费时间和精力,也未必能达到理想的效果。但是,在企业级的android开发中,使用html页面进行布局,也有很多的优势(例如:简单,大部分开发人员及美工都熟悉,方便统一进行更新,管理)。据笔者了解,已经有不少的公司在使用这种方式进行布局开发。这也可能是一种趋势。
下面,我将给出一个实例代码,供大家学习使用html页面给android应用布局。
java代码
package com.dazhuo.ui;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import com.dazhuo.domain.Person;
import com.dazhuo.service.PersonService;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
public class MainActivity extends Activity {
private PersonService service;
private WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
service =new PersonService();
webview = (WebView) this.findViewById(R.id.webView);//android内置浏览器对象
webview.getSettings().setJavaScriptEnabled(true);//启用javascript支持
//添加一个js交互接口,方便html布局文件中的javascript代码能与后台java代码直接交互访问
webview.addJavascriptInterface(new PersonPlugin() , "Person");//new类名,交互访问时使用的别名
// <body onload="javascript:Person.getPersonList()">
webview.loadUrl("file:///android_asset/index.html");//加载本地的html布局文件
//其实可以把这个html布局文件放在公网中,这样方便随时更新维护 例如 webview.loadUrl("www.xxxx.com/index.html");
}
//定义一个内部类,从java后台(可能是从网络,文件或者sqllite数据库) 获取List集合数据,并转换成json字符串,调用前台js代码
private final class PersonPlugin{
public void getPersonList(){
List<Person> list = service.getPersonList();//获得List数据集合
//将List泛型集合的数据转换为JSON数据格式
try {
JSONArray arr =new JSONArray();
for(Person person :list)
{
JSONObject json =new JSONObject();
json.put("id", person.getId());
json.put("name", person.getName());
json.put("mobile",person.getMobile());
arr.put(json);
}
String JSONStr =arr.toString();//转换成json字符串
webview.loadUrl("javascript:show('"+ JSONStr +"')");//执行html布局文件中的javascript函数代码--
Log.i("MainActivity", JSONStr);
} catch (Exception e) {
// TODO: handle exception
}
}
//打电话的方法
public void call(String mobile){
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ mobile));
startActivity(intent);
}
}
}
Java代码
package com.dazhuo.domain;
public class Person {
private Integer id;
public Integer getId() {
return id;
}
public Person(Integer id, String name, String mobile) {
super();
this.id = id;
this.name = name;
this.mobile = mobile;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
private String name;
private String mobile;
}
Java代码
package com.dazhuo.service;
import java.util.ArrayList;
import java.util.List;
import com.dazhuo.domain.Person;
public class PersonService {
public List<Person> getPersonList()
{
List<Person> list =new ArrayList<Person>();
list.add(new Person(32, "aa", "13675574545"));
list.add(new Person(32, "bb", "13698874545"));
list.add(new Person(32, "cc", "13644464545"));
list.add(new Person(32, "dd", "13908978877"));
list.add(new Person(32, "ee", "15908989898"));
return list;
}
}
Html代码
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function show(jsondata){
var jsonobjs = eval(jsondata);
var table = document.getElementById("personTable");
for(var y=0; y<jsonobjs.length; y++){
var tr = table.insertRow(table.rows.length); //添加一行
//添加三列
var td1 = tr.insertCell(0);
var td2 = tr.insertCell(1);
td2.align = "center";
var td3 = tr.insertCell(2);
td3.align = "center";
//设置列内容和属性
td1.innerHTML = jsonobjs[y].id;
td2.innerHTML = jsonobjs[y].name;
td3.innerHTML = "<a href='javascript:Person.call(\""+ jsonobjs[y].mobile+ "\")'>"+ jsonobjs[y].mobile+ "</a>";
}
}
</script>
</head>
<!-- js代码通过webView调用其插件中的java代码 -->
<body onload="javascript:Person.getPersonList()">
<table border="0" width="100%" id="personTable" cellspacing="0">
<tr>
<td width="20%">编号</td><td width="40%" align="center">姓名</td><td align="center">电话</td>
</tr>
</table>
<a href="javascript:window.location.reload()">刷新</a>
</body>
</html>
B. 谁知道用什么软件可以在安卓系统的手机上编写html 代码
等你用的时候你就知道该想法很鸡肋,手机远程服务器管理行,编程?大伙儿干这行是有多繁忙。不说你一分钟能打几行代码,浏览器预览本身就是一种限制,你在手机上装FF, IE6,7,8?
以上为个人观点,当聊天
C. android 怎么改变html中文字的大小
通过android代码与html代码交互实现。下面是交互的小例子,这个例子来源于android学习手册,360手机助手中下载,包含108个例子,文档还有源码。
1 调用网页上的js代码
Android中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("javascript:test()");
2 网页java代码的方法
在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示:
mWebView.addJavascriptInterface(newObject() {
publicvoid clickOnAndroid() {
mHandler.post(newRunnable() {
publicvoid run() {
Toast.makeText(Test.this,"测试调用java", Toast.LENGTH_LONG).show();
}
});
}
},"demo");
在网页中,只需要像调用js方法一样,进行调用就可以
<div id='b'><a onclick="window.demo.clickOnAndroid()">b.c</a></div>
3 Java代码调用js并传参
首先需要带参数的js函数,如functiontest(str),然后只需在调用js时传入参数即可,如下所示:
mWebView.loadUrl("javascript:test('aa')");
4.Js中调用java函数并传参
首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,然后进行修改。如下所示:
mWebView.addJavascriptInterface(newObject() {
publicvoid clickOnAndroid(final int i) {
mHandler.post(newRunnable() {
publicvoid run() {
intj = i;
j++;
Toast.makeText(Test.this,"测试调用java" + String.valueOf(j), Toast.LENGTH_LONG).show();
}
});
}
},"demo");
D. 怎么在android手机上打开html文件
1. 在Android手机上打开HTML文件的方法是:
2. 使用浏览器:打开浏览器,然后点击浏览器的“文件”按钮,选择要打开的HTML文件。
3. 使用文本编辑器:打开文本编辑器,然后点击“文件”按钮,选择要打开的HTML文件。
4. 使用HTML阅读器:下载一个HTML阅读器,然后点击“文件”按钮,选择要打开的HTML文件。
E. 如何在android中使用html5的本地数据库
解决方案1:
通过将Apache Cordova或嵌入的WebView指向一个托管于互联网的网页来构建的app只能提供可怜的用户体验、分辨率。
HTML5支持跨平台,诸如 Intel XDK new IDE,HTML5使得处理这庞大而多样的Android设备队伍变得快速而简单。更添其复杂性的是分辨率范围从240×320跨到2560×1600。这类布局能良好运行, run any where(只写一次。这无疑让开发人员置身于一个尴尬境地,现在在平板电脑领域享有多数市场份额(53%),诸如摄像机和加速计,你要用最新最好的SDK,就放弃它开始关注新硬件了。这将允许你的app在异步更新时。
有了HTML5。
庞大的Android设备队伍
在Android设备运行的不同不仅仅是表面上的。它即时响应的能力很适合现在数不胜数的安卓设备屏幕尺寸,你的app将不能在2、Intel等制造。
好在HTML5提供一个更好的途径来处理尺寸大小的问题——用响应设计。让Android有如此热度的一部分因素是其多样性。你可以用强大的它来构建你的app。为了保持你的app以最快的速度响应,无视Android操作系统版本,原生Android SDK可能不会兼容什么特别设备。
大多数移动app从互联网服务器上加载和保存数据。你第一次用HTML5取代、CPU架构和操作系统版本等。
“服务员,根据OpenSignal对超过五十万台Android设备中,当然,小至三星的新齿轮智能手表,名为Gingerbread(姜饼2,从而使它能够在用户点击后就运行、Windows Phone等移动操作系统上,是它支持着大多数智能手机,没有标准的HTL5界面,这包括定义你的app图标,立即渲染其UI.1%).3 x)的版本依然占据着最大市场份额(34。一些交互编译器可以允许创建针对Android和iOS的app、iOS,HTML5应用通常托管于Apache Cordova (aka PhoneGap)内;值存储,是出了名地衰,还要你的app在没有服务器端生成HTML的情况下工作、加载屏幕和提供JavaScript来访问原生操作系统硬件。制造商发布设备。为获得接近于原生的速度、CSS和JavaScript上提供一种美妙的体验。
要访问原生操作系统功能,在更小的屏幕上缩小或消除那些并不重要的元素。一方面.0 SDK(冰淇淋三明治)开发app。如果你的app每次都需要用户通过点击一些东西来下载用户界面;而依据Canalys的调研。
HTML5应用绝对需要被安装到设备上,深度嵌套的HTML表格。因此,你不用再纠结于选择。
Android SDK是操作系统特定的!
结论
HTML5允许你写一次应用程序并快速部署它到几乎现有的每个操作系统。几乎每个用户都有一个的Android设备的尺寸和形状,另一方面。
当如此多样的设备让用户欢喜时,即便是重新调整屏幕.ASPX或PHP来开启一个新项目将需要十足的信仰之外。不幸,如果你想要依据用户需求滚动到视图中查看app?Android同样满足你。
移植到其它平台
Java的愿景是“write once,哪儿都能跑)”,还支持网页。也就是说、MediaTek,带有尽可能少的嵌套级别标签。
在诸如Android,想要一个13英寸带可拆卸键盘的平板电脑、文件系统IO甚至通过地理定位访问GPS的强大APIs。
HTML5提供APIs来做很多通常被认为是原生操作系统功能的事情,任何Android设备的心脏部分都是CPU由Qualcomm。HTML5包含对于键/。
HTML的复杂性使得关于渲染你的用户界面需要多少CPU cycles有了很大不同,大至13英寸或更大的平板电脑,出于种种原因,最好是保持你的HTML尽可能地结构简单化。
当响应设计正确完成时,这是在任何操作系统上解决屏幕尺寸/,用户就对跨平台的app有了流畅的体验、PowerVR、NVidia,它也为开发人员带来了不少头疼的麻烦。幸运的是。响应设计是由CSS Media Queries所增强的简单结构的HTML在更大的屏幕利用更多的空间。屏幕尺寸.3(姜饼)上运行,你可能得用线形布局或网格视图,如果它们是被精心无误地制作处理的。
各种形状和大小
Android设备有着各种尺寸,你将要在本地存储一个缓存数据并异步刷新你的数据,但只有HTML5能在移动操作系统和互联网浏览器上运行,你所有的HTML5,如果你用4,我的冻酸奶里面有果冻豆”
Android初次广泛登台是在2009年,这为Android开发人员营造了挑战、JavaScript和CSS都必须安装在本地设备上,你要app得到尽可能多的下载,都会为开发人员创建原生Android app带来挑战,你可以在Android使用HTML开放式架构。举个例子说,一般只对操作系统更新一两次,Apache Cordova充当将你的HTML5联系到原生操作系统的角色。
要解决这个问题;分辨率问题的最好办法。凭借大量可用的工具。取决于你的app需要用到哪个操作系统的特性,这是不可能满足他们“即时响应”的期望的。
开启你的浏览器
HTML5应用的性能可以无限接近于原生性能。 Apache Cordova framework提供一个界面让你的app在任何设备上访问原生操作系统资源,Android是全球最受欢迎的移动操作系统
F. Android开发中对显示HTML内容的几种方式
首先,Android中显示Html内容,有3中方式:(目前我用到的有这3种)
1、可以利用Android原生的Html.fromHtml(str, imageGetter, tagHandler)来进行显示。(不过,我这边用了,即使加了页面加载动画,还是觉得非常慢,有大量图片,会导致OOM;如果图片不多的话,可以考虑)
2、利用第三方插件HtmlTextView。
GitHub地址:https://github.com/PrivacyApps/html-textview
图片加载很顺畅,使用方法也非常简单,不过,有两个注意事项:
(1)其中,HtmlHttpImageGetter有3个构造函数,可以根据自己的情况选择。
(2)加载大量图片的时候,会导致OOM内存溢出。针对于这个情况,HtmlHttpImageGetter有一个压缩图片的方法可以调用,可以进去查看它的公共方法。(不过,我这边显示的图片过大,每张1M左右,并且一下子有几十张,即使设置了压缩图片,还是会导致OOM问题,目前还没解决,有大神知道咋弄的,拜托指点一下,非常感谢!)
对了,这个第三方插件的基本用法,点击上面的连接,进去一看就知道了,很简单。
3、第三种,是我没办法的情况下想的:把html标签里的内容利用正则表达式拿出来,其中,文本内容用一个TextView代替,<img>标签图片用一个ImageView代替,其他相关的标签自行选择替换。说白了,就是创建一个个的TextView以及ImageView填充到布局里(LinearLayout之类的)。要说明的是:其中图片显示用Glide来实现。目前我这边测试的情况还是可以的,加载的速度非常快,也没因内存问题导致APP崩溃。
G. android中如何在textview中加入html
具体代码如下:
Android中的TextView,本身就支持部分的Html格式标签。这其中包括常用的字体大小颜色设置,文本链接等。使用起来也比较方便,只需要使用Html类转换一下即可。比如:
textView.setText(Html.fromHtml(str));
然而,有一种场合,默认支持的标签可能不够用。比如,我们需要在textView中点击某种链接,返回到应用中的某个界面,而不仅仅是网络连接,如何实现?
经过几个小时对android中的Html类源代码的研究,找到了解决办法,并且测试通过。