Реализация представления карусели как прокрутка списка
Кто-нибудь реализовал как ниже carousel
? Примечание: список пунктов не должен повторяться, средства не должны появляться первыми после достижения последнего элемента. Пожалуйста помоги мне с этим.
[Редактировать]
Я не хочу использовать ListView для этого. кто-нибудь, помогите мне в этом. Спасибо...
3 ответа
Это должно начать вас. Переопределите ваш ListView следующим образом:
private final Transformation mTransformation;
public ListView3d(Context context, AttributeSet attrs) {
super(context, attrs);
if (!isInEditMode()) {
setStaticTransformationsEnabled(true);
mTransformation = new Transformation();
mTransformation.setTransformationType(Transformation.TYPE_MATRIX);
} else {
mTransformation = null;
}
}
@Override
protected boolean getChildStaticTransformation(View child, Transformation t) {
mTransformation.getMatrix().reset();
final int childTop = Math.max(0,child.getTop());
final int parentHeight = getHeight();
final float scale = (float)(parentHeight-(childTop/2))/getHeight();
Log.i("scale",scale+"");
final float px = child.getLeft() + (child.getWidth()) / 2;
final float py = child.getTop() + (child.getHeight()) / 2;
mTransformation.getMatrix().postScale(scale, scale, px, py);
t.compose(mTransformation);
return true;
}
в getChildStaticTransformation вы можете достигать различных эффектов (даже 3d), соответствующим образом манипулируя матрицей. Очень хороший учебник (который использует другую технику можно найти здесь.
Это может быть достигнуто с помощью пользовательского представления списка. Использование адаптера в списке возможностей сделает это возможным. взгляд здесь сделает это более понятным для вас.
Вы можете попробовать эту карусель с RecycleView. Ссылка: Карусель ДемоПроект