Подтвердить что ты не робот

Android Curved Listview

Я реализую listview в android, который будет выглядеть так же, как и прокрутка enter image description here

Я делаю это, установив параметры макета надутых строк в getView моего адаптера, но проблема, которая возникает из-за этого, заключается в том, что просмотр списка становится рывком. то есть он обновляет только строки, когда одна строка полностью перешла с экрана, и getView был вызван, давая новые параметры всем видимым строкам, в результате чего может быть применена анимация jerks, и может быть строго фиксирована позиция прокрутки listview. то, что я хочу, - это плавный переход между видами, т.е. когда список перемещается даже немного, внутренние взгляды должны точно масштабироваться с этим движением.


Это была моя первая реализация уровня для решения этой проблемы. Надеюсь, что это поможет любому, кто может заинтересоваться. ArrHeight и arrWidth динамически создаются при запуске активности с использованием алгоритма пути Безье

public class TimelinePinsAdapter extends ParentLazyAdapter {

    LinearLayout ll_PinsContainer;
    LinearLayout.LayoutParams llParams_PinParameters;

    public TimelinePinsAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
        super(a, d);
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        vi = convertView;
        if (convertView == null)
            vi = inflater.inflate(R.layout.rowsinflate, null, false);
        ll_PinsContainer = (LinearLayout) vi.findViewById(R.id.item);
        llParams_PinParameters =
            new LinearLayout.LayoutParams(0,
                (int) TimeLineActivity.arrHeight[position % 7]);
        ll_PinsContainer.setLayoutParams(llParams_PinParameters);

        return vi;
    }
}
4b9b3361

Ответ 1

Пытаясь добиться "изогнутого" списка, я столкнулся с решением, воровав из библиотеки поддержки Android Wear beta v2.

Ключом является новый WearableRecyclerView - см. всю информацию, которая вам нужна по этой ссылке. Подробная информация о том, как добавить библиотеку поддержки в ваш проект: https://developer.android.com/wear/preview/start.html

Этот вид ресайзера позволяет вам создавать настраиваемый параметр OffsetingHelper для достижения специальных преобразований на основе текущей позиции каждого элемента списка.

Кстати, вы все равно должны использовать RecyclerView, так как это перерабатывает ваши взгляды и улучшает производительность; это все, кроме устранения отвратительной анимации, которую вы упомянули, поскольку новые представления не нужно создавать каждый раз, когда они появляются.