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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM