Реализация представления карусели как прокрутка списка

Кто-нибудь реализовал как ниже 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. Ссылка: Карусель ДемоПроект

Другие вопросы по тегам