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

OSCHINA-MIRROR/bakerj-Android-InfiniteCards

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать

A permissive license whose main conditions require preservation of copyright and license notices. Contributors provide an express grant of patent rights. Licensed works, modifications, and larger works may be distributed under different terms and without source code.

Permissions
  • Commercial use
  • Modification
  • Distribution
  • Patent use
  • Private use
Limitations
  • Trademark use
  • Liability
  • Warranty
Conditions
  • License and copyright notice
  • State changes
README.md 5.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 06:34 44ed4a5

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 )

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

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