GVKun编程网logo

android中使用Html渲染的方式实现必填项前面的*号示例(html 渲染)

23

本文将带您了解关于android中使用Html渲染的方式实现必填项前面的*号示例的新内容,同时我们还将为您解释html渲染的相关知识,另外,我们还将为您提供关于Androidhtml5渲染、andro

本文将带您了解关于android中使用Html渲染的方式实现必填项前面的*号示例的新内容,同时我们还将为您解释html 渲染的相关知识,另外,我们还将为您提供关于Android html5渲染、android – 使用Html.fromHtml设置自定义字体、Android 中使用 html 作布局文件、Android 帧动画 xml 方式实现的实用信息。

本文目录一览:

android中使用Html渲染的方式实现必填项前面的*号示例(html 渲染)

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渲染

Android html5渲染

@邓凡平 你好,想跟你请教个问题:我最近在用WebView加载html5,html页面嵌入了js,大量街景图片,渲染时出现花屏,什么原因?。

android – 使用Html.fromHtml设置自定义字体

android – 使用Html.fromHtml设置自定义字体

我发现这个 HTML标签列表(据说)支持 HTML.from Html来创建跨文本:

http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html

现在有没有办法用Font-Tag设置自定义字体?

解决方法

不,没有办法这样做.您可以 take a look at the Html implementation.正如您将看到的,字体标记仅支持大小和颜色.

Android 中使用 html 作布局文件

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 方式实现

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 方式实现的相关信息,可以在本站进行搜索。

本文标签:

上一篇Android编程使用GestureDetector实现简单手势监听与处理的方法(android 手势监听)

下一篇浅谈Android开发者2017年最值得关注的25个实用库(常用的android开发工具)