#java #android
#java #Android
Вопрос:
Я пытаюсь поместить изображение с URL-адреса и отобразить его в textview. когда я использую вариант 2, изображение отображается идеально,
но в случае 1 нет. ошибка «неизвестный протокол: данные» и «W / AwContents: ошибка nativeOnDraw; очистка до цвета фона»
//case 1
// String base_url = "<p>Image 1 : <img src="data:image/jpeg;base64,/9j/4AAQSk...
//case 2
String base_url = "<p>Image 1 : <img src="http://example.com/android/tryout/logo.png"></img></p>";
Spanned span2 = Html.fromHtml(base_url,getImageHTML(),null);
TextView tv = (TextView)findViewById(R.id.target);
tv.setText(span2);
и это моя функция
public Html.ImageGetter getImageHTML() {
Html.ImageGetter imageGetter = new Html.ImageGetter() {
public Drawable getDrawable(String source) {
try {
Drawable drawable = Drawable.createFromStream(new URL(source).openStream(), "src");
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
return drawable;
} catch(IOException exception) {
Log.v("IOException", exception.getMessage());
return null;
}
}
};
return imageGetter;
}
Спасибо за ответ.
Комментарии:
1. внутри
getDrawable
вы должны декодировать свой текст base64, еслиsource
он начинается с «данные: изображение / jpeg»2. о, я понимаю. как я могу расшифровать это, сэр?
3. извините, я полностью новичок в Android. я пробую этот код, но приложение перестало работать byte[] decodedString = Base64.decode (источник, Base64.DEFAULT); Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString. длина); Drawable drawable = Drawable.createFromStream(новый URL(декодированный байт. toString()).openStream(), «src»); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight()); возвращает drawable;
4. смотрите
Base64InputStream
5. все еще появляется ошибка