Реализация тени для Android RecyclerView, основанная на AShadow2.
Добавьте следующее в build.gradle вашего проекта:
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
Добавьте эту строку в build.gradle вашего модуля:
implementation 'com.github.Mosect:ARecyclerShadow:1.0.1'
Абстрактный класс ItemDecoration
для отображения тени, требует реализации метода getShadowKey
для предоставления тени каждому элементу.### SingleItemShadow
Наследуется от ShadowItemDecoration; если все элементы RecyclerView используют одну и ту же тень, можно использовать этот объект для отображения тени для элементов RecyclerView.
// Создайте ключ тени
RoundShadow.Key shadowKey = new RoundShadow.Key();
shadowKey.solidColor = Color.parseColor("#ffffff");
shadowKey.shadowColor = Color.parseColor("#0d000000");
shadowKey.shadowRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10,
getResources().getDisplayMetrics());
shadowKey.radii = new float[8];
float round = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10,
getResources().getDisplayMetrics());
Arrays.fill(shadowKey.radii, round);
// Создайте теневой рендер для элемента
SingleItemShadow itemShadow = new SingleItemShadow(shadowKey);
// Добавьте рендер в RecyclerView
recyclerView.addItemDecoration(itemShadow);
Реализация декоратора ItemDecoration для применения тени между элементами, поддерживающая только LinearLayoutManager. Можно добавлять несколько блоков (Block) в LinerRoundShadow, каждый из которых представляет собой отдельную тень. Код для добавления блока выглядит следующим образом:```java // Создание объекта для рендера блока тени LinerRoundShadow shadow = new LinerRoundShadow(); // Получение блока тени LinearRoundShadow.Block block = shadow.block(); // Установка позиций начала и конца блока block.setStart(start).setEnd(end); // Создание ключа для тени RoundShadow.Key key = new RoundShadow.Key(); // Угол закругления тени float round = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, getResources().getDisplayMetrics()); key.radii = new float[8]; Arrays.fill(key.radii, round); // Цвет заливки тени key.solidColor = Color.parseColor("#ffffff"); // Размер радиуса тени key.shadowRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics()); // Цвет тени key.shadowColor = Color.parseColor("#0d000000"); // Установка ключа тени в блоке block.setShadowKey(key);
recyclerView.addItemDecoration(shadow);
Если данные адаптера изменятся, информацию о блоках в LinerRoundShadow
также потребуется обновить. В этом случае можно вызвать метод LinerRoundShadow.clearBlock
для очистки информации о блоках перед добавлением новых.
Перейти к описанию использования AShadow2
ICQ: 905340954
Электронная почта: zhouliuyang1995@163.com
Сайт: http://www.mosect.com (в разработке)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )