android自定义参数类型转换,可自定义动效的卡片切换视图 – Android-Inf...

InfiniteCards

可自定义动效的卡片切换视图

Screenshot

BzQBra.gif

Gradle引用

compile 'com.bakerj:infinite-cards:1.0.0'

参数

animType : 动效展示类型

front : 将点击的卡片切换到第一个

switchPosition : 将点击的卡片和第一张卡片互换位置

frontToLast : 将第一张卡片移到最后,后面的卡片往前移动一个

cardRatio : 卡片宽高比

animDuration : 卡片动效时间

animAddRemoveDelay : 卡片组切换时,添加与移出时,相邻卡片展示动效的间隔时间

animAddRemoveDuration : 卡片组切换时,添加与移出时,卡片动效时间

使用

xml布局

android:id="@+id/view"

android:layout_width="match_parent"

android:layout_height="match_parent"

infiniteCard:animDuration="1000"

infiniteCard:cardRatio="1"/>

设置Adapter

直接继承BaseAdapter

class MyAdapter extends BaseAdapter{

...

}

mAdapter = new MyAdapter(resId);

mCardView.setAdapter(mAdapter);

动效的转换和插值

默认

默认情况下可以不设置,或者设置为各种Default

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));

}

});

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) {

}

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值