1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.example.android.support.wear.app;
18 
19 import android.annotation.SuppressLint;
20 import android.app.Activity;
21 import android.content.Intent;
22 import android.os.Bundle;
23 import android.view.Gravity;
24 import android.view.View;
25 import android.view.ViewGroup;
26 import android.widget.Button;
27 
28 import androidx.recyclerview.widget.LinearLayoutManager;
29 import androidx.recyclerview.widget.RecyclerView;
30 import androidx.wear.widget.WearableRecyclerView;
31 
32 import com.example.android.support.wear.app.drawers.WearableDrawersDemo;
33 
34 import java.util.LinkedHashMap;
35 import java.util.Map;
36 
37 /**
38  * Main activity for the wear demos.
39  */
40 public class MainDemoActivity extends Activity {
41 
42     @Override
onCreate(Bundle savedInstanceState)43     protected void onCreate(Bundle savedInstanceState) {
44         super.onCreate(savedInstanceState);
45 
46         WearableRecyclerView demoList = new WearableRecyclerView(this);
47         demoList.setPadding(30, 0, 30, 0);
48         demoList.setLayoutManager(
49                 new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
50         demoList.setAdapter(new DemoAdapter(createContentMap()));
51         demoList.setEdgeItemsCenteringEnabled(true);
52         setContentView(demoList);
53     }
54 
createContentMap()55     private Map<String, Intent> createContentMap() {
56         Map<String, Intent> contentMap = new LinkedHashMap<>();
57         contentMap.put("Wearable Recycler View", new Intent(
58                 this, SimpleWearableRecyclerViewDemo.class));
59         contentMap.put("Recycler View", new Intent(
60                 this, SimpleRecyclerViewDemo.class));
61         contentMap.put("NestedScrollView View", new Intent(
62                 this, SimpleNestedScrollViewDemo.class));
63         contentMap.put("Wearable Switch", new Intent(
64                 this, WearableSwitchDemo.class));
65         contentMap.put("Circular Progress Layout", new Intent(
66                 this, CircularProgressLayoutDemo.class));
67         contentMap.put("Wearable Drawers", new Intent(
68                 this, WearableDrawersDemo.class));
69         contentMap.put("Rounded Drawable", new Intent(
70                 this, RoundedDrawableDemo.class));
71         contentMap.put("Ambient Fragment", new Intent(
72                 this, AmbientModeDemo.class));
73         contentMap.put("Alert Dialog (v7)", new Intent(
74                 this, AlertDialogDemo.class));
75         contentMap.put("Confirmation Overlay", new Intent(
76                 this, ConfirmationOverlayDemo.class));
77 
78         return contentMap;
79     }
80 
81     private static class ViewHolder extends RecyclerView.ViewHolder {
82         Button mView;
83 
ViewHolder(Button itemView)84         ViewHolder(Button itemView) {
85             super(itemView);
86             mView = itemView;
87         }
88     }
89 
90     private class DemoAdapter extends WearableRecyclerView.Adapter<ViewHolder> {
91         private final Object[] mKeys;
92         private final Map<String, Intent> mData;
93 
DemoAdapter(Map<String, Intent> dataMap)94         DemoAdapter(Map<String, Intent> dataMap) {
95             mKeys = dataMap.keySet().toArray();
96             mData = dataMap;
97         }
98 
99         @Override
onCreateViewHolder(ViewGroup parent, int viewType)100         public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
101             Button view = new Button(parent.getContext());
102             view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
103                     ViewGroup.LayoutParams.WRAP_CONTENT));
104             view.setPadding(10, 10, 10, 10);
105             view.setGravity(Gravity.CENTER);
106             return new ViewHolder(view);
107         }
108 
109         @Override
onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") final int position)110         public void onBindViewHolder(ViewHolder holder,
111                 @SuppressLint("RecyclerView") final int position) {
112             holder.mView.setText(mKeys[position].toString());
113             holder.mView.setOnClickListener(new View.OnClickListener() {
114                 @Override
115                 public void onClick(View v) {
116                     Intent result = new Intent();
117                     result.setClass(MainDemoActivity.this, SimpleWearableRecyclerViewDemo.class);
118                     startActivity(mData.get(mKeys[position]));
119                 }
120             });
121         }
122 
123 
124         @Override
getItemCount()125         public int getItemCount() {
126             return mKeys.length;
127         }
128     }
129 }
130