- Как автоматически изменить размер изображения для разных размеров экрана Android Studio?
- Как масштабировать изображение в ImageView, чтобы сохранить соотношение сторон
- Как изменить размер растрового изображения в Android?
- 13 ответов
- Увеличение и уменьшение масштаба изображения в Android
- Как автоматически изменить размер изображения для разных размеров экрана Android Studio?
Как автоматически изменить размер изображения для разных размеров экрана Android Studio?
Я начинаю разрабатывать приложения для устройств Android с помощью Android Studio. Пока я тестировал свое приложение на совместимость по размеру экрана, я заметил, что изображения не меняют размер изображения автоматически.
Расположение изображения выглядит совершенно по-разному на разных размерах экрана. Если экран достаточно мал, изображение иногда будет размещено за пределами области видимости.
Я просмотрел весь интернет, но меня немного смущает вопрос о том, как сделать приложение совместимым с большинством размеров экрана (не считая планшетов). Я пошел на сайт Android, и они сказали, чтобы использовать wrap_content. но если я использую это, я не смогу отрегулировать высоту и ширину изображения в соответствии с тем, как я этого хочу.
Кто-нибудь знает, как сделать автоматическое изменение размера изображения в соответствии с размером экрана?
Вот изображения того, что происходит:
Это макет приложения:
Вот как я хочу, чтобы это выглядело (пиксель 3):
Но вот так это выглядит на меньшем экране (Nexus 5):
В XCode есть функция, называемая auto-resize, которая автоматически изменяет размер контента для вас. Есть ли в андроид студии нечто подобное?
Источник
Как масштабировать изображение в ImageView, чтобы сохранить соотношение сторон
В Android, я определил ImageView «S layout_width быть fill_parent (который занимает всю ширину телефона).
Если изображение, к которому я добавляю, ImageView больше, чем layout_width Android, то его масштабируется, верно? Но как насчет высоты? Когда Android масштабирует изображение, сохранится ли соотношение сторон?
Что я обнаружил, так это то, что в верхней и нижней части экрана есть некоторое пустое пространство, ImageView когда Android масштабирует изображение, которое больше, чем ImageView . Это правда? Если да, как я могу устранить этот пробел?
Да, по умолчанию Android уменьшит изображение до размера ImageView, сохраняя соотношение сторон. Однако убедитесь, что вы устанавливаете изображение в ImageView, используя android:src=»https://qastack.ru/programming/2521959/» вместо android:background=». » . src= позволяет масштабировать изображение с сохранением пропорций, но background= масштабирует и искажает изображение, чтобы оно точно соответствовало размеру ImageView. (Вы можете использовать фон и источник одновременно, что может быть полезно для таких вещей, как отображение рамки вокруг основного изображения, используя только один ImageView.)
Вы также android:adjustViewBounds должны убедиться, что ImageView изменяет свой размер в соответствии с масштабированным изображением. Например, если у вас есть прямоугольное изображение в том, что обычно было бы квадратным ImageView, AdjustViewBounds = true заставит его изменить размеры ImageView, чтобы быть также прямоугольным. Это затем влияет на то, как другие представления расположены вокруг ImageView.
Затем, как написал Самух, вы можете изменить способ масштабирования изображений по умолчанию с помощью android:scaleType параметра. Кстати, самый простой способ узнать, как это работает, было бы просто немного поэкспериментировать! Только не забудьте взглянуть на макеты в самом эмуляторе (или на реальном телефоне), так как предварительный просмотр в Eclipse обычно неверен.
Источник
Как изменить размер растрового изображения в Android?
у меня есть растровое изображение, взятое из строки Base64 из моей удаленной базы данных, ( encodedImage — строка, представляющая изображение с Base64):
profileImage — это мой ImageView
хорошо, но я должен изменить размер этого изображения, прежде чем показывать его на моем ImageView мой макет. Я должен изменить его размер до 120×120.
может кто подскажет код, чтобы изменить его?
примеры, которые я нашел, не могут быть применены к полученной строке base64 растровый.
13 ответов
EDIT: как предложил @aveschini, я добавил bm.recycle(); для утечек памяти. Обратите внимание, что если вы используете предыдущий объект для каких-то других целей, то обрабатывайте соответственно.
Если у вас уже есть растровое изображение, вы можете использовать следующий код, чтобы изменить размер:
масштаб на основе соотношение сторон:
для использования высоты в качестве базового intead изменения ширины на:
масштабирование растрового изображения с заданным максимальным размером и шириной при сохранении соотношения сторон:
кто-то спросил, Как сохранить соотношение сторон в этой ситуации:
вычислите коэффициент, который вы используете для масштабирования, и используйте его для обоих измерений. Допустим, вы хотите, чтобы изображение составляло 20% экрана по высоте
для получения разрешения экрана у вас есть это решение: получить размеры экрана в пикселях
попробуйте этот код :
Я надеюсь, что это полезно.
попробуйте это: Эта функция пропорционально изменяет размер растрового изображения. Когда последний параметр установлен в «X», newDimensionXorY рассматривается как новая ширина s, а при установке » Y » — Новая высота.
Источник
Увеличение и уменьшение масштаба изображения в Android
Привет, я новичок в приложении для Android. Я хочу использовать Zoom-in и Zoom-out ImageView. Я пробовал большую часть образца, но во всем этом изображении в представлении изображения появляется Zoom-in и Zoom-out. Я хочу, чтобы Zoom-in и Уменьшение ImageView. Я хочу увеличить ширину и высоту изображения во время Zoom-in и уменьшить ширину и высоту изображения в режиме Zoom-out. Может ли кто-нибудь предложить мне?
Сделайте два класса java
Сделать второй класс
Следуйте приведенному ниже классу, который используется для увеличения и уменьшения масштаба для ImageView.
У других реализаций у всех есть своего рода недостаток. Поэтому я в основном перепутал их и придумал это.
Создайте собственное пользовательское представление:
Затем добавьте изображение следующим образом:
Добавьте представление, подобное этому в XML:
Просто используйте этот класс: TouchImageView
Это еще одна реализация, основанная на кодексе, опубликованном Николасом Тайлером.
Исправлены следующие ошибки:
- Установка minScale на число меньше 1 теперь работает
- Вам не нужно использовать setImageBitmap() для установки изображения (вы можете использовать, например, setImageResource()
- Все конструкторы теперь работают правильно
Следующие вещи, среди прочих, приведены в порядок:
OnTouchListener не используется, это необязательно, потому что класс может просто реализовать метод onTouchEvent() .
Назначение right = width * saveScale — width — (2 * redundantXSpace * saveScale); Было упрощено до right = (originalBitmapWidth * saveScale) — width который, по моему варианту, намного менее запутан.
Это не идеально, но здесь вы идете:
Я сделал свое собственное изображение с максимальным увеличением. Для кода Чирага Раваля нет ограничений / границ, поэтому пользователь может перетащить изображение с экрана.
Вот класс CustomImageView:
Так вы можете использовать его в своей деятельности:
Я получил самый полезный ответ от @Nicolas Tyler, но у меня были проблемы с работой синтаксиса и логики. Я также не хотел никакого пространства Альфы, и моя Алгебра была ржавой! Через 3 дня я собрал свою версию.
Мой ответ отличается от @Nicolas Tyler следующим:
Различные имена переменных, которые я нашел, имели больше смысла в базовом контекстующем использовании
Этот класс изображения Pinch-Zoom НЕ отображает альфа-пространство и позволит вам увеличивать и уменьшать масштаб и не пропускать изображение под кадром и отображать альфа-пространство
Добавлены глубокие комментарии к разделу матрицы, чтобы объяснить, что происходит с математикой
Этот класс изображений также позволит вам перейти в resourceId и создать из него растровое изображение
Гораздо более простые алгоритмы как для масштабирования, так и для перевода и нескольких переменных
Изменение изображения внутри этого приведет к тому, что он будет увеличивать / уменьшать масштаб, так что новое изображение занимает контейнер представления
Подробное обновление ресурсов в Алгебре можно найти здесь: https://youtu.be/IiXB6tYtY4w?t=4m12s Это видео охватывает ядро матриц Scalar и Translation (и поможет вам разобраться в материалах MTRANS_X и MTRANS_Y). Если у вас возникнут вопросы, и я сделаю все возможное, чтобы ответить (но я НЕ эксперт по алгебре).
Этот код работает и реализует двойное нажатие, чтобы вернуться к исходному размеру изображения.
1-й шаг. В вашем макете xml поставьте это:
Шаг 2. Создайте файл (TouchImageView.java) с помощью класса TouchImageView:
И, наконец, сделайте звонок в своей основной деятельности:
Я видел много кода, и после моих настроек он работает. Наслаждайтесь!
Я думаю, что ответ Чирага Раваля замечательный!
Единственное, что можно было бы улучшить, – это переместить весь этот код внутри какого-либо класса, например:
И добавление исходной инициализации матрицы изображений для предотвращения масштабирования после первого нажатия:
Кстати, это исправит ошибку, о которой говорили Мухаммед Умар и Баз
PS Также могут быть полезны PS с ограничениями масштабирования Max и Min. Например, макс. Зум – 2X, а min zoom – исходная шкала, когда изображение установлено на экране:
You should put the image in webview and work with that. Zoom in / out controls are available in webview.
Простой способ:
Add below line in build.gradle :
I needed something similar, but needed the ability to get the dimensions easily and also drag/drop. I based this off of the answer @Nicolas Tyler gave and modified it from there.
The features are pinch zoom in/out, long press to vibration/highlighted drag/drop.
To use it add this CustomZoomView class to your project.
…then add this to your activity
…and this in your view in xml.
…and add this to your manifest
Here is my solution, it is based on @alexbirkett’s solution.
Method to call the About&support dialog
I am Using this one it is working perfectly.
Just change ACTION_MOVE_EVENT in Chirag Raval Answer to set ZOOM_IN LIMIT
Источник
Как автоматически изменить размер изображения для разных размеров экрана Android Studio?
Я начинаю разрабатывать приложения для устройств Android с помощью Android Studio. Пока я тестировал свое приложение на совместимость по размеру экрана, я заметил, что изображения не меняют размер изображения автоматически.
Расположение изображения выглядит совершенно по-разному на разных размерах экрана. Если экран достаточно мал, изображение иногда будет размещено за пределами области видимости.
Я просмотрел весь интернет, но меня немного смущает вопрос о том, как сделать приложение совместимым с большинством размеров экрана (не считая планшетов). Я пошел на сайт Android, и они сказали, чтобы использовать wrap_content. но если я использую это, я не смогу отрегулировать высоту и ширину изображения в соответствии с тем, как я этого хочу.
Кто-нибудь знает, как сделать автоматическое изменение размера изображения в соответствии с размером экрана?
Вот изображения того, что происходит:
Это макет приложения:
Вот как я хочу, чтобы это выглядело (пиксель 3):
Но вот так это выглядит на меньшем экране (Nexus 5):
В XCode есть функция, называемая auto-resize, которая автоматически изменяет размер контента для вас. Есть ли в андроид студии нечто подобное?
Источник