1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bakerj-Android-InfiniteCards

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

InfiniteCards

Лицензия

Бесконечный UI для смены карт в Android, поддерживающий кастомные анимации
Документация на китайском

Пример экрана

Установка через Gradle и JCenter

implementation 'com.bakerj:infinite-cards:1.0.2'

Атрибуты компонента

  • animType : тип анимации
    • front : перемещает выбранную карту на первое место
    • switchPosition : перемещает выбранную карту на первое место, а первую карту — на позицию выбора
    • frontToLast : перемещает первую карту на последнее место
  • cardRatio : соотношение размера карты
  • animDuration : длительность анимации каждой карты
  • animAddRemoveDelay : задержка анимации добавления и удаления между каждым карточным элементом
  • animAddRemoveDuration : длительность анимации добавления и удаления каждого карточного элемента## Как использовать

Разметка в XML

<com.bakerj.infinitecards.InfiniteCardView
        android:id="@+id/view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        infiniteCard:animDuration="1000"
        infiniteCard:cardRatio="1"/>

Установка адаптера

Просто расширяйте базовый адаптер

class MyAdapter extends BaseAdapter {
  ...
}
mAdapter = new MyAdapter(resId);
mCardView.setAdapter(mAdapter);

Преобразования анимаций и интерполяторы

По умолчанию

Если вы используете все анимации по умолчанию, ничего дополнительно делать не требуется.

mCardView.setAnimInterpolator(new LinearInterpolator());
mCardView.setTransformerToFront(new DefaultTransformerToFront());
mCardView.setTransformerToBack(new DefaultTransformerToBack());
mCardView.setZIndexTransformerToBack(new DefaultZIndexTransformerCommon());

Кастомизация

mCardView.setTransformerToBack(new AnimationTransformer() {
    @Override
    public void transformAnimation(View view, float fraction, int cardWidth, int cardHeight, int fromPosition, int toPosition) {
        int positionCount = fromPosition - toPosition;
        float scale = (0.8f - 0.1f * fromPosition) + (0.1f * fraction * positionCount);
        ViewHelper.setScaleX(view, scale);
        ViewHelper.setScaleY(view, scale);
        if (fraction < 0.5) {
            ViewCompat.setRotationX(view, 180 * fraction);
        } else {
            ViewCompat.setRotationX(view, 180 * (1 - fraction));
        }
    }
});

Преобразование анимации```java

@Override public void transformInterpolatedAnimation(View view, float fraction, int cardWidth, int cardHeight, int fromPosition, int toPosition) { int positionCount = fromPosition - toPosition; float scale = (0.8f - 0.1f * fromPosition) + (0.1f * fraction * positionCount); ViewHelper.setTranslationY(view, -cardHeight * (0.8f - scale) * 0.5f - cardWidth * (0.02f * fromPosition - 0.02f * fraction * positionCount)); }


```java
mCardView.setZIndexTransformerToBack(new ZIndexTransformer() {
    @Override
    public void transformAnimation(CardItem card, float fraction, int cardWidth, int cardHeight, int fromPosition, int toPosition) {
        if (fraction < 0.4f) {
            card.zIndex = 1f + 0.01f * fromPosition;
        } else {
            card.zIndex = 1f + 0.01f * toPosition;
        }
    }

    @Override
    public void transformInterpolatedAnimation(CardItem card, float fraction, int cardWidth, int cardHeight, int fromPosition, int toPosition) {

    }
});
## Лицензия

InfiniteCards распространяется под лицензией [Apache 2.0](license.txt).

Авторское право © 2017 BakerJ.

Лицензировано под лицензией Apache, Версия 2.0 («лицензия»); вы можете использовать этот файл только в соответствии с лицензией. Вы можете получить копию лицензии по следующему адресу:

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

Если это требует применимого закона или было согласовано письменно, программное обеспечение, распространяемое по лицензии, распространяется на условиях «КАК ЕСТЬ». БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ В ЛЮБОМ ВИДЕ, явных или подразумевающихся. Смотрите лицензию для конкретного языка, регулирующего права и условия использования, предусмотренные лицензией.


Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Можно настроить динамические эффекты для переключения видов карточек. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/bakerj-Android-InfiniteCards.git
git@api.gitlife.ru:oschina-mirror/bakerj-Android-InfiniteCards.git
oschina-mirror
bakerj-Android-InfiniteCards
bakerj-Android-InfiniteCards
master