Android Wear control -- WearableListView (with Demo)
WearableListView is a widget used to display the list of small android devices, such as smart watches. It can be scaled in a village. It is very convenient to display only the list controls on the watch. Each time, three lists are displayed in the middle of the screen.
It inherits RecyclerView and implements the OnScrollListener interface.
public class WearableListView extends android.support.v7.widget.RecyclerView implements android.support.v7.widget.RecyclerView.OnScrollListener { …. ….}
The following is an example
package com.technotalkative.wearablelistviewdemo; import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.support.wearable.view.WatchViewStub;import android.support.wearable.view.WearableListView;import android.view.LayoutInflater;import android.view.ViewGroup;import android.widget.TextView; import java.util.ArrayList; public class SimpleListActivity extends Activity implements WearableListView.ClickListener{ private WearableListView mListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub); stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { @Override public void onLayoutInflated(WatchViewStub stub) { mListView = (WearableListView) stub.findViewById(R.id.listView1); mListView.setAdapter(new MyAdapter(SimpleListActivity.this)); mListView.setClickListener(SimpleListActivity.this); } }); } private static ArrayList
listItems; static { listItems = new ArrayList
(); listItems.add("Monday"); listItems.add("Tuesday"); listItems.add("Wednesday"); listItems.add("Thursday"); listItems.add("Friday"); listItems.add("Saturday"); } @Override public void onClick(WearableListView.ViewHolder viewHolder) { } @Override public void onTopEmptyRegionClick() { } private class MyAdapter extends WearableListView.Adapter { private final LayoutInflater mInflater; private MyAdapter(Context context) { mInflater = LayoutInflater.from(context); } @Override public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new WearableListView.ViewHolder( mInflater.inflate(R.layout.row_simple_item_layout, null)); } @Override public void onBindViewHolder(WearableListView.ViewHolder holder, int position) { TextView view = (TextView) holder.itemView.findViewById(R.id.textView); view.setText(listItems.get(position).toString()); holder.itemView.setTag(position); } @Override public int getItemCount() { return listItems.size(); } }}
You can add icons to this list to make it more beautiful.
private final class MyItemView extends FrameLayout implements WearableListView.Item { final CircledImageView imgView; final TextView txtView; private float mScale; private final int mFadedCircleColor; private final int mChosenCircleColor; public MyItemView(Context context) { super(context); View.inflate(context, R.layout.row_advanced_item_layout, this); imgView = (CircledImageView) findViewById(R.id.image); txtView = (TextView) findViewById(R.id.text); mFadedCircleColor = getResources().getColor(android.R.color.darker_gray); mChosenCircleColor = getResources().getColor(android.R.color.holo_blue_dark); } @Override public float getProximityMinValue() { return mDefaultCircleRadius; } @Override public float getProximityMaxValue() { return mSelectedCircleRadius; } @Override public float getCurrentProximityValue() { return mScale; } @Override public void setScalingAnimatorValue(float value) { mScale = value; imgView.setCircleRadius(mScale); imgView.setCircleRadiusPressed(mScale); } @Override public void onScaleUpStart() { imgView.setAlpha(1f); txtView.setAlpha(1f); imgView.setCircleColor(mChosenCircleColor); } @Override public void onScaleDownStart() { imgView.setAlpha(0.5f); txtView.setAlpha(0.5f); imgView.setCircleColor(mFadedCircleColor); } }
The following connection is the complete project WearableListView demo of this Demo.