From 19687378e6c59233725e0b7b1580140642e13a47 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Wed, 8 Apr 2015 22:19:04 +0200 Subject: Made an incomplete, messy start with ViewPager --- app/src/main/AndroidManifest.xml | 8 + .../camilstaps/taize/CollectionDemoActivity.java | 61 +++++++ .../com/camilstaps/taize/DailyReadingFragment.java | 99 +++++++++++ .../com/camilstaps/taize/DemoObjectFragment.java | 30 ++++ .../java/com/camilstaps/taize/MainActivity.java | 198 ++++++++------------- app/src/main/res/layout/activity_main.xml | 118 +++++------- app/src/main/res/layout/pager.xml | 10 ++ app/src/main/res/layout/pager_content.xml | 54 ++++++ 8 files changed, 374 insertions(+), 204 deletions(-) create mode 100644 app/src/main/java/com/camilstaps/taize/CollectionDemoActivity.java create mode 100644 app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java create mode 100644 app/src/main/java/com/camilstaps/taize/DemoObjectFragment.java create mode 100644 app/src/main/res/layout/pager.xml create mode 100644 app/src/main/res/layout/pager_content.xml (limited to 'app/src') diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ae08cb..3ebad4a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,6 +27,14 @@ android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> + + + diff --git a/app/src/main/java/com/camilstaps/taize/CollectionDemoActivity.java b/app/src/main/java/com/camilstaps/taize/CollectionDemoActivity.java new file mode 100644 index 0000000..9558af7 --- /dev/null +++ b/app/src/main/java/com/camilstaps/taize/CollectionDemoActivity.java @@ -0,0 +1,61 @@ +package com.camilstaps.taize; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentStatePagerAdapter; +import android.support.v4.view.ViewPager; + +/** + * Created by camilstaps on 8-4-15. + */ +public class CollectionDemoActivity extends FragmentActivity { + private static final int NUM_PAGES = 3; + + // When requested, this adapter returns a DemoObjectFragment, + // representing an object in the collection. + DemoCollectionPagerAdapter mDemoCollectionPagerAdapter; + ViewPager mViewPager; + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.pager); + + // ViewPager and its adapters use support library + // fragments, so use getSupportFragmentManager. + mDemoCollectionPagerAdapter = new DemoCollectionPagerAdapter(getSupportFragmentManager()); + mViewPager = (ViewPager) findViewById(R.id.pager); + mViewPager.setAdapter(mDemoCollectionPagerAdapter); + } + + @Override + public void onBackPressed() { + if (mViewPager.getCurrentItem() == 0) { + super.onBackPressed(); + } else { + mViewPager.setCurrentItem(mViewPager.getCurrentItem() - 1); + } + } + + private class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter { + public DemoCollectionPagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public Fragment getItem(int i) { + return new DemoObjectFragment(); + } + + @Override + public int getCount() { + return NUM_PAGES; + } + + @Override + public CharSequence getPageTitle(int position) { + return "OBJECT " + (position + 1); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java b/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java new file mode 100644 index 0000000..cc774f7 --- /dev/null +++ b/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java @@ -0,0 +1,99 @@ +package com.camilstaps.taize; + +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.support.v4.app.Fragment; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.camilstaps.common.Date; +import com.camilstaps.common.Listener; + +/** + * Created by camilstaps on 8-4-15. + */ +public class DailyReadingFragment extends Fragment { + + private SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener; + + View rootView; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // The last two arguments ensure LayoutParams are inflated + // properly. + rootView = inflater.inflate(R.layout.pager_content, container, false); + + //Bundle args = getArguments(); + //((TextView) rootView.findViewById(R.id.pager_content_text)).setText(args.getString("text")); + + setupContent(); + + return rootView; + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + sharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + switch (key) { + case "dailyreadings": + case "dailyreadingbible": + setupContent(); + break; + } + } + }; + PreferenceManager.getDefaultSharedPreferences(getActivity()).registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); + } + + protected void setupContent() { + setDailyReading(); + setDailyReadingBibleText(); + + Log.d("MAIN", "Setting up content"); + } + + private void setDailyReading() { + Date date = new Date(); + + Taize.getDailyReading(getActivity(), new Listener() { + @Override + public void success(DailyReading data) { + ((TextView) rootView.findViewById(R.id.textDailyReading)).setText(data.getTextWithoutReference()); + BibleText bt = data.getBibleReference(); + if (bt != null) + ((TextView) rootView.findViewById(R.id.refDailyReadingBibleText)).setText(bt.toString()); + } + + @Override + public void failure() { + ((TextView) rootView.findViewById(R.id.textDailyReading)).setText("No reading found."); + } + }, date); + + ((TextView) rootView.findViewById(R.id.dateDailyReading)).setText(date.toNiceString(getActivity())); + } + + private void setDailyReadingBibleText() { + Taize.getDailyReadingBibleText(getActivity(), new Listener() { + @Override + public void success(String data) { + ((TextView) rootView.findViewById(R.id.textDailyReadingBibleText)).setText(data); + } + + @Override + public void failure() { + ((TextView) rootView.findViewById(R.id.textDailyReadingBibleText)).setText("No bible text found."); + } + }); + } + +} diff --git a/app/src/main/java/com/camilstaps/taize/DemoObjectFragment.java b/app/src/main/java/com/camilstaps/taize/DemoObjectFragment.java new file mode 100644 index 0000000..17a0858 --- /dev/null +++ b/app/src/main/java/com/camilstaps/taize/DemoObjectFragment.java @@ -0,0 +1,30 @@ +package com.camilstaps.taize; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +/** + * Created by camilstaps on 8-4-15. + */ + + +// Instances of this class are fragments representing a single +// object in our collection. +public class DemoObjectFragment extends Fragment { + public static final String ARG_OBJECT = "object"; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // The last two arguments ensure LayoutParams are inflated + // properly. + View rootView = inflater.inflate(R.layout.pager_content, container, false); + Bundle args = getArguments(); + //((TextView) rootView.findViewById(R.id.pager_content_text)).setText(args.getString("text")); + return rootView; + } +} + diff --git a/app/src/main/java/com/camilstaps/taize/MainActivity.java b/app/src/main/java/com/camilstaps/taize/MainActivity.java index 4f22a38..e9157ef 100644 --- a/app/src/main/java/com/camilstaps/taize/MainActivity.java +++ b/app/src/main/java/com/camilstaps/taize/MainActivity.java @@ -1,55 +1,36 @@ package com.camilstaps.taize; -import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; -import android.support.v7.app.ActionBarActivity; -import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentStatePagerAdapter; +import android.support.v4.view.ViewPager; +import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; -import android.view.LayoutInflater; import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.support.v4.widget.DrawerLayout; import android.widget.TextView; import com.camilstaps.common.Date; import com.camilstaps.common.Listener; -import com.camilstaps.common.NullListener; - -import java.util.HashSet; - - -public class MainActivity extends ActionBarActivity - implements NavigationDrawerFragment.NavigationDrawerCallbacks { - - /** - * Fragment managing the behaviors, interactions and presentation of the navigation drawer. - */ - private NavigationDrawerFragment mNavigationDrawerFragment; - /** - * Used to store the last screen title. For use in {@link #restoreActionBar()}. - */ - private CharSequence mTitle; +public class MainActivity extends ActionBarActivity { private SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener; + ViewPager pager; + PagerAdapter pagerAdapter; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); - mTitle = getTitle(); - // Set up the drawer. - mNavigationDrawerFragment.setUp(R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout)); + setContentView(R.layout.activity_main); setupContent(); @@ -65,6 +46,14 @@ public class MainActivity extends ActionBarActivity } }; PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); + + /*Intent intent = new Intent(this, CollectionDemoActivity.class); + startActivity(intent);*/ + + pager = (ViewPager) findViewById(R.id.pager); + pagerAdapter = new PagerAdapter(getSupportFragmentManager()); + pager.setAdapter(pagerAdapter); + } @Override @@ -79,6 +68,14 @@ public class MainActivity extends ActionBarActivity setupContent(); } + public void onBackPressed() { + if (pager.getCurrentItem() == 0) { + super.onBackPressed(); + } else { + pager.setCurrentItem(pager.getCurrentItem() - 1); + } + } + protected void setupContent() { setDailyReading(); setDailyReadingBibleText(); @@ -87,78 +84,44 @@ public class MainActivity extends ActionBarActivity } private void setDailyReading() { - Date date = new Date(); - - Taize.getDailyReading(this, new Listener() { - @Override - public void success(DailyReading data) { - ((TextView) findViewById(R.id.textDailyReading)).setText(data.getTextWithoutReference()); - BibleText bt = data.getBibleReference(); - if (bt != null) - ((TextView) findViewById(R.id.refDailyReadingBibleText)).setText(bt.toString()); - } - - @Override - public void failure() { - ((TextView) findViewById(R.id.textDailyReading)).setText("No reading found."); - } - }, date); - - ((TextView) findViewById(R.id.dateDailyReading)).setText(date.toNiceString(this)); +// Date date = new Date(); +// +// Taize.getDailyReading(this, new Listener() { +// @Override +// public void success(DailyReading data) { +// ((TextView) findViewById(R.id.textDailyReading)).setText(data.getTextWithoutReference()); +// BibleText bt = data.getBibleReference(); +// if (bt != null) +// ((TextView) findViewById(R.id.refDailyReadingBibleText)).setText(bt.toString()); +// } +// +// @Override +// public void failure() { +// ((TextView) findViewById(R.id.textDailyReading)).setText("No reading found."); +// } +// }, date); +// +// ((TextView) findViewById(R.id.dateDailyReading)).setText(date.toNiceString(this)); } private void setDailyReadingBibleText() { - Taize.getDailyReadingBibleText(this, new Listener() { - @Override - public void success(String data) { - ((TextView) findViewById(R.id.textDailyReadingBibleText)).setText(data); - } - - @Override - public void failure() { - ((TextView) findViewById(R.id.textDailyReadingBibleText)).setText("No bible text found."); - } - }); - } - - @Override - public void onNavigationDrawerItemSelected(int position) { - // update the main content by replacing fragments - FragmentManager fragmentManager = getSupportFragmentManager(); - fragmentManager.beginTransaction() - .replace(R.id.container, PlaceholderFragment.newInstance(position + 1)) - .commit(); - } - - public void onSectionAttached(int number) { - switch (number) { - case 1: - mTitle = getString(R.string.title_section1); - break; - case 2: - mTitle = getString(R.string.title_section2); - break; - } +// Taize.getDailyReadingBibleText(this, new Listener() { +// @Override +// public void success(String data) { +// ((TextView) findViewById(R.id.textDailyReadingBibleText)).setText(data); +// } +// +// @Override +// public void failure() { +// ((TextView) findViewById(R.id.textDailyReadingBibleText)).setText("No bible text found."); +// } +// }); } - public void restoreActionBar() { - ActionBar actionBar = getSupportActionBar(); - actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); - actionBar.setDisplayShowTitleEnabled(true); - actionBar.setTitle(mTitle); - } - - @Override public boolean onCreateOptionsMenu(Menu menu) { - if (!mNavigationDrawerFragment.isDrawerOpen()) { - // Only show items in the action bar relevant to this screen - // if the drawer is not showing. Otherwise, let the drawer - // decide what to show in the action bar. - getMenuInflater().inflate(R.menu.main, menu); - restoreActionBar(); - return true; - } + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.global, menu); return super.onCreateOptionsMenu(menu); } @@ -179,49 +142,28 @@ public class MainActivity extends ActionBarActivity return super.onOptionsItemSelected(item); } - /** - * 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"; - - /** - * Returns a new instance of this fragment for the given section - * number. - */ - public static PlaceholderFragment newInstance(int sectionNumber) { - PlaceholderFragment fragment = new PlaceholderFragment(); - Bundle args = new Bundle(); - args.putInt(ARG_SECTION_NUMBER, sectionNumber); - fragment.setArguments(args); - return fragment; - } - - public PlaceholderFragment() { + private class PagerAdapter extends FragmentStatePagerAdapter { + public PagerAdapter(FragmentManager fm) { + super(fm); } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_main, container, false); - - return rootView; + public Fragment getItem(int i) { + DailyReadingFragment fragment = new DailyReadingFragment(); + /*Bundle args = new Bundle(); + args.putString("text", "Hello world! " + i); + fragment.setArguments(args);*/ + return fragment; } @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - ((MainActivity) activity).onSectionAttached(getArguments().getInt(ARG_SECTION_NUMBER)); + public int getCount() { + return Integer.MAX_VALUE; } @Override - public void onResume() { - super.onResume(); - + public CharSequence getPageTitle(int position) { + return "OBJECT " + (position + 1); } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c4e3253..193db2d 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,78 +1,44 @@ - - - - - - - + + + + +