Android TextView中显示图片

简介: Android官方给我们提供的Html类下面的fromHtml方法 当你需要转换的HTML代码是带图片的,比如,那么你就需要使用到重载的第二个方法了,这个方法里面有个ImageGetter对象,实现这个类会发现它回调了一个抽象getDrawable方法,在这个方法里,我们可以进行远程图片的下载获取,本地资源图片的获取等。

Android官方给我们提供的Html类下面的fromHtml方法

当你需要转换的HTML代码是带图片的,比如<IMG/>,那么你就需要使用到重载的第二个方法了,这个方法里面有个ImageGetter对象,实现这个类会发现它回调了一个抽象getDrawable方法,在这个方法里,我们可以进行远程图片的下载获取,本地资源图片的获取等。第三个参数TagHandler是用来自定义一些不属于HTML代码的一些标签,一般我们不会去用到,直接置为null即可

package com.example.mytestdemo;

import java.lang.reflect.Field;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.Html.ImageGetter;
import android.widget.TextView;

public class MainActivity extends Activity {

    private TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTextView = (TextView) findViewById(R.id.tv_1);
        String html = "<img src='liuhan'/>天气好热。。<p/><img src='haha'/>没关系,我有空调!";
        
        CharSequence charSequence = Html.fromHtml(html, new ImageGetter() {

            @Override
            public Drawable getDrawable(String source) {
                //根据资源变量名称获取R资源Id,再根据资源Id获取到Drawable对象
                Drawable drawable = getResources().getDrawable(getResourceId(source));//如果为网络src图片,则需要另写方法从网络中加载获得drawable图片
                //对图片进行压缩(此处我采用原图)
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                return drawable;
            }
        }, null);
        //设置文本信息
        mTextView.setText(charSequence);

    }
    /**
     * 根据资源文件的变量名返回资源文件的文件ID
     * @param name
     * @return
     */
    public int getResourceId(String name) {
        try {
            //利用Java反射机制获取R资源Id
            Field field = R.drawable.class.getField(name);
            return Integer.parseInt(field.get(null).toString());
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        }
        return 0;
    }

}
//根据url转Drawable 
InputStream is = (InputStream) new URL(source).getContent();  
Drawable d = Drawable.createFromStream(is, "src");  
is.close();  

 

可以利用Drawable下的setBounds方法对图片进行压缩

参考:http://www.cnblogs.com/lichenwei/p/4612079.html

目录
相关文章
|
8月前
|
Android开发
Android ImageView scaleType 属性详细介绍与使用
Android ImageView scaleType 属性详细介绍与使用
91 0
|
8月前
|
Android开发
Android ImageView 使用
Android ImageView 使用
61 0
|
Android开发
Android控件之TextView
在android中,文本控件主要包括TextView控件和EditView控件
73 0
Android控件之TextView
|
Android开发
Android TextView跑马灯效果
Android TextView跑马灯效果
188 0
|
Android开发
3-VIV-Android控件之ImageView
零、前言 [1].ImageView地位:直接继承自View,安卓源码1600+,算是个小类,但图片显示基本上都用它 [2].scaleType有点小烦,不过看图还是挺清晰的 [3].
1165 0
|
Android开发
1-VIV-Android控件之TextView
零、前言 [1].今天总结一下TextView [2].TextView在View家族的地位是:源码行数11000+,可以说是个大类 [3].TextView直接继承自View,EditText,Button,CheckBox都是它的后代 [4].
1233 0
|
测试技术 Android开发