Skip to content

Commit 1842261

Browse files
committed
resolve merge conflicts of 08f72b4 to mnc-mr-docs
Change-Id: Ibdd172d148d5983b6578adf7cb0e6335748ca654
2 parents d40e8ba + 08f72b4 commit 1842261

File tree

2 files changed

+282
-0
lines changed

2 files changed

+282
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
Copyright 2016 The Android Open Source Project
4+
5+
Licensed under the Apache License, Version 2.0 (the "License");
6+
you may not use this file except in compliance with the License.
7+
You may obtain a copy of the License at
8+
9+
http://www.apache.org/licenses/LICENSE-2.0
10+
11+
Unless required by applicable law or agreed to in writing, software
12+
distributed under the License is distributed on an "AS IS" BASIS,
13+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
See the License for the specific language governing permissions and
15+
limitations under the License.
16+
-->
17+
<android.support.wearable.view.drawer.WearableDrawerLayout
18+
android:id="@+id/drawer_layout"
19+
xmlns:android="http://schemas.android.com/apk/res/android"
20+
xmlns:app="http://schemas.android.com/apk/res-auto"
21+
xmlns:tools="http://schemas.android.com/tools"
22+
android:layout_width="match_parent"
23+
android:layout_height="match_parent"
24+
tools:context="com.example.android.wearable.wear.weardrawers.MainActivity"
25+
tools:deviceIds="wear">
26+
27+
<FrameLayout
28+
android:layout_width="match_parent"
29+
android:layout_height="match_parent"
30+
android:id="@+id/content_frame"/>
31+
32+
<android.support.wearable.view.drawer.WearableNavigationDrawer
33+
android:id="@+id/top_navigation_drawer"
34+
android:layout_width="match_parent"
35+
android:layout_height="match_parent"
36+
android:background="@color/dark_grey" />
37+
38+
<android.support.wearable.view.drawer.WearableActionDrawer
39+
android:id="@+id/bottom_action_drawer"
40+
android:layout_width="match_parent"
41+
android:layout_height="match_parent"
42+
app:action_menu="@menu/action_drawer_menu"
43+
android:background="@color/grey"/>
44+
45+
</android.support.wearable.view.drawer.WearableDrawerLayout>
Lines changed: 237 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
/*
2+
Copyright 2016 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+
package com.example.android.wearable.wear.weardrawers;
17+
18+
import android.app.Fragment;
19+
import android.app.FragmentManager;
20+
import android.content.Context;
21+
import android.graphics.drawable.Drawable;
22+
import android.os.Bundle;
23+
import android.support.wearable.activity.WearableActivity;
24+
import android.support.wearable.view.drawer.WearableActionDrawer;
25+
import android.support.wearable.view.drawer.WearableDrawerLayout;
26+
import android.support.wearable.view.drawer.WearableNavigationDrawer;
27+
import android.util.Log;
28+
import android.view.Gravity;
29+
import android.view.LayoutInflater;
30+
import android.view.Menu;
31+
import android.view.MenuInflater;
32+
import android.view.MenuItem;
33+
import android.view.View;
34+
import android.view.ViewGroup;
35+
import android.widget.ImageView;
36+
import android.widget.Toast;
37+
38+
import java.util.ArrayList;
39+
40+
/**
41+
* Demonstrates use of Navigation and Action Drawers on Android Wear.
42+
*/
43+
public class MainActivity extends WearableActivity implements
44+
WearableActionDrawer.OnMenuItemClickListener {
45+
46+
private static final String TAG = "MainActivity";
47+
48+
private WearableDrawerLayout mWearableDrawerLayout;
49+
private WearableNavigationDrawer mWearableNavigationDrawer;
50+
private WearableActionDrawer mWearableActionDrawer;
51+
52+
private ArrayList<Planet> mSolarSystem;
53+
private int mSelectedPlanet;
54+
55+
private PlanetFragment mPlanetFragment;
56+
57+
@Override
58+
protected void onCreate(Bundle savedInstanceState) {
59+
super.onCreate(savedInstanceState);
60+
Log.d(TAG, "onCreate()");
61+
62+
setContentView(R.layout.activity_main);
63+
setAmbientEnabled();
64+
65+
mSolarSystem = initializeSolarSystem();
66+
mSelectedPlanet = 0;
67+
68+
// Initialize content to first planet.
69+
mPlanetFragment = new PlanetFragment();
70+
Bundle args = new Bundle();
71+
72+
int imageId = getResources().getIdentifier(mSolarSystem.get(mSelectedPlanet).getImage(),
73+
"drawable", getPackageName());
74+
75+
76+
args.putInt(PlanetFragment.ARG_PLANET_IMAGE_ID, imageId);
77+
mPlanetFragment.setArguments(args);
78+
FragmentManager fragmentManager = getFragmentManager();
79+
fragmentManager.beginTransaction().replace(R.id.content_frame, mPlanetFragment).commit();
80+
81+
// Main Wearable Drawer Layout that wraps all content
82+
mWearableDrawerLayout = (WearableDrawerLayout) findViewById(R.id.drawer_layout);
83+
84+
// Top Navigation Drawer
85+
mWearableNavigationDrawer =
86+
(WearableNavigationDrawer) findViewById(R.id.top_navigation_drawer);
87+
mWearableNavigationDrawer.setAdapter(new NavigationAdapter(this));
88+
89+
// Peeks Navigation drawer on the top.
90+
mWearableDrawerLayout.peekDrawer(Gravity.TOP);
91+
92+
// Bottom Action Drawer
93+
mWearableActionDrawer =
94+
(WearableActionDrawer) findViewById(R.id.bottom_action_drawer);
95+
96+
mWearableActionDrawer.setOnMenuItemClickListener(this);
97+
98+
// Peeks action drawer on the bottom.
99+
mWearableDrawerLayout.peekDrawer(Gravity.BOTTOM);
100+
101+
/* Action Drawer Tip: If you only have a single action for your Action Drawer, you can use a
102+
* (custom) View to peek on top of the content by calling
103+
* mWearableActionDrawer.setPeekContent(View). Make sure you set a click listener to handle
104+
* a user clicking on your View.
105+
*/
106+
}
107+
108+
private ArrayList<Planet> initializeSolarSystem() {
109+
ArrayList<Planet> solarSystem = new ArrayList<Planet>();
110+
String[] planetArrayNames = getResources().getStringArray(R.array.planets_array_names);
111+
112+
for (int i = 0; i < planetArrayNames.length; i++) {
113+
String planet = planetArrayNames[i];
114+
int planetResourceId =
115+
getResources().getIdentifier(planet, "array", getPackageName());
116+
String[] planetInformation = getResources().getStringArray(planetResourceId);
117+
118+
solarSystem.add(new Planet(
119+
planetInformation[0], // Name
120+
planetInformation[1], // Navigation icon
121+
planetInformation[2], // Image icon
122+
planetInformation[3], // Moons
123+
planetInformation[4], // Volume
124+
planetInformation[5])); // Surface area
125+
}
126+
127+
return solarSystem;
128+
}
129+
130+
@Override
131+
public boolean onMenuItemClick(MenuItem menuItem) {
132+
Log.d(TAG, "onMenuItemClick(): " + menuItem);
133+
134+
final int itemId = menuItem.getItemId();
135+
136+
String toastMessage = "";
137+
138+
switch (itemId) {
139+
case R.id.menu_planet_name:
140+
toastMessage = mSolarSystem.get(mSelectedPlanet).getName();
141+
break;
142+
case R.id.menu_number_of_moons:
143+
toastMessage = mSolarSystem.get(mSelectedPlanet).getMoons();
144+
break;
145+
case R.id.menu_volume:
146+
toastMessage = mSolarSystem.get(mSelectedPlanet).getVolume();
147+
break;
148+
case R.id.menu_surface_area:
149+
toastMessage = mSolarSystem.get(mSelectedPlanet).getSurfaceArea();
150+
break;
151+
}
152+
153+
mWearableDrawerLayout.closeDrawer(mWearableActionDrawer);
154+
155+
if (toastMessage.length() > 0) {
156+
Toast toast = Toast.makeText(
157+
getApplicationContext(),
158+
toastMessage,
159+
Toast.LENGTH_SHORT);
160+
toast.show();
161+
return true;
162+
} else {
163+
return false;
164+
}
165+
}
166+
167+
private final class NavigationAdapter
168+
extends WearableNavigationDrawer.WearableNavigationDrawerAdapter {
169+
170+
private final Context mContext;
171+
172+
public NavigationAdapter(Context context) {
173+
mContext = context;
174+
}
175+
176+
@Override
177+
public int getCount() {
178+
return mSolarSystem.size();
179+
}
180+
181+
@Override
182+
public void onItemSelected(int position) {
183+
Log.d(TAG, "WearableNavigationDrawerAdapter.onItemSelected(): " + position);
184+
mSelectedPlanet = position;
185+
186+
String selectedPlanetImage = mSolarSystem.get(mSelectedPlanet).getImage();
187+
int drawableId =
188+
getResources().getIdentifier(selectedPlanetImage, "drawable", getPackageName());
189+
mPlanetFragment.updatePlanet(drawableId);
190+
}
191+
192+
@Override
193+
public String getItemText(int pos) {
194+
return mSolarSystem.get(pos).getName();
195+
}
196+
197+
@Override
198+
public Drawable getItemDrawable(int pos) {
199+
String navigationIcon = mSolarSystem.get(pos).getNavigationIcon();
200+
201+
int drawableNavigationIconId =
202+
getResources().getIdentifier(navigationIcon, "drawable", getPackageName());
203+
204+
return mContext.getDrawable(drawableNavigationIconId);
205+
}
206+
}
207+
208+
/**
209+
* Fragment that appears in the "content_frame", just shows the currently selected planet.
210+
*/
211+
public static class PlanetFragment extends Fragment {
212+
public static final String ARG_PLANET_IMAGE_ID = "planet_image_id";
213+
214+
private ImageView mImageView;
215+
216+
public PlanetFragment() {
217+
// Empty constructor required for fragment subclasses
218+
}
219+
220+
@Override
221+
public View onCreateView(LayoutInflater inflater, ViewGroup container,
222+
Bundle savedInstanceState) {
223+
View rootView = inflater.inflate(R.layout.fragment_planet, container, false);
224+
225+
mImageView = ((ImageView) rootView.findViewById(R.id.image));
226+
227+
int imageIdToLoad = getArguments().getInt(ARG_PLANET_IMAGE_ID);
228+
mImageView.setImageResource(imageIdToLoad);
229+
230+
return rootView;
231+
}
232+
233+
public void updatePlanet(int imageId) {
234+
mImageView.setImageResource(imageId);
235+
}
236+
}
237+
}

0 commit comments

Comments
 (0)