本文将带您了解关于android中使用Html渲染的方式实现必填项前面的*号示例的新内容,同时我们还将为您解释html渲染的相关知识,另外,我们还将为您提供关于Androidhtml5渲染、andro
本文将带您了解关于android中使用Html渲染的方式实现必填项前面的*号示例的新内容,同时我们还将为您解释html 渲染的相关知识,另外,我们还将为您提供关于Android html5渲染、android – 使用Html.fromHtml设置自定义字体、Android 中使用 html 作布局文件、Android 帧动画 xml 方式实现的实用信息。
本文目录一览:- android中使用Html渲染的方式实现必填项前面的*号示例(html 渲染)
- Android html5渲染
- android – 使用Html.fromHtml设置自定义字体
- Android 中使用 html 作布局文件
- Android 帧动画 xml 方式实现
android中使用Html渲染的方式实现必填项前面的*号示例(html 渲染)
项目的个人基本信息UI界面效果图如下,有一个红色的*号,并且跟它挨着的文字颜色不一样。简友们,你们是怎么实现的呢?我这里主要介绍一种有Html渲染的方式
一开始,我测试过用一个TextView来单独装载符合,发现如果需求改颜色的时候那所有的TextView都需要改一遍颜色,接着测试了用一个TextView把符合和对应的文字装载在一起,但是发现*符号的高度不好控制,最后觉得用Html渲染的方式最佳。不多说了,开始正文内容。
1、Xml布局(只选取对应的部分)
这里的*符号和文字其实也是公用一个TextView
<LinearLayoutandroid:layout_marginTop="10dp" > <!--主要看这个TextView--> <TextView android:id="@+id/tv_nation"tools:text="*民族" android:text="@string/tip_nation" /> <RelativeLayout android:id="@+id/view_nation"android:clickable="true" > <EditText android:id="@+id/et_nation"android:hint="@string/tip_please_select" /> <ImageView/> </RelativeLayout> </LinearLayout>
2、创建对应String资源
这里可以单独设置*符号和文字的颜色、加粗等操作
<string name="tip_xinghao_nation"><Data><![CDATA[<font color="#e60012"> *</font><font color="#189dde">民族 : </font>]]></Data></string>
3、java代码中实现渲染
tvNation.setText(Html.fromHtml(getString(R.string.tip_xinghao_nation)));
到这里就可以实现效果图里面的效果了,如果更改*符号和文字颜色和大小的时候,统一在String资源哪里更改就可以了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
Android html5渲染
@邓凡平 你好,想跟你请教个问题:我最近在用WebView加载html5,html页面嵌入了js,大量街景图片,渲染时出现花屏,什么原因?。
android – 使用Html.fromHtml设置自定义字体
http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html
现在有没有办法用Font-Tag设置自定义字体?
解决方法
Html
implementation.正如您将看到的,字体标记仅支持大小和颜色.
Android 中使用 html 作布局文件
在Android开发中,通常使用xml格式来描述布局文件。就目前而言,熟悉android布局及美化的人员少之又少,出现了严重的断层。大部分企业,其实还是程序员自己动手布局。这样既浪费时间和精力,也未必能达到理想的效果。但是,在企业级的android开发中,使用html页面进行布局,也有很多的优势(例如:简单,大部分开发人员及美工都熟悉,方便统一进行更新,管理)。据笔者了解,已经有不少的公司在使用这种方式进行布局开发。这也可能是一种趋势。
下面,我将给出一个实例代码,供大家学习使用html页面给Android应用布局。
MainActivity.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); } } }
Person.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; }PersonService.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; } }index.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>
Android 帧动画 xml 方式实现
在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。
如果你有兴趣 你可以关注一下公众号 biglead 来获取最新的学习资料。
将一组动作相近的图片组合在一起,然后按照一定的时间来播放,就会形成一个动画,我们可以称之为帧动画。
在 Android 中可通过结合 xml 的方式来轻松实现。
1 创建 xml 动画文件
在 Android 项目工程中的 drawable 目录下创建动画文件,如我这里创建的 loading.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false"
>
<item
android:drawable="@mipmap/ani_1"
android:duration="800" />
<item
android:drawable="@mipmap/ani_2"
android:duration="800" />
<item
android:drawable="@mipmap/ani_3"
android:duration="800" />
<item
android:drawable="@mipmap/ani_4"
android:duration="800" />
<item
android:drawable="@mipmap/ani_5"
android:duration="800" />
<item
android:drawable="@mipmap/ani_6"
android:duration="800" />
<item
android:drawable="@mipmap/ani_7"
android:duration="800" />
<item
android:drawable="@mipmap/ani_8"
android:duration="800" />
</animation-list>
设置android:oneshot属性为true,表示此次动画只执行一次,最后停留在最后一帧。设置为false则动画循环播放。文件可以添加为Image背景,触发的时候播放。
2 加载使用
在你的 Activity 中,直接将这个动画文件使用一个 ImageView 来加载显示,代码如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView lImageView = findViewById(R.id.imageview);
//设置图片
lImageView.setimageResource(R.drawable.loading);
//动
AnimationDrawable lAnimationDrawable = (AnimationDrawable) lImageView.getDrawable();
lAnimationDrawable.start();
}
}
3 聊一聊 AnimationDrawable
Drawable animation可以加载Drawable资源实现帧动画。AnimationDrawable是实现Drawable animations的基本类
有时 调用了 AnimationDrawable.start方法来启动动画,但是并没有出现效果。
3.1 使用 ViewTreeObserver
ViewTreeObserver.OnPreDrawListener lOnPreDrawListener=new ViewTreeObserver.OnPreDrawListener(){
@Override
public boolean onPreDraw() {
lAnimationDrawable.start();
return true; //注意此行返回的值
}
};
//绑定视图观察者
lImageView.getViewTreeObserver().addOnPreDrawListener(lOnPreDrawListener);
3.2 使用 RunAnim
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start3();
}
private AnimationDrawable mAnimationDrawable;
public void start3() {
ImageView lImageView = findViewById(R.id.imageview);
//设置图片
lImageView.setimageResource(R.drawable.loading);
//动
mAnimationDrawable = (AnimationDrawable) lImageView.getDrawable();
RunAnim runAnim = new RunAnim();
runAnim.execute("");
}
class RunAnim extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
if (!mAnimationDrawable.isRunning()) {
mAnimationDrawable.stop();
mAnimationDrawable.start();
}
return "";
}
}
}
3.3 在 Activity 的 onWindowFocusChanged 中调用
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
mAnimationDrawable.start();
super.onWindowFocusChanged(hasFocus);
}
完毕
我们今天的关于android中使用Html渲染的方式实现必填项前面的*号示例和html 渲染的分享就到这里,谢谢您的阅读,如果想了解更多关于Android html5渲染、android – 使用Html.fromHtml设置自定义字体、Android 中使用 html 作布局文件、Android 帧动画 xml 方式实现的相关信息,可以在本站进行搜索。
本文标签: