Как создать круговой вид на износ Android?

android listview android-wear-2.0

2103 просмотра

2 ответа

19 Репутация автора

Как я могу создать круговой список для круглых часов, как в Android Wear 2.0?

Нравится:

введите описание изображения здесь

Круговой список можно увидеть в приложении запуска Android Wear.

Автор: adhiti Источник Размещён: 19.07.2016 08:49

Ответы (2)


1 плюс

5135 Репутация автора

Теперь это возможно с Android Wear 2.0 WearableRecyclerView.

Согласно Документам для разработчиков Android :

Wear 2.0 представляет WearableRecyclerViewкласс для отображения и манипулирования вертикальным списком предметов, оптимизированных для круглых дисплеев. WearableRecyclerViewрасширяет существующий RecyclerViewкласс, чтобы обеспечить изогнутый макет и жест круговой прокрутки в носимых приложениях.

Возможно, вы захотите узнать больше об Android Wear 2.0 Preview 3 .

Автор: Sufian Размещён: 01.10.2016 10:09

3 плюса

31 Репутация автора

Прежде всего, вам нужно заменить свой ListView на WearableRecyclerView . Его можно использовать как обычный ListView. Но убедитесь, что вы импортируете правильный из android.support.wear.widget. Не используйте один из android.support.wearable.view. Этот должен быть вычеркнут, так что вам не понадобится много времени, чтобы проверить, правильно ли вы используете. Если есть только один WearableRecyclerView для выбора, убедитесь, что вы добавили compile 'com.android.support:wear:27.0.0'зависимости в ваш файл build.gradle (wear). Также убедитесь, что вы используете <android.support.wear.widget.WearableRecyclerView/>в вашем activity.xml . Если вы просто хотите использовать циклический ListView без какого-либо пользовательского масштабирования элементов, просто вызовите это в своем onLayoutInflated()методе:

your_recyclerview.setEdgeItemsCenteringEnabled(true);
your_recyclerview.setLayoutManager(new WearableLinearLayoutManager(your_activity_context));

Если вы хотите, чтобы элементы увеличивались по мере приближения к центру экрана, все становится немного сложнее.

Сначала вставьте это в свой Activity.java:

private class CustomScrollingLayoutCallback extends WearableLinearLayoutManager.LayoutCallback {

        private static final float MAX_ICON_PROGRESS = 2F;

        @Override
        public void onLayoutFinished(View child, RecyclerView parent) {

            float centerOffset = ((float) child.getHeight() / 2.0f) / (float) parent.getHeight();
            float yRelativeToCenterOffset = (child.getY() / parent.getHeight()) + centerOffset;

            float progresstoCenter = (float) Math.sin(yRelativeToCenterOffset * Math.PI);

            float mProgressToCenter = Math.abs(0.5f - yRelativeToCenterOffset);

            mProgressToCenter = Math.min(mProgressToCenter, MAX_ICON_PROGRESS);

            child.setScaleX(1 - mProgressToCenter);
            child.setScaleY(1 - mProgressToCenter);
            child.setX(+(1 - progresstoCenter) * 100);
        }

    }

Затем вернитесь к своему методу onLayoutInflated () и введите следующее:

    CustomScrollingLayoutCallback customScrollingLayoutCallback = new CustomScrollingLayoutCallback();
    your_recycler_view.setLayoutManager(new WearableLinearLayoutManager(your_context, customScrollingLayoutCallback));
    your_recycler_view.setCircularScrollingGestureEnabled(true);

сделанный.

Автор: Michael Размещён: 02.01.2018 01:00
Вопросы из категории :
32x32