wear-os - 如何复制 "Start"菜单中的 ListView

标签 wear-os

我想实现一个 ListView ,如下所示。 enter image description here

显然这是一个带有 CircledImageView 的 WearableListView。但是我似乎无法找到哪个函数可以让我确定中间 View 。我还希望能够在新的动画上做“放大”动画,在旧的选定动画上做“缩小”动画......现在我尝试了一个基本的滚动但没有雪茄。

     mListView.addOnScrollListener(new WearableListView.OnScrollListener() {
                @Override
                public void onScroll(int i) {
                    Log.d("Recycler","Scroll: "+i);
                }

                @Override
                public void onAbsoluteScrollChange(int i) {
                    Log.d("Recycler","ABsScrollChange: "+i);
                }

                @Override
                public void onScrollStateChanged(int i) {
                    Log.d("Recycler","ScrollState: "+i);
                }


                @Override
                public void onCentralPositionChanged(int i) {
                    Log.d("Recycler","Center: "+i);
                }

            });

编辑:好的,现在我知道如何找到中心 View 了。但我想知道是否有人想出如何检索当前 View ,以便我可以修改当前选定的 View 。

编辑 2 好的,现在我可以修改选定的 View 。但是,在取消选择对象后,仍然不知道如何正确删除属性。

最佳答案

诀窍是在 WearableListView.Item 子类中实现 getProximityMinValue() 和 getProximityMaxValue() :

private final class MyItemView extends FrameLayout implements WearableListView.Item {

  final CircledImageView image;
  final TextView text;

  public MyItemView(Context context) {
    super(context);
    View.inflate(context, R.layout.wearablelistview_item, this);
    image = (CircledImageView) findViewById(R.id.image);
    text = (TextView) findViewById(R.id.text);
  }

  @Override
  public float getProximityMinValue() {
    return mDefaultCircleRadius;
  }

  @Override
  public float getProximityMaxValue() {
    return mSelectedCircleRadius;
  }

  @Override
  public float getCurrentProximityValue() {
    return image.getCircleRadius();
  }

  @Override
  public void setScalingAnimatorValue(float value) {
    image.setCircleRadius(value);
    image.setCircleRadiusPressed(value);
  }

  @Override
  public void onScaleUpStart() {
    image.setAlpha(1f);
    text.setAlpha(1f);
  }

  @Override
  public void onScaleDownStart() {
    image.setAlpha(0.5f);
    text.setAlpha(0.5f);
  }
}

完整的工作示例 source code here .

关于wear-os - 如何复制 "Start"菜单中的 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24617069/

相关文章:

wear-os - Android wear示例代码异常

android - 构建/安装 Android Wear AOSP

android - 如何在 Android Wear 2.0 上获取配对设备信息

android - 5分钟后全部死亡

android - 在 Android Wear 上使用 GridViewPager 类时出现 NullPointerException

android - Android Wear 2.0架构问题带来的实时复杂性

android - Android Wear 中的 onTouchEvent 覆盖

permissions - Android Wear 新的(不需要的)权限

android - 动态添加项目到 FragmentGridPagerAdapter

android - 从真实设备卸载 Android Wear 应用程序