Small bugfixes and better performance
This commit is contained in:
parent
35dbb1ee95
commit
e39162c126
21 changed files with 202 additions and 105 deletions
|
|
@ -57,7 +57,7 @@ dependencies {
|
||||||
compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar'
|
compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar'
|
||||||
compile 'com.nhaarman.listviewanimations:lib-core-slh:3.1.0@aar'
|
compile 'com.nhaarman.listviewanimations:lib-core-slh:3.1.0@aar'
|
||||||
compile 'com.nineoldandroids:library:2.4.0'
|
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.github.ksoichiro:android-observablescrollview:1.5.0'
|
||||||
compile 'com.mcxiaoke.volley:library:1.0.15'
|
compile 'com.mcxiaoke.volley:library:1.0.15'
|
||||||
compile 'com.squareup.picasso:picasso:2.5.0'
|
compile 'com.squareup.picasso:picasso:2.5.0'
|
||||||
|
|
|
||||||
|
|
@ -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<WeakReference<Fragment>> mFragmentArray = new SparseArray<>();
|
||||||
|
|
||||||
|
private final List<Holder> 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<? extends Fragment> 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<Fragment> 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<Fragment> mWeakFragment = mFragmentArray.get(position);
|
||||||
|
if (mWeakFragment != null) {
|
||||||
|
mWeakFragment.clear();
|
||||||
|
}
|
||||||
|
mFragmentArray.put(position, new WeakReference<Fragment>(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<Fragment> 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<? extends Fragment> mFragmentClass;
|
||||||
|
|
||||||
|
MusicFragments(final Class<? extends Fragment> fragmentClass) {
|
||||||
|
mFragmentClass = fragmentClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Class<? extends Fragment> getFragmentClass() {
|
||||||
|
return mFragmentClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private final static class Holder {
|
||||||
|
String mClassName;
|
||||||
|
|
||||||
|
Bundle mParams;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,26 +1,23 @@
|
||||||
package com.kabouzeid.gramophone.ui.activities;
|
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.Intent;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.PreferenceActivity;
|
|
||||||
import android.support.v13.app.FragmentPagerAdapter;
|
|
||||||
import android.support.v4.util.Pair;
|
import android.support.v4.util.Pair;
|
||||||
import android.support.v4.view.ViewPager;
|
import android.support.v4.view.ViewPager;
|
||||||
import android.support.v4.widget.DrawerLayout;
|
import android.support.v4.widget.DrawerLayout;
|
||||||
import android.support.v7.app.ActionBar;
|
import android.support.v7.app.ActionBar;
|
||||||
import android.support.v7.app.ActionBarDrawerToggle;
|
import android.support.v7.app.ActionBarDrawerToggle;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.util.SparseArray;
|
import android.util.Log;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import com.astuetz.PagerSlidingTabStrip;
|
import com.astuetz.PagerSlidingTabStrip;
|
||||||
import com.kabouzeid.gramophone.R;
|
import com.kabouzeid.gramophone.R;
|
||||||
|
import com.kabouzeid.gramophone.adapter.PagerAdapter;
|
||||||
import com.kabouzeid.gramophone.helper.AboutDeveloperDialogHelper;
|
import com.kabouzeid.gramophone.helper.AboutDeveloperDialogHelper;
|
||||||
import com.kabouzeid.gramophone.helper.CreatePlaylistDialogHelper;
|
import com.kabouzeid.gramophone.helper.CreatePlaylistDialogHelper;
|
||||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
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.activities.base.AbsFabActivity;
|
||||||
import com.kabouzeid.gramophone.ui.fragments.NavigationDrawerFragment;
|
import com.kabouzeid.gramophone.ui.fragments.NavigationDrawerFragment;
|
||||||
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AbsMainActivityFragment;
|
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.MusicUtil;
|
||||||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||||
import com.kabouzeid.gramophone.util.PreferenceUtils;
|
import com.kabouzeid.gramophone.util.PreferenceUtils;
|
||||||
|
|
@ -51,7 +44,7 @@ public class MainActivity extends AbsFabActivity
|
||||||
private NavigationDrawerFragment navigationDrawerFragment;
|
private NavigationDrawerFragment navigationDrawerFragment;
|
||||||
private Toolbar toolbar;
|
private Toolbar toolbar;
|
||||||
private View statusBar;
|
private View statusBar;
|
||||||
private MainActivityViewPagerAdapter viewPagerAdapter;
|
private PagerAdapter pagerAdapter;
|
||||||
private ViewPager viewPager;
|
private ViewPager viewPager;
|
||||||
private PagerSlidingTabStrip slidingTabLayout;
|
private PagerSlidingTabStrip slidingTabLayout;
|
||||||
private int currentPage = -1;
|
private int currentPage = -1;
|
||||||
|
|
@ -72,12 +65,20 @@ public class MainActivity extends AbsFabActivity
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpViewPager() {
|
private void setUpViewPager() {
|
||||||
viewPagerAdapter = new MainActivityViewPagerAdapter(this);
|
pagerAdapter = new PagerAdapter(this, getSupportFragmentManager());
|
||||||
viewPager.setAdapter(viewPagerAdapter);
|
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();
|
int startPosition = PreferenceUtils.getInstance(this).getDefaultStartPage();
|
||||||
startPosition = startPosition == -1 ? PreferenceUtils.getInstance(this).getLastStartPage() : startPosition;
|
startPosition = startPosition == -1 ? PreferenceUtils.getInstance(this).getLastStartPage() : startPosition;
|
||||||
currentPage = startPosition;
|
currentPage = startPosition;
|
||||||
viewPager.setCurrentItem(startPosition);
|
viewPager.setCurrentItem(startPosition);
|
||||||
|
|
||||||
navigationDrawerFragment.setItemChecked(startPosition);
|
navigationDrawerFragment.setItemChecked(startPosition);
|
||||||
|
|
||||||
final int accentColor = Util.resolveColor(MainActivity.this, R.attr.colorAccent);
|
final int accentColor = Util.resolveColor(MainActivity.this, R.attr.colorAccent);
|
||||||
|
|
@ -92,10 +93,8 @@ public class MainActivity extends AbsFabActivity
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPageSelected(final int position) {
|
public void onPageSelected(final int position) {
|
||||||
PreferenceUtils.getInstance(MainActivity.this).setLastStartPage(position);
|
|
||||||
navigationDrawerFragment.setItemChecked(position);
|
navigationDrawerFragment.setItemChecked(position);
|
||||||
currentPage = position;
|
currentPage = position;
|
||||||
invalidateOptionsMenu();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -172,7 +171,7 @@ public class MainActivity extends AbsFabActivity
|
||||||
try {
|
try {
|
||||||
super.enableViews();
|
super.enableViews();
|
||||||
toolbar.setEnabled(true);
|
toolbar.setEnabled(true);
|
||||||
((AbsMainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).enableViews();
|
((AbsMainActivityFragment) pagerAdapter.getItem(viewPager.getCurrentItem())).enableViews();
|
||||||
} catch (NullPointerException e) {
|
} catch (NullPointerException e) {
|
||||||
//Log.e(TAG, "wasn't able to enable the views", e);
|
//Log.e(TAG, "wasn't able to enable the views", e);
|
||||||
}
|
}
|
||||||
|
|
@ -182,7 +181,7 @@ public class MainActivity extends AbsFabActivity
|
||||||
public void disableViews() {
|
public void disableViews() {
|
||||||
try {
|
try {
|
||||||
super.disableViews();
|
super.disableViews();
|
||||||
((AbsMainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).disableViews();
|
((AbsMainActivityFragment) pagerAdapter.getItem(viewPager.getCurrentItem())).disableViews();
|
||||||
} catch (NullPointerException e) {
|
} catch (NullPointerException e) {
|
||||||
//Log.e(TAG, "wasn't able to disable the views", e);
|
//Log.e(TAG, "wasn't able to disable the views", e);
|
||||||
}
|
}
|
||||||
|
|
@ -279,48 +278,9 @@ public class MainActivity extends AbsFabActivity
|
||||||
super.onBackPressed();
|
super.onBackPressed();
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MainActivityViewPagerAdapter extends FragmentPagerAdapter {
|
@Override
|
||||||
|
protected void onPause() {
|
||||||
private String[] titles;
|
super.onPause();
|
||||||
|
PreferenceUtils.getInstance(MainActivity.this).setLastStartPage(currentPage);
|
||||||
private SparseArray<AbsMainActivityFragment> 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];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,13 @@ import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.github.clans.fab.FloatingActionButton;
|
|
||||||
import com.kabouzeid.gramophone.App;
|
import com.kabouzeid.gramophone.App;
|
||||||
import com.kabouzeid.gramophone.R;
|
import com.kabouzeid.gramophone.R;
|
||||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||||
import com.kabouzeid.gramophone.misc.SmallOnGestureListener;
|
import com.kabouzeid.gramophone.misc.SmallOnGestureListener;
|
||||||
import com.kabouzeid.gramophone.model.MusicRemoteEvent;
|
import com.kabouzeid.gramophone.model.MusicRemoteEvent;
|
||||||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||||
|
import com.melnykov.fab.FloatingActionButton;
|
||||||
import com.squareup.otto.Subscribe;
|
import com.squareup.otto.Subscribe;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -103,18 +103,6 @@ public abstract class AbsFabActivity extends AbsBaseActivity {
|
||||||
updateControllerState();
|
updateControllerState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void enableViews() {
|
|
||||||
super.enableViews();
|
|
||||||
getFab().setEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void disableViews() {
|
|
||||||
super.disableViews();
|
|
||||||
getFab().setEnabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Pair[] getSharedViewsWithFab(Pair[] sharedViews) {
|
public Pair[] getSharedViewsWithFab(Pair[] sharedViews) {
|
||||||
Pair[] sharedViewsWithFab;
|
Pair[] sharedViewsWithFab;
|
||||||
if (sharedViews != null) {
|
if (sharedViews != null) {
|
||||||
|
|
|
||||||
|
|
@ -8,18 +8,15 @@ import android.media.MediaScannerConnection;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.app.ActionBarActivity;
|
|
||||||
import android.support.v7.graphics.Palette;
|
import android.support.v7.graphics.Palette;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.animation.OvershootInterpolator;
|
import android.view.animation.OvershootInterpolator;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import com.afollestad.materialdialogs.MaterialDialog;
|
import com.afollestad.materialdialogs.MaterialDialog;
|
||||||
import com.github.clans.fab.FloatingActionButton;
|
|
||||||
import com.github.ksoichiro.android.observablescrollview.ObservableScrollView;
|
import com.github.ksoichiro.android.observablescrollview.ObservableScrollView;
|
||||||
import com.kabouzeid.gramophone.App;
|
import com.kabouzeid.gramophone.App;
|
||||||
import com.kabouzeid.gramophone.R;
|
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.MusicUtil;
|
||||||
import com.kabouzeid.gramophone.util.Util;
|
import com.kabouzeid.gramophone.util.Util;
|
||||||
import com.kabouzeid.gramophone.util.ViewUtil;
|
import com.kabouzeid.gramophone.util.ViewUtil;
|
||||||
|
import com.melnykov.fab.FloatingActionButton;
|
||||||
import com.nineoldandroids.view.ViewHelper;
|
import com.nineoldandroids.view.ViewHelper;
|
||||||
import com.nineoldandroids.view.ViewPropertyAnimator;
|
import com.nineoldandroids.view.ViewPropertyAnimator;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments;
|
package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments;
|
||||||
|
|
||||||
import android.app.Fragment;
|
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
|
||||||
import com.kabouzeid.gramophone.R;
|
import com.kabouzeid.gramophone.R;
|
||||||
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
||||||
|
|
@ -54,6 +55,12 @@ public abstract class AbsMainActivityFragment extends Fragment implements KabVie
|
||||||
enableViews();
|
enableViews();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
setHasOptionsMenu(true);
|
||||||
|
}
|
||||||
|
|
||||||
protected MainActivity getMainActivity() {
|
protected MainActivity getMainActivity() {
|
||||||
return (MainActivity) getActivity();
|
return (MainActivity) getActivity();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,10 @@ package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.GestureDetector;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
|
@ -12,6 +15,7 @@ import com.kabouzeid.gramophone.R;
|
||||||
* Created by karim on 30.03.15.
|
* Created by karim on 30.03.15.
|
||||||
*/
|
*/
|
||||||
public abstract class AbsMainActivityRecyclerViewFragment extends AbsMainActivityFragment {
|
public abstract class AbsMainActivityRecyclerViewFragment extends AbsMainActivityFragment {
|
||||||
|
public static final String TAG = AbsMainActivityRecyclerViewFragment.class.getSimpleName();
|
||||||
private RecyclerView recyclerView;
|
private RecyclerView recyclerView;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -27,9 +31,9 @@ public abstract class AbsMainActivityRecyclerViewFragment extends AbsMainActivit
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpRecyclerView() {
|
private void setUpRecyclerView() {
|
||||||
recyclerView.setLayoutManager(getLayoutManager());
|
recyclerView.setLayoutManager(createLayoutManager());
|
||||||
recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding());
|
recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding());
|
||||||
recyclerView.setAdapter(getAdapter());
|
recyclerView.setAdapter(createAdapter());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -46,11 +50,7 @@ public abstract class AbsMainActivityRecyclerViewFragment extends AbsMainActivit
|
||||||
|
|
||||||
protected abstract int getLayoutResId();
|
protected abstract int getLayoutResId();
|
||||||
|
|
||||||
protected abstract RecyclerView.LayoutManager getLayoutManager();
|
protected abstract RecyclerView.LayoutManager createLayoutManager();
|
||||||
|
|
||||||
protected abstract RecyclerView.Adapter getAdapter();
|
protected abstract RecyclerView.Adapter createAdapter();
|
||||||
|
|
||||||
public RecyclerView getRecyclerView() {
|
|
||||||
return recyclerView;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,12 @@ public class AlbumViewFragment extends AbsMainActivityRecyclerViewFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected RecyclerView.LayoutManager getLayoutManager() {
|
protected RecyclerView.LayoutManager createLayoutManager() {
|
||||||
return new GridLayoutManager(getActivity(), 2);
|
return new GridLayoutManager(getActivity(), getResources().getInteger(R.integer.grid_columns));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected RecyclerView.Adapter getAdapter() {
|
protected RecyclerView.Adapter createAdapter() {
|
||||||
return new AlbumAdapter(getActivity());
|
return new AlbumAdapter(getActivity());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,12 @@ public class ArtistViewFragment extends AbsMainActivityRecyclerViewFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected RecyclerView.LayoutManager getLayoutManager() {
|
protected RecyclerView.LayoutManager createLayoutManager() {
|
||||||
return new GridLayoutManager(getActivity(), 1);
|
return new GridLayoutManager(getActivity(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected RecyclerView.Adapter getAdapter() {
|
protected RecyclerView.Adapter createAdapter() {
|
||||||
return new ArtistAdapter(getActivity());
|
return new ArtistAdapter(getActivity());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,12 @@ public class PlaylistViewFragment extends AbsMainActivityRecyclerViewFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected RecyclerView.LayoutManager getLayoutManager() {
|
protected RecyclerView.LayoutManager createLayoutManager() {
|
||||||
return new GridLayoutManager(getActivity(), 1);
|
return new GridLayoutManager(getActivity(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected RecyclerView.Adapter getAdapter() {
|
protected RecyclerView.Adapter createAdapter() {
|
||||||
return new PlaylistAdapter(getActivity());
|
return new PlaylistAdapter(getActivity());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,12 @@ public class SongViewFragment extends AbsMainActivityRecyclerViewFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected RecyclerView.LayoutManager getLayoutManager() {
|
protected RecyclerView.LayoutManager createLayoutManager() {
|
||||||
return new GridLayoutManager(getActivity(), 1);
|
return new GridLayoutManager(getActivity(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected RecyclerView.Adapter getAdapter() {
|
protected RecyclerView.Adapter createAdapter() {
|
||||||
return new SongAdapter(getActivity());
|
return new SongAdapter(getActivity());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:background="?attr/music_controller_container_color">
|
android:background="?attr/music_controller_container_color">
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.melnykov.fab.FloatingActionButton
|
||||||
android:id="@+id/fab"
|
android:id="@+id/fab"
|
||||||
style="@style/PlayPauseFab"
|
style="@style/PlayPauseFab"
|
||||||
android:layout_centerInParent="true"
|
android:layout_centerInParent="true"
|
||||||
|
|
@ -141,6 +141,7 @@
|
||||||
android:layout_width="56dp"
|
android:layout_width="56dp"
|
||||||
android:layout_height="56dp"
|
android:layout_height="56dp"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_marginRight="-4dp"
|
||||||
android:layout_toLeftOf="@+id/fab"
|
android:layout_toLeftOf="@+id/fab"
|
||||||
android:background="?round_selector"
|
android:background="?round_selector"
|
||||||
android:padding="14dp"
|
android:padding="14dp"
|
||||||
|
|
@ -152,6 +153,7 @@
|
||||||
android:layout_width="56dp"
|
android:layout_width="56dp"
|
||||||
android:layout_height="56dp"
|
android:layout_height="56dp"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_marginLeft="-4dp"
|
||||||
android:layout_toRightOf="@+id/fab"
|
android:layout_toRightOf="@+id/fab"
|
||||||
android:background="?round_selector"
|
android:background="?round_selector"
|
||||||
android:padding="14dp"
|
android:padding="14dp"
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@
|
||||||
android:background="@android:color/transparent"/>
|
android:background="@android:color/transparent"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.melnykov.fab.FloatingActionButton
|
||||||
android:id="@+id/fab"
|
android:id="@+id/fab"
|
||||||
style="@style/PlayPauseFab"
|
style="@style/PlayPauseFab"
|
||||||
android:layout_gravity="right"
|
android:layout_gravity="right"
|
||||||
|
|
|
||||||
|
|
@ -150,7 +150,7 @@
|
||||||
android:layout_alignParentTop="true"
|
android:layout_alignParentTop="true"
|
||||||
android:background="#00000000"/>
|
android:background="#00000000"/>
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.melnykov.fab.FloatingActionButton
|
||||||
android:id="@+id/fab"
|
android:id="@+id/fab"
|
||||||
style="@style/PlayPauseFab"
|
style="@style/PlayPauseFab"
|
||||||
android:layout_gravity="bottom|right"
|
android:layout_gravity="bottom|right"
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@
|
||||||
android:background="@android:color/transparent"/>
|
android:background="@android:color/transparent"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.melnykov.fab.FloatingActionButton
|
||||||
android:id="@+id/fab"
|
android:id="@+id/fab"
|
||||||
style="@style/PlayPauseFab"
|
style="@style/PlayPauseFab"
|
||||||
android:layout_gravity="right"
|
android:layout_gravity="right"
|
||||||
|
|
|
||||||
|
|
@ -63,8 +63,8 @@
|
||||||
android:background="?colorPrimary"
|
android:background="?colorPrimary"
|
||||||
app:elevation="@dimen/toolbar_elevation"
|
app:elevation="@dimen/toolbar_elevation"
|
||||||
android:paddingLeft="64dp"
|
android:paddingLeft="64dp"
|
||||||
android:textColor="@color/grey_400"
|
android:textColor="@color/sliding_tabs_deactivated"
|
||||||
android:textColorPrimary="@color/white"
|
android:textColorPrimary="@color/sliding_tabs_activated"
|
||||||
app:pstsTabPaddingLeftRight="8dp"/>
|
app:pstsTabPaddingLeftRight="8dp"/>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
|
@ -79,7 +79,7 @@
|
||||||
android:layout_gravity="right|bottom"
|
android:layout_gravity="right|bottom"
|
||||||
android:fitsSystemWindows="true">
|
android:fitsSystemWindows="true">
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.melnykov.fab.FloatingActionButton
|
||||||
android:id="@+id/fab"
|
android:id="@+id/fab"
|
||||||
style="@style/PlayPauseFab"
|
style="@style/PlayPauseFab"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@
|
||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
android:src="@drawable/ic_shuffle_grey600_48dp"/>
|
android:src="@drawable/ic_shuffle_grey600_48dp"/>
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.melnykov.fab.FloatingActionButton
|
||||||
android:id="@+id/fab"
|
android:id="@+id/fab"
|
||||||
style="@style/PlayPauseFab"
|
style="@style/PlayPauseFab"
|
||||||
android:layout_centerInParent="true"/>
|
android:layout_centerInParent="true"/>
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
android:layout_gravity="right|bottom"
|
android:layout_gravity="right|bottom"
|
||||||
android:fitsSystemWindows="true">
|
android:fitsSystemWindows="true">
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.melnykov.fab.FloatingActionButton
|
||||||
android:id="@+id/fab"
|
android:id="@+id/fab"
|
||||||
style="@style/PlayPauseFab"
|
style="@style/PlayPauseFab"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
|
|
|
||||||
|
|
@ -191,7 +191,7 @@
|
||||||
android:layout_alignParentTop="true"
|
android:layout_alignParentTop="true"
|
||||||
android:background="#00000000"/>
|
android:background="#00000000"/>
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.melnykov.fab.FloatingActionButton
|
||||||
android:id="@+id/fab"
|
android:id="@+id/fab"
|
||||||
style="@style/PlayPauseFab"
|
style="@style/PlayPauseFab"
|
||||||
android:layout_gravity="bottom|right"
|
android:layout_gravity="bottom|right"
|
||||||
|
|
|
||||||
4
app/src/main/res/values-sw600dp-land/integers.xml
Normal file
4
app/src/main/res/values-sw600dp-land/integers.xml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<integer name="grid_columns">6</integer>
|
||||||
|
</resources>
|
||||||
4
app/src/main/res/values-sw600dp/integers.xml
Normal file
4
app/src/main/res/values-sw600dp/integers.xml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<integer name="grid_columns">4</integer>
|
||||||
|
</resources>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue