我的问题如下:我尝试将图像加载到文本视图中,如下所示:
URLImageParser p = new URLImageParser(textView, this);
Spanned htmlSpan = Html.fromHtml(textWithImages, p, null);
textView.setText(htmlSpan);
我按照这个例子https://stackoverflow.com/a/7442725/1835251
如果我从网上加载图片,那就完美了。
我修改了代码以加载来自SDCard的某些图像。
在异步任务的“doInBackground”方法中我实现了这个:
@Override
protected Drawable doInBackground(String... params) {
String source = params[0];
Drawable d = null
if(source != null) {
if(source.startsWith("/myApp/images/")) {
localImage = true;
}
}
if(localImage) {
String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath();
d = Drawable.createFromPath(sdcard+source);
d.setBounds(0, 0, 0 + (int)(d.getIntrinsicWidth()), 0
+ (int) (d.getIntrinsicHeight()));
localImage = false;
} else {
// load images from internet
}
return d;
localImage是一个boolen,用于确定当前源是否“指向” 来自互联网或本地图像的图像。
如前所述:从互联网上加载图片效果很好。
但当我从 SDCard 加载图片时,有时会发生并非显示所有图像。
整个文本(包括图像)被剪切,好像它没有正确加载一样
我发现这在三星Galaxy S3上比在三星S Plus上发生得更频繁
在S3上,我有时只加载1或1.5张图像,其余图像被剪切掉
S Plus总是加载所有4个图像,但很少会删除文本的最后2或3个句子。
我认为这是AsyncTask的一种计时问题,但我之前从未使用它。
我知道这是一个非常大的帖子,但我希望有人还可以帮助我。
祝你好运
Siggy
答案 0 :(得分:1)
好的,我很蠢......我解决了!
如果我从互联网上加载图片,我忘了我只需要AsyncTask。对于本地图像,我不需要它。
感兴趣的解决方案:
ImageGetter imgGetter = new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath();
Drawable d = Drawable.createFromPath(sdcard+source);
d.setBounds(0, 0, 0 + (int)(d.getIntrinsicWidth()), 0
+ (int) (d.getIntrinsicHeight()));
return d;
}
};
Spanned htmlSpan = Html.fromHtml(textAndImage, imgGetter, null);
textView.setText(htmlSpan);