作者:爬树小羊_298 | 来源:互联网 | 2023-09-25 13:03
如何在AndroidWear2.0中创建圆形手表的圆形列表?像这样:在AndroidWear应用启动器中可以看到循环列表.解决方法:首先,您需要用WearableRecyclerV
如何在Android Wear 2.0中创建圆形手表的圆形列表?
像这样:
![enter image description here](https://img.php1.cn/3cd4a/1eebe/cd5/5b97d3b808d031e2.webp)
在Android Wear应用启动器中可以看到循环列表.
解决方法:
首先,您需要用WearableRecyclerView替换ListView.
它可以像普通的ListView一样使用.但是请确保您从android.support.wear.widget中导入了正确的代码.不要使用android.support.wearable.view中的那个.这个应该被划掉,这样就不会花很长时间检查您是否使用了正确的那个.如果只有一个WearableRecyclerView可供选择,请确保将build.gradle(磨损)文件中的依赖项添加到编译文件“ com.android.support:wear:27.0.0”.
另外,请确保您使用的是在您的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);
完成.