CircleImageView README

The project's README from github.com/hdodenhof/CircleImageView. As one markdown file: README.md.

CircleImageView

A fast circular ImageView perfect for profile images. This is based on RoundedImageView from Vince Mi which itself is based on techniques recommended by Romain Guy.

CircleImageView

It uses a BitmapShader and does not:

As this is just a custom ImageView and not a custom Drawable or a combination of both, it can be used with all kinds of drawables, i.e. a PicassoDrawable from Picasso or other non-standard drawables (needs some testing though).

Gradle

dependencies {
    ...
    implementation 'de.hdodenhof:circleimageview:3.1.0'
}

Usage

<de.hdodenhof.circleimageview.CircleImageView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/profile_image"
    android:layout_width="96dp"
    android:layout_height="96dp"
    android:src="@drawable/profile"
    app:civ_border_width="2dp"
    app:civ_border_color="#FF000000"/>

Limitations

FAQ

How can I use a VectorDrawable with CircleImageView?

Short answer: you shouldn't. Using a VectorDrawable with CircleImageView is very inefficient. You should modify your vectors to be in a circular shape and use them with a regular ImageView instead.

Why doesn't CircleImageView extend AppCompatImageView?

Extending AppCompatImageView would require adding a runtime dependency for the support library without any real benefit.

How can I add a selector (e.g. ripple effect) bound to a circle?

There's currently no direct support for a circle bound selector but you can follow these steps to implement it yourself.

How can I add a gap between image and border?

Adding a gap is also not supported directly but there's a workaround.

Changelog

License

Copyright 2014 - 2020 Henning Dodenhof

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

CircleImageView (hdodenhof/CircleImageView)

Searching Database…

Что это такое?CircleImageView — это быстрая круговая ImageView для Android, созданная для аватарок. Это кастомный View, который вы вставляете в свои layout-файлы вместо обычного ImageView.
Чем она отличается от обычной ImageView?Она рисует изображение как круг с помощью BitmapShader — без копии битмапа, без clipPath, без двойной отрисовки через setXfermode — поэтому работает быстро. Будучи кастомной ImageView, она принимает любой drawable, в том числе из Picasso.
Как добавить её в свой проект?Добавьте Gradle-зависимость из раздела Gradle в README в build.gradle вашего приложения. Версия 3.x построена на AndroidX, так что используйте её в проекте на AndroidX.
Она тянет за собой дополнительные библиотеки?Нет — автор намеренно не наследует AppCompatImageView, что добавило бы зависимость от support library во время выполнения без реальной пользы.
Можно ли изменить ScaleType или использовать adjustViewBounds?Нет. ScaleType всегда CENTER_CROP, и при попытке его изменить выбрасывается исключение; adjustViewBounds не поддерживается — так задумано, потому что библиотека нацелена на аватарки.
Что можно настроить у круга?Цвет и толщину рамки, цвет фона круга, отступы (padding) и elevation. Все его XML-атрибуты имеют префикс 'civ', например civ_border_width.
Она реагирует на нажатия вне круга?Нет — начиная с 3.0.0 обработка касаний ограничена областью круга, поэтому нажатия за пределами круглого изображения не попадают во view.
Можно ли использовать с ней VectorDrawables?Не стоит — отрисовка векторов через неё очень неэффективна. В README рекомендуется преобразовать векторы в круглую форму и показывать их через обычную ImageView.
Переход с 2.x на 3.x проходит безболезненно?В основном да, но в 3.0.0 библиотека перешла на AndroidX, а все устаревшие свойства и методы были удалены, так что при переходе обновите импорты и все вызовы устаревших методов.
Creator
hdodenhof
Size
1 MB
Stars
14.5K
Updated
CommitJan 10
Age
12y
Commits · 90 Days