android开发中向TextView中插入网络图片(批量插入)

代码如下:

package com.example.pengliu.myapplication;

import android.graphics.drawable.Drawable;
import android.os.StrictMode;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.text.method.ScrollingMovementMethod;
import android.widget.TextView;

import java.io.InputStream;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

    private int[] zujianids=new int[]{R.id.text1,R.id.text};
    private String[] TMInfos=new String[]{"dfdfdf\r\n<img src=\"http://i.imgur.com/DvpvklR.png\"/>\r\nfdf\r\n<img src=\"https://vimg.xiaoxiakj.com/v/vj/8e76a360124d45c39b3bd57ce50fff43/0.jpg@300w_300h\"/>\r\ndfd"
            ,"第二道题\r\n<img src=\"http://i.imgur.com/DvpvklR.png\"/>\r\nfdf\r\n<img src=\"https://vimg.xiaoxiakj.com/v/vj/8e76a360124d45c39b3bd57ce50fff43/0.jpg@300w_300h\"/>\r\ndfd"};

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

        for (int i=0;i<zujianids.length;i++){
            TextView tv=findViewById(zujianids[i]);
            tv.setMovementMethod(ScrollingMovementMethod.getInstance());// 设置可滚动
            tv.setMovementMethod(LinkMovementMethod.getInstance());//设置超链接可以打开网页
            tv.setText(Html.fromHtml(TMInfos[i], imgGetter, null));
        }
    }

    //这里面的resource就是fromhtml函数的第一个参数里面的含有的url
    Html.ImageGetter imgGetter = new Html.ImageGetter() {
        public Drawable getDrawable(String source) {
            Drawable drawable = null;
            InputStream is;
            try {
                is = (InputStream) new URL(source).getContent();
                drawable = Drawable.createFromStream(is, "src");
                is.close();
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
                    drawable.getIntrinsicHeight());

            return drawable;
        }
    };

    public static void struct() {
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                .detectDiskReads().detectDiskWrites().detectNetwork()
                .penaltyLog().build());
    }
}

猜你喜欢

转载自blog.csdn.net/lpcrazyboy/article/details/80335929
今日推荐