如何在Android Wear上创建循环视图?

3

如何创建圆形列表,以便在Android Wear 2.0中使用?

类似于这样:

enter image description here

Android Wear应用程序启动器中看到了循环列表。

请查看此博客文章 - http://android-developers.blogspot.com/2016/04/build-beautifully-for-android-wear.html - Sufian
这并不会有所帮助,已经检查过了。BoxInsetLayout设置了一个正方形的插图,但是这里的项目是对齐到边缘的(即使滚动条是圆形的)。 - adhiti
2个回答

3

首先,您需要将ListView替换为WearableRecyclerView。它可以像普通的ListView一样使用。但是要确保从android.support.wear.widget导入正确的一个。不要使用android.support.wearable.view中的一个。这个应该被划掉了,所以检查是否使用了正确的不会花费太长时间。如果只有一个WearableRecyclerView可供选择,请确保在build.gradle(wear)文件的依赖项中添加compile 'com.android.support:wear:27.0.0'。同时,在您的activity.xml中使用<android.support.wear.widget.WearableRecyclerView/>。如果您只想要一个没有任何自定义项目缩放的圆形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);

完成。

在我的情况下,如果我向上或向下滚动,中间图标的大小不会增加。我该如何解决这个问题? - kavie

1
这现在可以通过Android Wear 2.0的 WearableRecyclerView 实现。
根据Android Developer Docs所述:

Wear 2.0引入了 WearableRecyclerView 类,用于显示和操作垂直列表项,针对圆形显示器进行了优化。 WearableRecyclerView 扩展了现有的 RecyclerView 类,提供了弧形布局和可穿戴应用中的循环滚动手势。

您可能想阅读更多关于 Android Wear 2.0 预览版3 的信息。

1
那些给这个答案点踩的人,请至少发表一下你们的理由。这不是一个“仅链接”的答案。它引用了链接中相关的文本。如果你有更好的答案,请不要躲在踩票背后,而是将其作为一个答案发布出来。 - Sufian
循环滚动条显示为直线 :( - D Lad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接