6

以下に示すように、リストビューを実装したいと思います。ここに画像の説明を入力

どうやらこれは CircledImageView を持つ WearableListView です。ただし、中央のビューを決定できる関数を見つけることができないようです。また、新しいもので「サイズアップ」アニメーションを実行し、古い選択したもので「サイズダウン」を実行できるようにしたい...現在、基本的なオンスクロールを試しましたが、葉巻はありませんでした。

     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);
                }

            });

編集:わかりましたので、中央のビューを見つける方法がわかりました。しかし、現在選択されているビューを変更できるように、現在のビューを取得する方法を誰かが理解しているかどうか疑問に思っていました。

編集 2さて、選択したビューを変更できます。ただし、オブジェクトの選択が解除された後にプロパティを適切に削除する方法はまだわかりません..

4

3 に答える 3

4

コツは、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);
  }
}

完全に動作するサンプルソース コードはこちらです。

于 2014-07-10T12:38:14.873 に答える
1

また、ウェアラブル リスト ビューの上にタイトルを表示することも検討していました。

ウェアラブル リスト ビュー レイアウトの一部として TextView 要素を追加することで、この問題を解決しました。また、app:layout_box を「left|bottom|right」に設定して、スクロール時のリスト ビューを改善することをお勧めします。

これが私のレイアウト XML です (TextView 要素に注意してください)。

<?xml version="1.0" encoding="utf-8"?>
<android.support.wearable.view.BoxInsetLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_height="match_parent"
    android:layout_width="match_parent">
 
    <FrameLayout
        android:id="@+id/frame_layout"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        app:layout_box="left|bottom|right">
 
        <android.support.wearable.view.WearableListView
            android:id="@+id/wearable_List"
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:background="#434343">
        </android.support.wearable.view.WearableListView>
 
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="35dp"
            android:gravity="bottom"
            android:textSize="20sp"
            android:fontFamily="courrier"
            android:layout_centerHorizontal="true"
            android:layout_alignParentTop="true"
            android:text="Settings"/>
 
    </ FrameLayout >
</android.support.wearable.view.BoxInsetLayout>

さらに読むために、物事を明確に説明する次の例を見ることもできます: http://www.learnandroidwear.com/sample-1

于 2014-12-25T19:22:37.243 に答える