public class TestButton extends Activity {
/** Called when the activity is first created. */
ImageButton imgBtn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imgBtn = (ImageButton) findViewById(R.id.image);
//String url = "http://thenextweb.com/apps/files/2010/03/google_logo.jpg";
String url1 = "http://trueslant.com/michaelshermer/files/2010/03/evil-google.jpg";
Drawable drawable = LoadImage(url1);
imgBtn.setImageDrawable(drawable);
}
private Drawable LoadImage(String url) {
try {
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src");
return d;
} catch (Exception e) {
return null;
}
}
}
上面是我用来将图像从web加载到ImageButton的代码片段 . 大多数图像都会显示出来,但是某些网址就像上面的那些网址,即url1,Drawable.createFromStream会返回null!是什么原因以及如何避免或克服这个问题?
2 回答
我今天偶然发现了同样的问题 . 并找到了答案,幸运的是:)有一个bug in SDK, described more or less on that google groups thread .
对我有用的解决方法是:
并确保不要将缓冲区大小设置为超过8k,因为操作系统将使用默认大小而不是您设置的大小(当然记录,但我需要一段时间才注意到;)) .
另一个解决方案是使用FlushedInputStream http://code.google.com/p/android/issues/detail?id=6066