Можете ли вы мне помочь? Я пробовал:
ImageButton imgbt=(ImageButton)findViewById(R.id.imgbutton);
Uri imgUri=Uri.parse("/data/data/MYFOLDER/myimage.png");
imgbt.setImageUri(imgUri);
но я ничего не видел, просто пустая кнопка.
Можете ли вы мне помочь? Я пробовал:
ImageButton imgbt=(ImageButton)findViewById(R.id.imgbutton);
Uri imgUri=Uri.parse("/data/data/MYFOLDER/myimage.png");
imgbt.setImageUri(imgUri);
но я ничего не видел, просто пустая кнопка.
ImageView.setImageUri работает только для локального Uri, то есть ссылки на файл локального диска, а не URL-адреса изображения в сети.
Вот пример того, как получить растровое изображение из сети.
private Bitmap getImageBitmap(String url) {
Bitmap bm = null;
try {
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
Log.e(TAG, "Error getting bitmap", e);
}
return bm;
}
Получив растровое изображение от getImageBitmap(), используйте: imgView.setImageBitmap(bm);
Это должно быть
Uri imgUri=Uri.parse("file:///data/data/MYFOLDER/myimage.png");
Как насчет этого:
Bitmap bitmap = BitmapFactory.decodeFile(fullFileName);
imgProfileImage.setImageBitmap(bitmap);
Лучше всего избегать создания пути вручную, попробуйте:
imgbt.setImageUri(Uri.fromFile(new File("/data/data/....")));
Я также встретил эту проблему, она ничего не показывала. Я видел что-то подобное в разработчике Android. Он не использовал setImageURI.
private Bitmap getBitmapFromUri(Uri uri, Context context) throws IOException {
ParcelFileDescriptor parcelFileDescriptor =
context.getContentResolver().openFileDescriptor(uri, "r");
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
parcelFileDescriptor.close();
return image;
}
Просто для справки.
String imgPath = Environment.getDataDirectory() + "/data/com.wariyum.signage/files/"+ "221215-085656.619.72.jpg";
//Following lines was expected work, but don't really show up image always - no idea why
//imgZoom.setImageURI(Uri.parse(imgPath));
//following works always perfectly
File imgFile = new File(imgPath);
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
imgZoom.setImageBitmap(myBitmap);
}
Я решил это с помощью рамки. Добавлена эта строка в граду:
implementation 'com.facebook.fresco:fresco:1.8.0'
Init singlton в классе приложений (или другой основной класс в вашем приложении)
Fresco.initialize(applicationContext)
И в финише, используйте его.
XML:
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/avatar"
android:layout_width="110dp"
android:layout_height="110dp" />
Джава:
avatar.setImageURI(user.getAvatarUrl())