• Android TextView中显示图片


    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

  • 相关阅读:
    Qt QChart 中 QValueAxis 和 QCategoryAxis 区别
    Qt QChart 绘制面积图 QAreaSeries
    Qt QChart 设置线条样式 虚线
    Qt 读取csv文件并且绘制折线图
    Qt comboBox控件的三种基本用法
    Qt QStringList 的学习笔记
    OpenYurt 联手 eKuiper,解决 IoT 场景下边缘流数据处理难题
    如何避免 Go 命令行执行产生“孤儿”进程?
    阿里巴巴代码平台架构的演进之路
    云原生演进趋势下传统数据库升级实践
  • 原文地址:https://www.cnblogs.com/zhangs1986/p/4738585.html
Copyright © 2020-2023  润新知