Я хочу отображать изображения и позволять щепотку масштабировать. Мое приложение - это пустое действие с линейной компоновкой с ImageView сверху и под ним горизонтальный линейный макет с некоторыми кнопками. Я попробовал оба PhotoView и TouchImageView Они оба имеют схожие проблемы:Проблемы с Android с щепоткой для увеличения библиотек PhotoView и TouchImageView на портретных изображениях
- меню панели инструментов справа не реагирует на прикосновения (в 4.4.4 и 4.4.2). Кажется, ответит в 5.0.2.
- фотографии, сделанные в портретном режиме, не отображаются или не масштабируются правильно: они используют только часть изображения.
Я посмотрел на код из TouchImageView и думаю, что я могу видеть ответ на проблемы 2: Процедуры получить ширину и высоту от кода, как:
float w = getDrawable().getIntrinsicWidth();
Чтобы правильно отобразить режим портрета фото в моем приложении мне нужно сделать, это
imageRotation = getOrientation(photoFilePath);
imgView.setRotation(imageRotation);
Это вращает фотографии для отображения, но intrinsicWidth и intrinsicHeight не меняются. Таким образом, программное обеспечение масштабирования имеет неправильные размеры. Странно, что этого раньше не было. (Возможно, это моя ошибка.) Если я прав, мне нужно изменить код, чтобы проверить свойство imgView.ROTATION.
Редактирование: я могу обнаружить поворот, а затем изменить высоту и ширину в портретном режиме изображений. Это немного помогает, но этого недостаточно. В изображении отсутствует неиспользованное пустое место. Требуется больше работы, и это выходит за рамки моих навыков.
Спасибо за любую помощь.
Я использую https://github.com/davemorrissey/subsampling-scale-image-view. Попробуй! Это потрясающе, единственный недостаток в том, что вам нужно будет реализовать такие вещи, как hide Toolbar, прикоснуться к себе, но это не очень сложно. – tim687
Привет. Я читал изображение из файла, получал растровое изображение, затем изменял растровое изображение и отображал его. Могу ли я использовать эту библиотеку для отображения растрового изображения? –
Да, вы можете, но есть вещь, к которой я сейчас иду, с растровыми изображениями: масштабирование и перетаскивание изображения значительно медленнее при использовании растрового изображения, которое находится в памяти. Я предлагаю вам сначала сохранить отредактированное изображение, а затем отобразить его с помощью этой библиотеки. – tim687