From e39162c1262cf5c00782bc236aac6049a1bff833 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Mon, 6 Apr 2015 18:37:51 +0200 Subject: [PATCH] Small bugfixes and better performance --- app/build.gradle | 2 +- .../gramophone/adapter/PagerAdapter.java | 134 ++++++++++++++++++ .../ui/activities/MainActivity.java | 80 +++-------- .../ui/activities/base/AbsFabActivity.java | 14 +- .../tageditor/AbsTagEditorActivity.java | 4 +- .../AbsMainActivityFragment.java | 9 +- .../AbsMainActivityRecyclerViewFragment.java | 16 +-- .../AlbumViewFragment.java | 6 +- .../ArtistViewFragment.java | 4 +- .../PlaylistViewFragment.java | 4 +- .../SongViewFragment.java | 4 +- .../layout-land/activity_music_controller.xml | 4 +- .../main/res/layout/activity_album_detail.xml | 2 +- .../res/layout/activity_album_tag_editor.xml | 2 +- .../res/layout/activity_artist_detail.xml | 2 +- app/src/main/res/layout/activity_main.xml | 6 +- .../res/layout/activity_music_controller.xml | 2 +- .../res/layout/activity_playlist_detail.xml | 2 +- .../res/layout/activity_song_tag_editor.xml | 2 +- .../main/res/values-sw600dp-land/integers.xml | 4 + app/src/main/res/values-sw600dp/integers.xml | 4 + 21 files changed, 202 insertions(+), 105 deletions(-) create mode 100644 app/src/main/java/com/kabouzeid/gramophone/adapter/PagerAdapter.java create mode 100644 app/src/main/res/values-sw600dp-land/integers.xml create mode 100644 app/src/main/res/values-sw600dp/integers.xml diff --git a/app/build.gradle b/app/build.gradle index c3262873..9ae7240a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,7 +57,7 @@ dependencies { compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar' compile 'com.nhaarman.listviewanimations:lib-core-slh:3.1.0@aar' compile 'com.nineoldandroids:library:2.4.0' - compile 'com.github.clans:fab:1.2.0' + compile 'com.melnykov:floatingactionbutton:1.3.0' compile 'com.github.ksoichiro:android-observablescrollview:1.5.0' compile 'com.mcxiaoke.volley:library:1.0.15' compile 'com.squareup.picasso:picasso:2.5.0' diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/PagerAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/PagerAdapter.java new file mode 100644 index 00000000..7b7541f9 --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/PagerAdapter.java @@ -0,0 +1,134 @@ +package com.kabouzeid.gramophone.adapter; + +import android.content.Context; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.util.SparseArray; +import android.view.ViewGroup; + +import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AlbumViewFragment; +import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.ArtistViewFragment; +import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.PlaylistViewFragment; +import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.SongViewFragment; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class PagerAdapter extends FragmentPagerAdapter { + + private final SparseArray> mFragmentArray = new SparseArray<>(); + + private final List mHolderList = new ArrayList<>(); + + private final Context mContext; + + private int mCurrentPage; + + private String[] titles; + + public PagerAdapter(final Context context, final FragmentManager fragmentManager) { + super(fragmentManager); + mContext = context; + titles = new String[]{ + context.getResources().getString(R.string.songs), + context.getResources().getString(R.string.albums), + context.getResources().getString(R.string.artists), + context.getResources().getString(R.string.playlists) + }; + } + + @SuppressWarnings("synthetic-access") + public void add(final Class className, final Bundle params) { + final Holder mHolder = new Holder(); + mHolder.mClassName = className.getName(); + mHolder.mParams = params; + + final int mPosition = mHolderList.size(); + mHolderList.add(mPosition, mHolder); + notifyDataSetChanged(); + } + + public Fragment getFragment(final int position) { + final WeakReference mWeakFragment = mFragmentArray.get(position); + if (mWeakFragment != null && mWeakFragment.get() != null) { + return mWeakFragment.get(); + } + return getItem(position); + } + + @Override + public Object instantiateItem(final ViewGroup container, final int position) { + final Fragment mFragment = (Fragment) super.instantiateItem(container, position); + final WeakReference mWeakFragment = mFragmentArray.get(position); + if (mWeakFragment != null) { + mWeakFragment.clear(); + } + mFragmentArray.put(position, new WeakReference(mFragment)); + return mFragment; + } + + @Override + public Fragment getItem(final int position) { + final Holder mCurrentHolder = mHolderList.get(position); + final Fragment mFragment = Fragment.instantiate(mContext, + mCurrentHolder.mClassName, mCurrentHolder.mParams); + return mFragment; + } + + @Override + public void destroyItem(final ViewGroup container, final int position, final Object object) { + super.destroyItem(container, position, object); + final WeakReference mWeakFragment = mFragmentArray.get(position); + if (mWeakFragment != null) { + mWeakFragment.clear(); + } + } + + @Override + public int getCount() { + return mHolderList.size(); + } + + @Override + public CharSequence getPageTitle(final int position) { + return titles[position] + .toUpperCase(Locale.getDefault()); + } + + public int getCurrentPage() { + return mCurrentPage; + } + + protected void setCurrentPage(final int currentPage) { + mCurrentPage = currentPage; + } + + public enum MusicFragments { + SONG(SongViewFragment.class), + ALBUM(AlbumViewFragment.class), + ARTIST(ArtistViewFragment.class), + PLAYLIST(PlaylistViewFragment.class); + + private Class mFragmentClass; + + MusicFragments(final Class fragmentClass) { + mFragmentClass = fragmentClass; + } + + public Class getFragmentClass() { + return mFragmentClass; + } + + } + + private final static class Holder { + String mClassName; + + Bundle mParams; + } +} diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index 276c8e35..2c16aadb 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -1,26 +1,23 @@ package com.kabouzeid.gramophone.ui.activities; -import android.app.Activity; -import android.app.Fragment; -import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; -import android.preference.PreferenceActivity; -import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.util.Pair; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.Toolbar; -import android.util.SparseArray; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; +import android.view.MotionEvent; import android.view.View; import com.astuetz.PagerSlidingTabStrip; import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.adapter.PagerAdapter; import com.kabouzeid.gramophone.helper.AboutDeveloperDialogHelper; import com.kabouzeid.gramophone.helper.CreatePlaylistDialogHelper; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; @@ -30,10 +27,6 @@ import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.ui.fragments.NavigationDrawerFragment; import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AbsMainActivityFragment; -import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AlbumViewFragment; -import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.ArtistViewFragment; -import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.PlaylistViewFragment; -import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.SongViewFragment; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PreferenceUtils; @@ -51,7 +44,7 @@ public class MainActivity extends AbsFabActivity private NavigationDrawerFragment navigationDrawerFragment; private Toolbar toolbar; private View statusBar; - private MainActivityViewPagerAdapter viewPagerAdapter; + private PagerAdapter pagerAdapter; private ViewPager viewPager; private PagerSlidingTabStrip slidingTabLayout; private int currentPage = -1; @@ -72,12 +65,20 @@ public class MainActivity extends AbsFabActivity } private void setUpViewPager() { - viewPagerAdapter = new MainActivityViewPagerAdapter(this); - viewPager.setAdapter(viewPagerAdapter); + pagerAdapter = new PagerAdapter(this, getSupportFragmentManager()); + final PagerAdapter.MusicFragments[] fragments = PagerAdapter.MusicFragments.values(); + for (final PagerAdapter.MusicFragments fragment : fragments) { + pagerAdapter.add(fragment.getFragmentClass(), null); + } + + viewPager.setAdapter(pagerAdapter); + viewPager.setOffscreenPageLimit(pagerAdapter.getCount() - 1); + int startPosition = PreferenceUtils.getInstance(this).getDefaultStartPage(); startPosition = startPosition == -1 ? PreferenceUtils.getInstance(this).getLastStartPage() : startPosition; currentPage = startPosition; viewPager.setCurrentItem(startPosition); + navigationDrawerFragment.setItemChecked(startPosition); final int accentColor = Util.resolveColor(MainActivity.this, R.attr.colorAccent); @@ -92,10 +93,8 @@ public class MainActivity extends AbsFabActivity @Override public void onPageSelected(final int position) { - PreferenceUtils.getInstance(MainActivity.this).setLastStartPage(position); navigationDrawerFragment.setItemChecked(position); currentPage = position; - invalidateOptionsMenu(); } @Override @@ -172,7 +171,7 @@ public class MainActivity extends AbsFabActivity try { super.enableViews(); toolbar.setEnabled(true); - ((AbsMainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).enableViews(); + ((AbsMainActivityFragment) pagerAdapter.getItem(viewPager.getCurrentItem())).enableViews(); } catch (NullPointerException e) { //Log.e(TAG, "wasn't able to enable the views", e); } @@ -182,7 +181,7 @@ public class MainActivity extends AbsFabActivity public void disableViews() { try { super.disableViews(); - ((AbsMainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).disableViews(); + ((AbsMainActivityFragment) pagerAdapter.getItem(viewPager.getCurrentItem())).disableViews(); } catch (NullPointerException e) { //Log.e(TAG, "wasn't able to disable the views", e); } @@ -279,48 +278,9 @@ public class MainActivity extends AbsFabActivity super.onBackPressed(); } - private class MainActivityViewPagerAdapter extends FragmentPagerAdapter { - - private String[] titles; - - private SparseArray pages; - private Context context; - - public MainActivityViewPagerAdapter(Activity activity) { - super(activity.getFragmentManager()); - pages = new SparseArray<>(); - context = activity; - titles = new String[]{ - context.getResources().getString(R.string.songs), - context.getResources().getString(R.string.albums), - context.getResources().getString(R.string.artists), - context.getResources().getString(R.string.playlists) - }; - } - - @Override - public AbsMainActivityFragment getItem(final int position) { - switch (position) { - case 0: - return pages.get(position, new SongViewFragment()); - case 1: - return pages.get(position, new AlbumViewFragment()); - case 2: - return pages.get(position, new ArtistViewFragment()); - case 3: - return pages.get(position, new PlaylistViewFragment()); - } - return null; - } - - @Override - public int getCount() { - return titles.length; - } - - @Override - public CharSequence getPageTitle(int position) { - return titles[position]; - } + @Override + protected void onPause() { + super.onPause(); + PreferenceUtils.getInstance(MainActivity.this).setLastStartPage(currentPage); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java index 9ca842f5..57230b70 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java @@ -9,13 +9,13 @@ import android.view.MotionEvent; import android.view.View; import android.widget.Toast; -import com.github.clans.fab.FloatingActionButton; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.misc.SmallOnGestureListener; import com.kabouzeid.gramophone.model.MusicRemoteEvent; import com.kabouzeid.gramophone.util.NavigationUtil; +import com.melnykov.fab.FloatingActionButton; import com.squareup.otto.Subscribe; /** @@ -103,18 +103,6 @@ public abstract class AbsFabActivity extends AbsBaseActivity { updateControllerState(); } - @Override - public void enableViews() { - super.enableViews(); - getFab().setEnabled(true); - } - - @Override - public void disableViews() { - super.disableViews(); - getFab().setEnabled(false); - } - public Pair[] getSharedViewsWithFab(Pair[] sharedViews) { Pair[] sharedViewsWithFab; if (sharedViews != null) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java index c177727b..686cce05 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java @@ -8,18 +8,15 @@ import android.media.MediaScannerConnection; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.support.v7.app.ActionBarActivity; import android.support.v7.graphics.Palette; import android.support.v7.widget.Toolbar; import android.util.Log; -import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.animation.OvershootInterpolator; import android.widget.ImageView; import com.afollestad.materialdialogs.MaterialDialog; -import com.github.clans.fab.FloatingActionButton; import com.github.ksoichiro.android.observablescrollview.ObservableScrollView; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; @@ -30,6 +27,7 @@ import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.ViewUtil; +import com.melnykov.fab.FloatingActionButton; import com.nineoldandroids.view.ViewHelper; import com.nineoldandroids.view.ViewPropertyAnimator; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityFragment.java index 529a3d0f..73c97abf 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityFragment.java @@ -1,7 +1,8 @@ package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments; -import android.app.Fragment; import android.os.Build; +import android.os.Bundle; +import android.support.v4.app.Fragment; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; @@ -54,6 +55,12 @@ public abstract class AbsMainActivityFragment extends Fragment implements KabVie enableViews(); } + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + setHasOptionsMenu(true); + } + protected MainActivity getMainActivity() { return (MainActivity) getActivity(); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityRecyclerViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityRecyclerViewFragment.java index ec3f744f..84d9c4de 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityRecyclerViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityRecyclerViewFragment.java @@ -2,7 +2,10 @@ package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments; import android.os.Bundle; import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.GestureDetector; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -12,6 +15,7 @@ import com.kabouzeid.gramophone.R; * Created by karim on 30.03.15. */ public abstract class AbsMainActivityRecyclerViewFragment extends AbsMainActivityFragment { + public static final String TAG = AbsMainActivityRecyclerViewFragment.class.getSimpleName(); private RecyclerView recyclerView; @Override @@ -27,9 +31,9 @@ public abstract class AbsMainActivityRecyclerViewFragment extends AbsMainActivit } private void setUpRecyclerView() { - recyclerView.setLayoutManager(getLayoutManager()); + recyclerView.setLayoutManager(createLayoutManager()); recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding()); - recyclerView.setAdapter(getAdapter()); + recyclerView.setAdapter(createAdapter()); } @Override @@ -46,11 +50,7 @@ public abstract class AbsMainActivityRecyclerViewFragment extends AbsMainActivit protected abstract int getLayoutResId(); - protected abstract RecyclerView.LayoutManager getLayoutManager(); + protected abstract RecyclerView.LayoutManager createLayoutManager(); - protected abstract RecyclerView.Adapter getAdapter(); - - public RecyclerView getRecyclerView() { - return recyclerView; - } + protected abstract RecyclerView.Adapter createAdapter(); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java index eaf38105..30cf4c52 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java @@ -18,12 +18,12 @@ public class AlbumViewFragment extends AbsMainActivityRecyclerViewFragment { } @Override - protected RecyclerView.LayoutManager getLayoutManager() { - return new GridLayoutManager(getActivity(), 2); + protected RecyclerView.LayoutManager createLayoutManager() { + return new GridLayoutManager(getActivity(), getResources().getInteger(R.integer.grid_columns)); } @Override - protected RecyclerView.Adapter getAdapter() { + protected RecyclerView.Adapter createAdapter() { return new AlbumAdapter(getActivity()); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java index ab94cb25..0c7f0cd4 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java @@ -16,12 +16,12 @@ public class ArtistViewFragment extends AbsMainActivityRecyclerViewFragment { } @Override - protected RecyclerView.LayoutManager getLayoutManager() { + protected RecyclerView.LayoutManager createLayoutManager() { return new GridLayoutManager(getActivity(), 1); } @Override - protected RecyclerView.Adapter getAdapter() { + protected RecyclerView.Adapter createAdapter() { return new ArtistAdapter(getActivity()); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/PlaylistViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/PlaylistViewFragment.java index 73927dab..328f9c07 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/PlaylistViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/PlaylistViewFragment.java @@ -16,12 +16,12 @@ public class PlaylistViewFragment extends AbsMainActivityRecyclerViewFragment { } @Override - protected RecyclerView.LayoutManager getLayoutManager() { + protected RecyclerView.LayoutManager createLayoutManager() { return new GridLayoutManager(getActivity(), 1); } @Override - protected RecyclerView.Adapter getAdapter() { + protected RecyclerView.Adapter createAdapter() { return new PlaylistAdapter(getActivity()); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java index 4ee4fcbc..3ba8981d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java @@ -18,12 +18,12 @@ public class SongViewFragment extends AbsMainActivityRecyclerViewFragment { } @Override - protected RecyclerView.LayoutManager getLayoutManager() { + protected RecyclerView.LayoutManager createLayoutManager() { return new GridLayoutManager(getActivity(), 1); } @Override - protected RecyclerView.Adapter getAdapter() { + protected RecyclerView.Adapter createAdapter() { return new SongAdapter(getActivity()); } } diff --git a/app/src/main/res/layout-land/activity_music_controller.xml b/app/src/main/res/layout-land/activity_music_controller.xml index 2714ce8e..e35c29ed 100644 --- a/app/src/main/res/layout-land/activity_music_controller.xml +++ b/app/src/main/res/layout-land/activity_music_controller.xml @@ -130,7 +130,7 @@ android:layout_margin="16dp" android:background="?attr/music_controller_container_color"> - - - - - - diff --git a/app/src/main/res/layout/activity_playlist_detail.xml b/app/src/main/res/layout/activity_playlist_detail.xml index a066dcae..eb3dc367 100644 --- a/app/src/main/res/layout/activity_playlist_detail.xml +++ b/app/src/main/res/layout/activity_playlist_detail.xml @@ -29,7 +29,7 @@ android:layout_gravity="right|bottom" android:fitsSystemWindows="true"> - - + + 6 + \ No newline at end of file diff --git a/app/src/main/res/values-sw600dp/integers.xml b/app/src/main/res/values-sw600dp/integers.xml new file mode 100644 index 00000000..57abde48 --- /dev/null +++ b/app/src/main/res/values-sw600dp/integers.xml @@ -0,0 +1,4 @@ + + + 4 + \ No newline at end of file