From cfe72652385346edead19a1aeb0ec8677735b0ec Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Mon, 31 Aug 2020 23:04:56 -0700 Subject: [PATCH] Adds top level navigation and placeholder fragments. --- .../majinnaibu/monstercards/MainActivity.java | 5 +- .../CollectionsFragment.java} | 16 +++--- .../CollectionsViewModel.java} | 10 ++-- .../ui/library/LibraryFragment.java | 35 +++++++++++++ .../ui/library/LibraryViewModel.java | 19 +++++++ .../SearchFragment.java} | 18 +++---- .../SearchViewModel.java} | 8 +-- .../drawable/ic_collections_black_24dp.xml | 13 +++++ .../main/res/drawable/ic_home_black_24dp.xml | 9 ---- .../res/drawable/ic_library_black_24dp.xml | 10 ++++ .../drawable/ic_notifications_black_24dp.xml | 9 ---- .../res/drawable/ic_search_black_24dp.xml | 10 ++++ app/src/main/res/layout/activity_main.xml | 10 ++-- ...fications.xml => fragment_collections.xml} | 4 +- app/src/main/res/layout/fragment_library.xml | 22 +++++++++ ...{fragment_home.xml => fragment_search.xml} | 5 +- app/src/main/res/menu/bottom_nav_menu.xml | 17 ++++--- .../main/res/navigation/mobile_navigation.xml | 49 +++++++++++++++---- app/src/main/res/values/strings.xml | 5 +- 19 files changed, 203 insertions(+), 71 deletions(-) rename app/src/main/java/com/majinnaibu/monstercards/ui/{notifications/NotificationsFragment.java => collections/CollectionsFragment.java} (56%) rename app/src/main/java/com/majinnaibu/monstercards/ui/{notifications/NotificationsViewModel.java => collections/CollectionsViewModel.java} (57%) create mode 100644 app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryFragment.java create mode 100644 app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryViewModel.java rename app/src/main/java/com/majinnaibu/monstercards/ui/{home/HomeFragment.java => search/SearchFragment.java} (59%) rename app/src/main/java/com/majinnaibu/monstercards/ui/{home/HomeViewModel.java => search/SearchViewModel.java} (61%) create mode 100644 app/src/main/res/drawable/ic_collections_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_home_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_library_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_notifications_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_search_black_24dp.xml rename app/src/main/res/layout/{fragment_notifications.xml => fragment_collections.xml} (89%) create mode 100644 app/src/main/res/layout/fragment_library.xml rename app/src/main/res/layout/{fragment_home.xml => fragment_search.xml} (91%) diff --git a/app/src/main/java/com/majinnaibu/monstercards/MainActivity.java b/app/src/main/java/com/majinnaibu/monstercards/MainActivity.java index cda57a4..bfcfc73 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/MainActivity.java +++ b/app/src/main/java/com/majinnaibu/monstercards/MainActivity.java @@ -31,7 +31,10 @@ public class MainActivity extends AppCompatActivity { // Passing each menu ID as a set of Ids because each // menu should be considered as top level destinations. AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder( - R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications) + R.id.navigation_search, + R.id.navigation_dashboard, + R.id.navigation_collections, + R.id.navigation_library) .build(); NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment); NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration); diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/notifications/NotificationsFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/collections/CollectionsFragment.java similarity index 56% rename from app/src/main/java/com/majinnaibu/monstercards/ui/notifications/NotificationsFragment.java rename to app/src/main/java/com/majinnaibu/monstercards/ui/collections/CollectionsFragment.java index 0533fa9..45b711d 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/notifications/NotificationsFragment.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/collections/CollectionsFragment.java @@ -1,4 +1,4 @@ -package com.majinnaibu.monstercards.ui.notifications; +package com.majinnaibu.monstercards.ui.collections; import android.os.Bundle; import android.view.LayoutInflater; @@ -14,17 +14,17 @@ import androidx.lifecycle.ViewModelProviders; import com.majinnaibu.monstercards.R; -public class NotificationsFragment extends Fragment { +public class CollectionsFragment extends Fragment { - private NotificationsViewModel notificationsViewModel; + private CollectionsViewModel collectionsViewModel; public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - notificationsViewModel = - ViewModelProviders.of(this).get(NotificationsViewModel.class); - View root = inflater.inflate(R.layout.fragment_notifications, container, false); - final TextView textView = root.findViewById(R.id.text_notifications); - notificationsViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { + collectionsViewModel = + ViewModelProviders.of(this).get(CollectionsViewModel.class); + View root = inflater.inflate(R.layout.fragment_collections, container, false); + final TextView textView = root.findViewById(R.id.text_collections); + collectionsViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { @Override public void onChanged(@Nullable String s) { textView.setText(s); diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/notifications/NotificationsViewModel.java b/app/src/main/java/com/majinnaibu/monstercards/ui/collections/CollectionsViewModel.java similarity index 57% rename from app/src/main/java/com/majinnaibu/monstercards/ui/notifications/NotificationsViewModel.java rename to app/src/main/java/com/majinnaibu/monstercards/ui/collections/CollectionsViewModel.java index 4384287..d81c4c5 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/notifications/NotificationsViewModel.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/collections/CollectionsViewModel.java @@ -1,19 +1,19 @@ -package com.majinnaibu.monstercards.ui.notifications; +package com.majinnaibu.monstercards.ui.collections; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -public class NotificationsViewModel extends ViewModel { +public class CollectionsViewModel extends ViewModel { private MutableLiveData mText; - public NotificationsViewModel() { + public CollectionsViewModel() { mText = new MutableLiveData<>(); - mText.setValue("This is notifications fragment"); + mText.setValue("This is collections fragment"); } public LiveData getText() { return mText; } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryFragment.java new file mode 100644 index 0000000..eb19e35 --- /dev/null +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryFragment.java @@ -0,0 +1,35 @@ +package com.majinnaibu.monstercards.ui.library; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; + +import com.majinnaibu.monstercards.R; + +public class LibraryFragment extends Fragment { + + private LibraryViewModel libraryViewModel; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + libraryViewModel = + ViewModelProviders.of(this).get(LibraryViewModel.class); + View root = inflater.inflate(R.layout.fragment_library, container, false); + final TextView textView = root.findViewById(R.id.text_library); + libraryViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { + @Override + public void onChanged(@Nullable String s) { + textView.setText(s); + } + }); + return root; + } +} diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryViewModel.java b/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryViewModel.java new file mode 100644 index 0000000..2aa32e2 --- /dev/null +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/library/LibraryViewModel.java @@ -0,0 +1,19 @@ +package com.majinnaibu.monstercards.ui.library; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class LibraryViewModel extends ViewModel { + + private MutableLiveData mText; + + public LibraryViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is library fragment"); + } + + public LiveData getText() { + return mText; + } +} diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/home/HomeFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchFragment.java similarity index 59% rename from app/src/main/java/com/majinnaibu/monstercards/ui/home/HomeFragment.java rename to app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchFragment.java index 938fa5f..0f61fb6 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/home/HomeFragment.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchFragment.java @@ -1,4 +1,4 @@ -package com.majinnaibu.monstercards.ui.home; +package com.majinnaibu.monstercards.ui.search; import android.os.Bundle; import android.view.LayoutInflater; @@ -14,17 +14,17 @@ import androidx.lifecycle.ViewModelProviders; import com.majinnaibu.monstercards.R; -public class HomeFragment extends Fragment { +public class SearchFragment extends Fragment { - private HomeViewModel homeViewModel; + private SearchViewModel searchViewModel; public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - homeViewModel = - ViewModelProviders.of(this).get(HomeViewModel.class); - View root = inflater.inflate(R.layout.fragment_home, container, false); - final TextView textView = root.findViewById(R.id.text_home); - homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { + searchViewModel = + ViewModelProviders.of(this).get(SearchViewModel.class); + View root = inflater.inflate(R.layout.fragment_search, container, false); + final TextView textView = root.findViewById(R.id.text_search); + searchViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { @Override public void onChanged(@Nullable String s) { textView.setText(s); @@ -32,4 +32,4 @@ public class HomeFragment extends Fragment { }); return root; } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/home/HomeViewModel.java b/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchViewModel.java similarity index 61% rename from app/src/main/java/com/majinnaibu/monstercards/ui/home/HomeViewModel.java rename to app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchViewModel.java index e27037e..6e3a48b 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/home/HomeViewModel.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/search/SearchViewModel.java @@ -1,16 +1,16 @@ -package com.majinnaibu.monstercards.ui.home; +package com.majinnaibu.monstercards.ui.search; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -public class HomeViewModel extends ViewModel { +public class SearchViewModel extends ViewModel { private MutableLiveData mText; - public HomeViewModel() { + public SearchViewModel() { mText = new MutableLiveData<>(); - mText.setValue("This is home fragment"); + mText.setValue("This is search fragment"); } public LiveData getText() { diff --git a/app/src/main/res/drawable/ic_collections_black_24dp.xml b/app/src/main/res/drawable/ic_collections_black_24dp.xml new file mode 100644 index 0000000..fcff54e --- /dev/null +++ b/app/src/main/res/drawable/ic_collections_black_24dp.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/drawable/ic_home_black_24dp.xml b/app/src/main/res/drawable/ic_home_black_24dp.xml deleted file mode 100644 index f8bb0b5..0000000 --- a/app/src/main/res/drawable/ic_home_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_library_black_24dp.xml b/app/src/main/res/drawable/ic_library_black_24dp.xml new file mode 100644 index 0000000..5ca45e3 --- /dev/null +++ b/app/src/main/res/drawable/ic_library_black_24dp.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_notifications_black_24dp.xml b/app/src/main/res/drawable/ic_notifications_black_24dp.xml deleted file mode 100644 index 78b75c3..0000000 --- a/app/src/main/res/drawable/ic_notifications_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_search_black_24dp.xml b/app/src/main/res/drawable/ic_search_black_24dp.xml new file mode 100644 index 0000000..07b76d6 --- /dev/null +++ b/app/src/main/res/drawable/ic_search_black_24dp.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 38c0aa8..a163bb2 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -3,8 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/container" android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingTop="?attr/actionBarSize"> + android:layout_height="match_parent"> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_notifications.xml b/app/src/main/res/layout/fragment_collections.xml similarity index 89% rename from app/src/main/res/layout/fragment_notifications.xml rename to app/src/main/res/layout/fragment_collections.xml index d417935..5ff5356 100644 --- a/app/src/main/res/layout/fragment_notifications.xml +++ b/app/src/main/res/layout/fragment_collections.xml @@ -4,10 +4,10 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".ui.notifications.NotificationsFragment"> + tools:context=".ui.collections.CollectionsFragment"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_search.xml similarity index 91% rename from app/src/main/res/layout/fragment_home.xml rename to app/src/main/res/layout/fragment_search.xml index f3d9b08..e6e5fe6 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_search.xml @@ -4,10 +4,10 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".ui.home.HomeFragment"> + tools:context=".ui.search.SearchFragment"> + \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml index fb6d040..c613122 100644 --- a/app/src/main/res/menu/bottom_nav_menu.xml +++ b/app/src/main/res/menu/bottom_nav_menu.xml @@ -2,9 +2,9 @@ + android:id="@+id/navigation_search" + android:icon="@drawable/ic_search_black_24dp" + android:title="@string/title_search" /> + android:id="@+id/navigation_collections" + android:icon="@drawable/ic_collections_black_24dp" + android:title="@string/title_collections" /> + + \ No newline at end of file diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 6076f03..d37a2b9 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -3,23 +3,52 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mobile_navigation" - app:startDestination="@+id/navigation_home"> + app:startDestination="@+id/navigation_dashboard"> + android:id="@+id/navigation_search" + android:name="com.majinnaibu.monstercards.ui.search.SearchFragment" + android:label="@string/title_search" + tools:layout="@layout/fragment_search" > + + + tools:layout="@layout/fragment_dashboard" > + + + android:id="@+id/navigation_collections" + android:name="com.majinnaibu.monstercards.ui.collections.CollectionsFragment" + android:label="@string/title_collections" + tools:layout="@layout/fragment_collections" > + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index facc835..b171c0f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,7 @@ MonsterCards - Home Dashboard - Notifications + Search + Collections + Library \ No newline at end of file