Как привести TransitionDrawable к BitmapDrawable? - PullRequest
0 голосов
/ 18 ноября 2018

Я использую библиотеки PhotoView и Glide для моего проекта Android.Приложение извлекает изображения из URL и отображает их в GridView.Когда пользователь нажимает на изображение, оно загружается в просмотр фотографий, который находится внутри фрагмента той же активности.

Теперь я хочу установить это изображение в качестве обоев, поэтому я написал в слушателе нажатия кнопки следующее:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(getActivity());
bitmap = ((BitmapDrawable) photoView.getDrawable()).getBitmap();
try{
    wallpaperManager.setBitmap(bitmap);
    Toast.makeText(getActivity(), "wallpaper set", Toast.LENGTH_SHORT).show();
}catch(IOException e){
     e.printStackTrace();
}

Ошибка в следующей строке:

bitmap = ((BitmapDrawable) photoView.getDrawable()).getBitmap();

Ошибка: невозможно преобразовать TransitionDrawable в BitmapDrawable

Как привести его?или есть другой способ установить обои?

1 Ответ

0 голосов
/ 18 ноября 2018
    ImageVIEW.setImageBitmap( getUri( Uri.parse( blob ) ) );


private Bitmap getUri(Uri uri) {
    ParcelFileDescriptor parcelFileDescriptor = null;
    try {
        parcelFileDescriptor = activity.getContentResolver().openFileDescriptor( uri, "r" );
        FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
        Bitmap image = BitmapFactory.decodeFileDescriptor( fileDescriptor );
        parcelFileDescriptor.close();
        return image;
    } catch (Exception e) {
        Log.e( TAG, "Failed to load image.", e );
        return null;
    } finally {
        try {
            if (parcelFileDescriptor != null) {
                parcelFileDescriptor.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
            Log.e( TAG, "Error closing ParcelFile Descriptor" );
        }
    }

все детали по этой ссылке

...