Я бы хотел, чтобы любое изображение ImageView
было круглым с рамкой.
Я искал, но не мог найти никакой полезной информации (все, что я пробовал, не работало).
Как я могу добиться этого с помощью XML: создать ImageView
с определенным SRC и сделать его круглым с рамкой?
Ответы:
Вы можете сделать простой круг с белой рамкой и прозрачным содержимым с формой.
Затем сделайте список слоев пригодным для рисования и поместите его в качестве фона для вашего изображения.
и поместите его в качестве фона для вашего изображения.
У тебя будет что-то подобное.
источник
Это самый простой способ, который я разработал. Попробуй это.
Если вы работаете над версиями Android выше Lollipop
Добавление границы в раунд ImageView - ПОСЛЕДНЯЯ ВЕРСИЯ
Оберните его другим CardView, немного большим, чем внутренний, и установите его цвет фона, чтобы добавить рамку к круглому изображению. Вы можете увеличить размер внешнего CardView, чтобы увеличить толщину границы.
источник
Я надеюсь, что это поможет вам.
1) CircleImageView
Не забывайте реализацию: скрипты Gradle> build.gradle (Модуль: приложение)> зависимости
Для полного описания, пожалуйста, проверьте здесь: Источник здесь.
2) CircularImageView
Не забывайте реализацию: скрипты Gradle> build.gradle (Модуль: приложение)> зависимости
Для полного описания, пожалуйста, проверьте здесь: Источник здесь.
источник
С помощью библиотеки glide и класса RoundedBitmapDrawableFactory этого легко достичь. Возможно, вам потребуется создать круглое изображение заполнителя.
Glide V4:
Glide V3:
Для Picasso RoundedTransformation это действительно отличное решение, которое дает дополнительную опцию округления изображения по верхнему или нижнему краю.
источник
Glide.with(context).load(imgUrl).apply(new RequestOptions().centerCrop()) .into(imageView)
.apply(RequestOptions.circleCropTransform())
GlideApp
сконфигурирован в приложении:GlideApp.with(this).load(url).circleCrop().into(imageView);
.Вышеуказанные методы не работают, если вы используете
src
атрибут. То, что я сделал, это поместил два изображения в макет фрейма один над другим, вот так:Просто поместите файл circle_crop.png в папку для рисования, которая имеет форму размеров вашего изображения (квадрат в моем случае) с белым фоном и прозрачным кружком в центре. Вы можете использовать это изображение, если хотите иметь квадратное изображение.
Просто скачайте картинку выше.
источник
Ниже приведен один из самых простых способов сделать это, используя следующий код:
зависимости
XML-код
Скриншот:
Источник: Circular ImageView GitHub Repository
источник
Это сделает свое дело:
rectangle.xml
circle.xml
profile_image.xml (Список слоев)
Ваш макет
источник
Просто используйте
ShapeableImageView
предоставленную библиотеку компонентов материалов.Что-то вроде:
с участием:
Примечание: требуется как минимум версия
1.2.0-alpha03
.источник
Вы можете просто использовать CardView без какой-либо внешней библиотеки
источник
Я использую shape = "oval" вместо "ring" ниже. Это сработало для меня. Чтобы изображение не выходило за рамки, я использую
<padding>
и устанавливаю<adjustViewBounds>
значение true в моем<ImageView>
. Я пробовал с изображениями размером от 50 х 50 пикселей до 200x200 пикселей.источник
android:scaleType="fitCenter"
@Jyotman Singh, ответ очень хороший (для сплошного фона), поэтому я хотел бы улучшить его, поделившись векторной графикой, которую можно перекрасить в соответствии с вашими потребностями, также это удобно, поскольку цельная векторная форма хорошо масштабируется.
Это прямоугольник (@ drawable / shape_round_profile_pic):
Использование такое же:
источник
GlideApp.with(getApplicationContext()).asBitmap().load(profilePhotoUrl) .circleCrop()
Просто используйте эти строки кода, и все готово:
Не забудьте импортировать:
Добавьте эту библиотеку в build.gradle:
источник
Попробуй это.
и использовать этот ImageView в макете, как:
источник
Если вы используете Material Design в своем приложении, используйте это
источник
Этот класс является пользовательским круговым изображением с тенью, обводкой, насыщенностью, и с помощью этого пользовательского кругового изображения вы можете сделать изображение в круговой форме с радиусом. Ребята для Circular Shadow ImageView Нет необходимости Github этого класса достаточно.
Добавление CircularImageView в ваш макет
источник
На самом деле вы можете использовать то, что Google предоставляет через библиотеку поддержки RoundedBitmapDrawableFactory ( здесь и здесь ), вместо использования сторонней библиотеки:
Gradle:
MainActivity.kt
разреш / макет / activity_main.xml
Рез / рисуем / avatar_1.xml
Результат:
И, предположим, вы хотите добавить границу поверх него, вы можете использовать это, например:
stroke_drawable.xml
И добавьте
android:foreground="@drawable/stroke_drawable"
к ImageView в XML-файле макета, и вы получите это:Я не уверен, как добавить тень (это будет работать на старых версиях Android), хотя. Используя FloatingActionButton (из зависимости "com.google.android.material: material" ), мне не удалось заставить растровое изображение заполнить сам FAB. Использование этого может быть даже лучше, если это работает.
РЕДАКТИРОВАТЬ: если вы хотите добавить тень возвышения (доступно из API 21), вы можете немного изменить то, что я написал:
Внутри XML-файла макета:
CircularShadowViewOutlineProvider.kt
В коде:
Результат:
источник
У меня есть простое решение. Создайте новый ресурс Image, щелкнув правой кнопкой мыши имя пакета и выбрав New-> Image asset. Введите имя (любое имя) и путь (местоположение изображения в вашей системе). Затем нажмите Далее и Готово. Если вы введете имя изображения как «img», в папке mipmap будет автоматически создано круглое изображение с именем «img_round».
Затем сделайте это:
Ваш предварительный просмотр может по-прежнему отображать прямоугольное изображение. Но если вы запустите приложение на своем устройстве, оно будет круглым.
источник
Создайте CustomImageview, затем просто переопределите его
onDraw()
метод следующим образом:В случае, если вы хотите код для пользовательского виджета, а также: -
Также добавьте следующий код в ваш файл res / attrs.xml, чтобы создать необходимый атрибут: -
источник
источник
если вы хотите вырезать изображение для отображения по кругу, здесь вы идете
источник
просто используйте этот простой код: сначала добавьте зависимость:
Затем добавьте в макет XML следующий код: -
источник
Кроме того, эти две библиотеки могут помочь вам.
https://github.com/vinc3m1/RoundedImageView
реализовать код ниже:
Простое использование:
https://github.com/chirag-kachhadiya/RoundedImageView
Простое использование:
реализовать код ниже:
источник
Как было описано в ответе Орхана Обута, но с изменениями:
чтобы избежать растяжений изображения. И img.xml:
(без изменений) и circle.xml:
здесь толщина кольца стала максимальной - 1000dp,
а radiusRatio - это половина ширины изображения (максимальная ширина кольца, да?) - 2,
и штрих необходим для требуемой границы, если это необходимо.
Я использовал квадратное изображение PNG (profile.png), кстати. С такой же шириной и высотой. Это верно для произвольных размеров ImageView.
источник