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.
Бесконечный UI для смены карт в Android, поддерживающий кастомные анимации
Документация на китайском
implementation 'com.bakerj:infinite-cards:1.0.2'
animType
: тип анимации
front
: перемещает выбранную карту на первое местоswitchPosition
: перемещает выбранную карту на первое место, а первую карту — на позицию выбораfrontToLast
: перемещает первую карту на последнее местоcardRatio
: соотношение размера картыanimDuration
: длительность анимации каждой картыanimAddRemoveDelay
: задержка анимации добавления и удаления между каждым карточным элементомanimAddRemoveDuration
: длительность анимации добавления и удаления каждого карточного элемента## Как использовать<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));
}
}
});
@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 )