From 5285033144cf2e2e6e23f4942cc7ba1e2ceb2bf0 Mon Sep 17 00:00:00 2001 From: MartinKamenov Date: Thu, 3 Jan 2019 16:57:43 +0200 Subject: [PATCH 1/5] Added navigator to project. Added navigation away from start menu. --- src/app/build.gradle | 2 +- src/app/src/main/AndroidManifest.xml | 1 + .../base/contracts/BaseContracts.java | 4 +++ .../views/game_menu/GameMenuActivity.java | 15 ++++++++ .../views/start/StartContracts.java | 8 +++-- .../views/start/StartFragment.java | 36 ++++++++++++++++++- .../main/res/layout/activity_game_menu.xml | 9 +++++ 7 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/GameMenuActivity.java create mode 100644 src/app/src/main/res/layout/activity_game_menu.xml diff --git a/src/app/build.gradle b/src/app/build.gradle index 30461ee..4e36232 100644 --- a/src/app/build.gradle +++ b/src/app/build.gradle @@ -21,10 +21,10 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:support-v4:28.0.0' androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) + compile 'com.android.support:support-v4:28.0.0' compile 'com.android.support:appcompat-v7:28.+' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' diff --git a/src/app/src/main/AndroidManifest.xml b/src/app/src/main/AndroidManifest.xml index dc8f6a6..a7cbfac 100644 --- a/src/app/src/main/AndroidManifest.xml +++ b/src/app/src/main/AndroidManifest.xml @@ -16,6 +16,7 @@ + \ No newline at end of file diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/base/contracts/BaseContracts.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/base/contracts/BaseContracts.java index 49a713f..b4b09ee 100644 --- a/src/app/src/main/java/com/games/mkvs/interstellarmanager/base/contracts/BaseContracts.java +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/base/contracts/BaseContracts.java @@ -10,4 +10,8 @@ public interface Presenter{ void subscribe(T view); void unsubscribe(); } + + public interface Navigator { + void navigate(Class clazz); + } } diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/GameMenuActivity.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/GameMenuActivity.java new file mode 100644 index 0000000..21613ae --- /dev/null +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/GameMenuActivity.java @@ -0,0 +1,15 @@ +package com.games.mkvs.interstellarmanager.views.game_menu; + +import android.app.Activity; +import android.os.Bundle; + +import com.games.mkvs.interstellarmanager.R; + +public class GameMenuActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_game_menu); + } +} diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartContracts.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartContracts.java index 71b7a05..da1a69e 100644 --- a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartContracts.java +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartContracts.java @@ -4,11 +4,15 @@ public class StartContracts{ - public interface IStartPresenter extends BaseContracts.Presenter{ + public interface IStartPresenter extends BaseContracts.Presenter { } - public interface IStartView extends BaseContracts.View{ + public interface IStartView extends BaseContracts.View, BaseContracts.Navigator { void addBackground(); + + void addButtonListeners(); + + void startGameBtnClicked(); } } diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java index 2a86568..0e6d43d 100644 --- a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java @@ -1,11 +1,13 @@ package com.games.mkvs.interstellarmanager.views.start; +import android.content.Intent; import android.os.Bundle; import android.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; @@ -17,13 +19,14 @@ import com.games.mkvs.interstellarmanager.engine.models.menu_background.StarsBackgroundPanel; import com.games.mkvs.interstellarmanager.engine.services.DrawingService; import com.games.mkvs.interstellarmanager.engine.services.SortingService; +import com.games.mkvs.interstellarmanager.views.game_menu.GameMenuActivity; import java.util.ArrayList; /** * A simple {@link Fragment} subclass. */ -public class StartFragment extends Fragment implements StartContracts.IStartView { +public class StartFragment extends Fragment implements StartContracts.IStartView, View.OnClickListener { private View root; private StartContracts.IStartPresenter mPresenter; private RelativeLayout mMainContainer; @@ -43,6 +46,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, mContentContainer = root.findViewById(R.id.content_container); addBackground(); mContentContainer.bringToFront(); + addButtonListeners(); return root; } @@ -60,4 +64,34 @@ public void addBackground() { objects); mMainContainer.addView(panel); } + + @Override + public void addButtonListeners() { + Button startGameBtn = root.findViewById(R.id.start_game_btn); + startGameBtn.setOnClickListener(this); + } + + @Override + public void startGameBtnClicked() { + this.navigate(GameMenuActivity.class); + } + + @Override + public void navigate(Class clazz) { + Intent intent; + if(clazz == GameMenuActivity.class) { + intent = new Intent(getActivity(), clazz); + startActivity(intent); + getActivity().finish(); + } + } + + @Override + public void onClick(View view) { + switch (view.getId()) { + case R.id.start_game_btn: + startGameBtnClicked(); + break; + } + } } diff --git a/src/app/src/main/res/layout/activity_game_menu.xml b/src/app/src/main/res/layout/activity_game_menu.xml new file mode 100644 index 0000000..d89d6c2 --- /dev/null +++ b/src/app/src/main/res/layout/activity_game_menu.xml @@ -0,0 +1,9 @@ + + + + From b0712da5ddb97052bbcca32d072d8bb4cc5d6e12 Mon Sep 17 00:00:00 2001 From: MartinKamenov Date: Thu, 3 Jan 2019 17:46:11 +0200 Subject: [PATCH 2/5] Changed game menu activity to tab type one. --- src/app/build.gradle | 1 + src/app/src/main/AndroidManifest.xml | 5 +- .../views/game_menu/GameMenuActivity.java | 117 +++++++++++++++++- .../views/game_menu/OverviewFragment.java | 30 +++++ .../views/start/StartFragment.java | 1 - .../main/res/layout/activity_game_menu.xml | 12 +- .../main/res/layout/fragment_game_menu.xml | 16 +++ .../src/main/res/layout/fragment_overview.xml | 13 ++ src/app/src/main/res/menu/menu_game_menu.xml | 10 ++ src/app/src/main/res/values-w820dp/dimens.xml | 6 + src/app/src/main/res/values/dimens.xml | 5 + src/app/src/main/res/values/strings.xml | 3 + src/app/src/main/res/values/styles.xml | 9 ++ 13 files changed, 222 insertions(+), 6 deletions(-) create mode 100644 src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/OverviewFragment.java create mode 100644 src/app/src/main/res/layout/fragment_game_menu.xml create mode 100644 src/app/src/main/res/layout/fragment_overview.xml create mode 100644 src/app/src/main/res/menu/menu_game_menu.xml create mode 100644 src/app/src/main/res/values-w820dp/dimens.xml diff --git a/src/app/build.gradle b/src/app/build.gradle index 4e36232..e0839e0 100644 --- a/src/app/build.gradle +++ b/src/app/build.gradle @@ -27,5 +27,6 @@ dependencies { compile 'com.android.support:support-v4:28.0.0' compile 'com.android.support:appcompat-v7:28.+' compile 'com.android.support.constraint:constraint-layout:1.0.2' + compile 'com.android.support:design:28.+' testCompile 'junit:junit:4.12' } diff --git a/src/app/src/main/AndroidManifest.xml b/src/app/src/main/AndroidManifest.xml index a7cbfac..44e678b 100644 --- a/src/app/src/main/AndroidManifest.xml +++ b/src/app/src/main/AndroidManifest.xml @@ -16,7 +16,10 @@ - + \ No newline at end of file diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/GameMenuActivity.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/GameMenuActivity.java index 21613ae..933d249 100644 --- a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/GameMenuActivity.java +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/GameMenuActivity.java @@ -1,15 +1,128 @@ package com.games.mkvs.interstellarmanager.views.game_menu; +import android.support.v7.app.AppCompatActivity; -import android.app.Activity; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.View; +import android.view.ViewGroup; + +import android.widget.TextView; import com.games.mkvs.interstellarmanager.R; -public class GameMenuActivity extends Activity { +public class GameMenuActivity extends AppCompatActivity { + + /** + * The {@link android.support.v4.view.PagerAdapter} that will provide + * fragments for each of the sections. We use a + * {@link FragmentPagerAdapter} derivative, which will keep every + * loaded fragment in memory. If this becomes too memory intensive, it + * may be best to switch to a + * {@link android.support.v4.app.FragmentStatePagerAdapter}. + */ + private SectionsPagerAdapter mSectionsPagerAdapter; + + /** + * The {@link ViewPager} that will host the section contents. + */ + private ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game_menu); + // Create the adapter that will return a fragment for each of the three + // primary sections of the activity. + mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); + + // Set up the ViewPager with the sections adapter. + mViewPager = findViewById(R.id.container); + mViewPager.setAdapter(mSectionsPagerAdapter); + + } + + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_game_menu, menu); + return true; + } + + /** + * A placeholder fragment containing a simple view. + */ + public static class PlaceholderFragment extends Fragment { + /** + * The fragment argument representing the section number for this + * fragment. + */ + private static final String ARG_SECTION_NUMBER = "section_number"; + + public PlaceholderFragment() { + } + + /** + * Returns a new instance of this fragment for the given section + * number. + */ + public static OverviewFragment newInstance(int sectionNumber) { + OverviewFragment fragment = new OverviewFragment(); + Bundle args = new Bundle(); + args.putInt(ARG_SECTION_NUMBER, sectionNumber); + fragment.setArguments(args); + return fragment; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.fragment_game_menu, container, false); + TextView textView = (TextView) rootView.findViewById(R.id.section_label); + textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER))); + return rootView; + } + } + + /** + * A {@link FragmentPagerAdapter} that returns a fragment corresponding to + * one of the sections/tabs/pages. + */ + public class SectionsPagerAdapter extends FragmentPagerAdapter { + + public SectionsPagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public Fragment getItem(int position) { + // getItem is called to instantiate the fragment for the given page. + // Return a PlaceholderFragment (defined as a static inner class below). + return PlaceholderFragment.newInstance(position + 1); + } + + @Override + public int getCount() { + // Show 3 total pages. + return 3; + } + + @Override + public CharSequence getPageTitle(int position) { + switch (position) { + case 0: + return "SECTION 1"; + case 1: + return "SECTION 2"; + case 2: + return "SECTION 3"; + } + return null; + } } } diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/OverviewFragment.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/OverviewFragment.java new file mode 100644 index 0000000..b258da3 --- /dev/null +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/OverviewFragment.java @@ -0,0 +1,30 @@ +package com.games.mkvs.interstellarmanager.views.game_menu; + + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.games.mkvs.interstellarmanager.R; + +/** + * A simple {@link Fragment} subclass. + */ +public class OverviewFragment extends Fragment { + + + public OverviewFragment() { + // Required empty public constructor + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_overview, container, false); + } + +} diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java index 0e6d43d..fde64e4 100644 --- a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java @@ -10,7 +10,6 @@ import android.widget.Button; import android.widget.LinearLayout; import android.widget.RelativeLayout; -import android.widget.TextView; import com.games.mkvs.interstellarmanager.R; import com.games.mkvs.interstellarmanager.base.contracts.BaseContracts; diff --git a/src/app/src/main/res/layout/activity_game_menu.xml b/src/app/src/main/res/layout/activity_game_menu.xml index d89d6c2..293160e 100644 --- a/src/app/src/main/res/layout/activity_game_menu.xml +++ b/src/app/src/main/res/layout/activity_game_menu.xml @@ -1,9 +1,17 @@ - - + + + diff --git a/src/app/src/main/res/layout/fragment_game_menu.xml b/src/app/src/main/res/layout/fragment_game_menu.xml new file mode 100644 index 0000000..82d472c --- /dev/null +++ b/src/app/src/main/res/layout/fragment_game_menu.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/src/app/src/main/res/layout/fragment_overview.xml b/src/app/src/main/res/layout/fragment_overview.xml new file mode 100644 index 0000000..efcdeb6 --- /dev/null +++ b/src/app/src/main/res/layout/fragment_overview.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/src/app/src/main/res/menu/menu_game_menu.xml b/src/app/src/main/res/menu/menu_game_menu.xml new file mode 100644 index 0000000..c5c76e6 --- /dev/null +++ b/src/app/src/main/res/menu/menu_game_menu.xml @@ -0,0 +1,10 @@ + + + diff --git a/src/app/src/main/res/values-w820dp/dimens.xml b/src/app/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000..62df187 --- /dev/null +++ b/src/app/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/src/app/src/main/res/values/dimens.xml b/src/app/src/main/res/values/dimens.xml index 3e5fb57..12bc4dc 100644 --- a/src/app/src/main/res/values/dimens.xml +++ b/src/app/src/main/res/values/dimens.xml @@ -1,4 +1,9 @@ 30dp + + 16dp + 16dp + 16dp + 8dp \ No newline at end of file diff --git a/src/app/src/main/res/values/strings.xml b/src/app/src/main/res/values/strings.xml index 8683674..adab252 100644 --- a/src/app/src/main/res/values/strings.xml +++ b/src/app/src/main/res/values/strings.xml @@ -6,5 +6,8 @@ START GAME LOAD GAME OPTIONS + GameMenuActivity + Settings + Hello World from section: %1$d diff --git a/src/app/src/main/res/values/styles.xml b/src/app/src/main/res/values/styles.xml index 2801a15..83f051f 100644 --- a/src/app/src/main/res/values/styles.xml +++ b/src/app/src/main/res/values/styles.xml @@ -25,4 +25,13 @@ #7f7f7f #FFFFFF + + + +