OSDN Git Service

WearableActionDrawerView から WearableNavigationDrawerView を使うように変更した。
authorMRSa <mrsa@myad.jp>
Mon, 9 Apr 2018 15:09:31 +0000 (00:09 +0900)
committerMRSa <mrsa@myad.jp>
Mon, 9 Apr 2018 15:09:31 +0000 (00:09 +0900)
wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailActivity.java
wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailSelectionMenuAdapter.java [new file with mode: 0644]
wear/src/main/res/layout-notround/activity_detail.xml
wear/src/main/res/layout-round/activity_detail.xml

index ee0e221..dd86d42 100644 (file)
@@ -5,6 +5,7 @@ import android.support.v7.widget.DividerItemDecoration;
 import android.support.wear.widget.WearableLinearLayoutManager;
 import android.support.wear.widget.WearableRecyclerView;
 import android.support.wear.widget.drawer.WearableActionDrawerView;
+import android.support.wear.widget.drawer.WearableNavigationDrawerView;
 import android.support.wearable.activity.WearableActivity;
 import android.util.Log;
 import android.view.MenuItem;
@@ -21,7 +22,7 @@ import net.osdn.gokigen.joggingtimer.utilities.DataEditDialog;
  *
  *
  */
-public class DetailActivity extends WearableActivity implements RecordDetailSetup.IDatabaseReadyNotify, MenuItem.OnMenuItemClickListener, DataEditDialog.Callback, CreateModelData.IEditedModelDataCallback
+public class DetailActivity extends WearableActivity implements RecordDetailSetup.IDatabaseReadyNotify, MenuItem.OnMenuItemClickListener, DataEditDialog.Callback, CreateModelData.IEditedModelDataCallback, DetailSelectionMenuAdapter.ISelectedMenu
 {
     private final String TAG = toString();
     public static final String INTENT_EXTRA_DATA_ID = "Detail.dataId";
@@ -47,6 +48,11 @@ public class DetailActivity extends WearableActivity implements RecordDetailSetu
 
         try
         {
+            WearableNavigationDrawerView naviView = findViewById(R.id.top_navigation_drawer);
+            DetailSelectionMenuAdapter menuAdapter = new DetailSelectionMenuAdapter(this, this);
+            naviView.setAdapter(menuAdapter);
+            naviView.addOnItemSelectedListener(menuAdapter);
+
             WearableRecyclerView view = findViewById(R.id.recycler_detail_view);
             detailAdapter = new RecordDetailAdapter();
             WearableLinearLayoutManager layoutManager = new WearableLinearLayoutManager(this);
@@ -242,8 +248,21 @@ public class DetailActivity extends WearableActivity implements RecordDetailSetu
     {
         Log.v(TAG, "onMenuItemClick(): " + item);
 
-        boolean ret = false;
         final int itemId = item.getItemId();
+        try
+        {
+            actionDrawerView.getController().closeDrawer();
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (itemSelected(itemId));
+    }
+
+    private boolean itemSelected(int itemId)
+    {
+        boolean ret = false;
         String toastMessage = "";
         switch (itemId)
         {
@@ -253,6 +272,7 @@ public class DetailActivity extends WearableActivity implements RecordDetailSetu
                 dialog.show(R.drawable.ic_android_black_24dp, "", this);
                 ret = true;
                 break;
+
             case R.id.menu_create_model:
                 CreateModelDataDialog dialog2 = new CreateModelDataDialog(this);
                 dialog2.show(true, getString(R.string.information_time_picker), 0, setupper.getCreateModelDataCallback(ITimeEntryDatabase.DONT_USE_ID, ITimeEntryDatabase.DONT_USE_ID), 0);
@@ -270,8 +290,6 @@ public class DetailActivity extends WearableActivity implements RecordDetailSetu
         }
         try
         {
-            actionDrawerView.getController().closeDrawer();
-
             if (toastMessage.length() > 0)
             {
                 Toast toast = Toast.makeText(getApplicationContext(), toastMessage, Toast.LENGTH_SHORT);
@@ -384,4 +402,10 @@ public class DetailActivity extends WearableActivity implements RecordDetailSetu
         }
         detailAdapter.notifyDataSetChanged();
     }
+
+    @Override
+    public void selectedMenu(int itemId)
+    {
+        itemSelected(itemId);
+    }
 }
diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailSelectionMenuAdapter.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailSelectionMenuAdapter.java
new file mode 100644 (file)
index 0000000..889785f
--- /dev/null
@@ -0,0 +1,98 @@
+package net.osdn.gokigen.joggingtimer.recorddetail;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.support.wear.widget.drawer.WearableNavigationDrawerView;
+
+import net.osdn.gokigen.joggingtimer.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ *
+ *
+ */
+public class DetailSelectionMenuAdapter extends WearableNavigationDrawerView.WearableNavigationDrawerAdapter implements WearableNavigationDrawerView.OnItemSelectedListener
+{
+    private final Context context;
+    private final ISelectedMenu callback;
+    private List<MenuItem> menuItems = new ArrayList<>();
+
+    DetailSelectionMenuAdapter(Context context, ISelectedMenu callback)
+    {
+        this.context = context;
+        this.callback = callback;
+
+        menuItems.add(new MenuItem(R.id.menu_edit_title, R.drawable.ic_edit_black_24dp, context.getString(R.string.action_edit_title)));
+        menuItems.add(new MenuItem(R.id.menu_set_reference, R.drawable.ic_assignment_turned_in_black_24dp, context.getString(R.string.action_set_reference)));
+    }
+
+    @Override
+    public CharSequence getItemText(int pos)
+    {
+        try
+        {
+            return (menuItems.get(pos).itemText);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (null);
+    }
+
+    @Override
+    public Drawable getItemDrawable(int pos)
+    {
+        try
+        {
+            int iconId = menuItems.get(pos).iconResId;
+            return (android.support.v4.content.res.ResourcesCompat.getDrawable(context.getResources(), iconId, null));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (null);
+    }
+
+    @Override
+    public int getCount()
+    {
+        return (menuItems.size());
+    }
+
+    private class MenuItem
+    {
+        private final int menuId;
+        private final int iconResId;
+        private final CharSequence itemText;
+
+        private MenuItem(int menuId, int iconResId, CharSequence itemText)
+        {
+            this.menuId = menuId;
+            this.iconResId = iconResId;
+            this.itemText = itemText;
+        }
+    }
+
+    @Override
+    public void onItemSelected(int pos)
+    {
+        try
+        {
+            callback.selectedMenu(menuItems.get(pos).menuId);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    interface ISelectedMenu
+    {
+        void selectedMenu(int id);
+    }
+}
index 884dc8b..09d4165 100644 (file)
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@color/grey"
-        android:visibility="gone"
-        app:navigationStyle="multiPage" />
+        android:visibility="visible"
+        app:navigationStyle="singlePage" />
 
     <android.support.wear.widget.drawer.WearableActionDrawerView
         android:id="@+id/bottom_action_drawer"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@color/grey"
-        android:visibility="visible"
+        android:visibility="gone"
         app:actionMenu="@menu/selector_detail" />
 
 </android.support.wear.widget.drawer.WearableDrawerLayout>
index 0183620..ddeae9b 100644 (file)
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@color/grey"
-        android:visibility="gone"
-        app:navigationStyle="multiPage" />
+        android:visibility="visible"
+        app:navigationStyle="singlePage" />
 
     <android.support.wear.widget.drawer.WearableActionDrawerView
         android:id="@+id/bottom_action_drawer"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@color/grey"
-        android:visibility="visible"
+        android:visibility="gone"
         app:actionMenu="@menu/selector_detail" />
 
 </android.support.wear.widget.drawer.WearableDrawerLayout>