More transition bugs fixed

This commit is contained in:
Karim Abou Zeid 2015-02-28 18:33:21 +01:00
commit 85f4f91243
7 changed files with 95 additions and 124 deletions

View file

@ -36,6 +36,7 @@ import com.kabouzeid.materialmusic.ui.activities.base.AbsFabActivity;
import com.kabouzeid.materialmusic.ui.fragments.NavigationDrawerFragment; import com.kabouzeid.materialmusic.ui.fragments.NavigationDrawerFragment;
import com.kabouzeid.materialmusic.ui.fragments.mainactivityfragments.AlbumViewFragment; import com.kabouzeid.materialmusic.ui.fragments.mainactivityfragments.AlbumViewFragment;
import com.kabouzeid.materialmusic.ui.fragments.mainactivityfragments.ArtistViewFragment; import com.kabouzeid.materialmusic.ui.fragments.mainactivityfragments.ArtistViewFragment;
import com.kabouzeid.materialmusic.ui.fragments.mainactivityfragments.MainActivityFragment;
import com.kabouzeid.materialmusic.ui.fragments.mainactivityfragments.SongViewFragment; import com.kabouzeid.materialmusic.ui.fragments.mainactivityfragments.SongViewFragment;
import com.kabouzeid.materialmusic.util.ImageLoaderUtil; import com.kabouzeid.materialmusic.util.ImageLoaderUtil;
import com.kabouzeid.materialmusic.util.MusicUtil; import com.kabouzeid.materialmusic.util.MusicUtil;
@ -162,6 +163,7 @@ public class MainActivity extends AbsFabActivity
try { try {
super.enableViews(); super.enableViews();
toolbar.setEnabled(true); toolbar.setEnabled(true);
((MainActivityFragment)viewPagerAdapter.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);
} }
@ -171,7 +173,7 @@ public class MainActivity extends AbsFabActivity
public void disableViews() { public void disableViews() {
try { try {
super.disableViews(); super.disableViews();
toolbar.setEnabled(false); ((MainActivityFragment)viewPagerAdapter.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);
} }
@ -261,19 +263,7 @@ public class MainActivity extends AbsFabActivity
super.onBackPressed(); super.onBackPressed();
} }
private void disableFragmentViews() { public static class PlaceholderFragment extends MainActivityFragment {
}
private void enableFragmentViews() {
}
private boolean areFragmentViewsEnabled() {
return true;
}
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() { public PlaceholderFragment() {
} }
@ -286,13 +276,38 @@ public class MainActivity extends AbsFabActivity
text.setText("Coming soon!"); text.setText("Coming soon!");
return rootView; return rootView;
} }
@Override
public void search(String query) {
}
@Override
public void returnToNonSearch() {
}
@Override
public void enableViews() {
}
@Override
public void disableViews() {
}
@Override
public boolean areViewsEnabled() {
return false;
}
} }
private class MainActivityViewPagerAdapter extends FragmentPagerAdapter { private class MainActivityViewPagerAdapter extends FragmentPagerAdapter {
private String[] titles; private String[] titles;
private SparseArray<Fragment> pages; //TODO check if this must be static private SparseArray<MainActivityFragment> pages; //TODO check if this must be static
private Context context; private Context context;
public MainActivityViewPagerAdapter(Activity activity) { public MainActivityViewPagerAdapter(Activity activity) {

View file

@ -62,10 +62,8 @@ public class SearchActivity extends AbsBaseActivity {
playList.add((Song) item); playList.add((Song) item);
getApp().getMusicPlayerRemote().openQueue(playList, 0, true); getApp().getMusicPlayerRemote().openQueue(playList, 0, true);
} else if (item instanceof Album) { } else if (item instanceof Album) {
disableViews();
goToAlbum(((Album) item).id, new Pair[]{Pair.create(view.findViewById(R.id.image), getResources().getString(R.string.transition_album_cover))}); goToAlbum(((Album) item).id, new Pair[]{Pair.create(view.findViewById(R.id.image), getResources().getString(R.string.transition_album_cover))});
} else if (item instanceof Artist) { } else if (item instanceof Artist) {
disableViews();
goToArtist(((Artist) item).id, new Pair[]{Pair.create(view.findViewById(R.id.image), getResources().getString(R.string.transition_artist_image))}); goToArtist(((Artist) item).id, new Pair[]{Pair.create(view.findViewById(R.id.image), getResources().getString(R.string.transition_artist_image))});
} }
} }
@ -92,12 +90,6 @@ public class SearchActivity extends AbsBaseActivity {
return TAG; return TAG;
} }
@Override
protected void onResume() {
super.onResume();
enableViews();
}
@Override @Override
public void enableViews() { public void enableViews() {
super.enableViews(); super.enableViews();

View file

@ -105,28 +105,34 @@ public abstract class AbsBaseActivity extends ActionBarActivity implements KabVi
} }
public void goToArtist(int artistId, Pair[] sharedViews) { public void goToArtist(int artistId, Pair[] sharedViews) {
final Intent intent = new Intent(this, ArtistDetailActivity.class); if(areViewsEnabled()) {
intent.putExtra(AppKeys.E_ARTIST, artistId); disableViews();
if (sharedViews != null) { final Intent intent = new Intent(this, ArtistDetailActivity.class);
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this, intent.putExtra(AppKeys.E_ARTIST, artistId);
sharedViews if (sharedViews != null) {
); ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this,
ActivityCompat.startActivity(this, intent, optionsCompat.toBundle()); sharedViews
} else { );
startActivity(intent); ActivityCompat.startActivity(this, intent, optionsCompat.toBundle());
} else {
startActivity(intent);
}
} }
} }
public void goToAlbum(int albumId, Pair[] sharedViews) { public void goToAlbum(int albumId, Pair[] sharedViews) {
final Intent intent = new Intent(this, AlbumDetailActivity.class); if(areViewsEnabled()) {
intent.putExtra(AppKeys.E_ALBUM, albumId); disableViews();
if (sharedViews != null) { final Intent intent = new Intent(this, AlbumDetailActivity.class);
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this, intent.putExtra(AppKeys.E_ALBUM, albumId);
sharedViews if (sharedViews != null) {
); ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this,
ActivityCompat.startActivity(this, intent, optionsCompat.toBundle()); sharedViews
} else { );
startActivity(intent); ActivityCompat.startActivity(this, intent, optionsCompat.toBundle());
} else {
startActivity(intent);
}
} }
} }
} }

View file

@ -1,9 +1,6 @@
package com.kabouzeid.materialmusic.ui.fragments.mainactivityfragments; package com.kabouzeid.materialmusic.ui.fragments.mainactivityfragments;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.util.Pair; import android.support.v4.util.Pair;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -15,12 +12,8 @@ import com.kabouzeid.materialmusic.App;
import com.kabouzeid.materialmusic.R; import com.kabouzeid.materialmusic.R;
import com.kabouzeid.materialmusic.adapter.AlbumViewGridAdapter; import com.kabouzeid.materialmusic.adapter.AlbumViewGridAdapter;
import com.kabouzeid.materialmusic.comparator.AlbumAlphabeticComparator; import com.kabouzeid.materialmusic.comparator.AlbumAlphabeticComparator;
import com.kabouzeid.materialmusic.interfaces.KabViewsDisableAble;
import com.kabouzeid.materialmusic.loader.AlbumLoader; import com.kabouzeid.materialmusic.loader.AlbumLoader;
import com.kabouzeid.materialmusic.misc.AppKeys;
import com.kabouzeid.materialmusic.model.Album; import com.kabouzeid.materialmusic.model.Album;
import com.kabouzeid.materialmusic.ui.activities.AlbumDetailActivity;
import com.melnykov.fab.FloatingActionButton;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -34,8 +27,6 @@ public class AlbumViewFragment extends MainActivityFragment {
private App app; private App app;
private AbsListView absListView; private AbsListView absListView;
private View fragmentRootView; private View fragmentRootView;
private FloatingActionButton fab;
private boolean areViewsEnabled;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -58,32 +49,20 @@ public class AlbumViewFragment extends MainActivityFragment {
setUpViews(); setUpViews();
} }
@Override
public void onResume() {
super.onResume();
enableViews();
}
@Override @Override
public void enableViews() { public void enableViews() {
areViewsEnabled = true; super.enableViews();
absListView.setEnabled(true); absListView.setEnabled(true);
} }
@Override @Override
public void disableViews() { public void disableViews() {
areViewsEnabled = false; super.disableViews();
absListView.setEnabled(false); absListView.setEnabled(false);
} }
@Override
public boolean areViewsEnabled() {
return areViewsEnabled;
}
private void initViews() { private void initViews() {
absListView = (AbsListView) fragmentRootView.findViewById(R.id.absList); absListView = (AbsListView) fragmentRootView.findViewById(R.id.absList);
fab = (FloatingActionButton) getActivity().findViewById(R.id.fab);
} }
private void setUpViews() { private void setUpViews() {
@ -105,43 +84,17 @@ public class AlbumViewFragment extends MainActivityFragment {
Album album = (Album) parent.getItemAtPosition(position); Album album = (Album) parent.getItemAtPosition(position);
View albumArtView = view.findViewById(R.id.album_art); View albumArtView = view.findViewById(R.id.album_art);
openAlbumDetailsActivityIfPossible(album, albumArtView); openAlbumDetailsActivity(album, albumArtView);
} }
}); });
absListView.setPadding(0, getTopPadding(app), 0, getBottomPadding(app)); absListView.setPadding(0, getTopPadding(app), 0, getBottomPadding(app));
} }
@SuppressWarnings("unchecked") private void openAlbumDetailsActivity(Album album, View albumArtForTransition) {
private void openAlbumDetailsActivityIfPossible(Album album, View albumArtForTransition) { getMainActivity().goToAlbum(album.id, new Pair[]{
if (areParentActivitiesViewsEnabled()) { Pair.create(albumArtForTransition, getString(R.string.transition_album_cover))
disableViews(); });
disableParentActivitiesViews();
final Intent intent = new Intent(getActivity(), AlbumDetailActivity.class);
intent.putExtra(AppKeys.E_ALBUM, album.id);
final ActivityOptionsCompat activityOptions;
if (fab != null && albumArtForTransition != null) {
activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(),
Pair.create(albumArtForTransition, getString(R.string.transition_album_cover)),
Pair.create((View) fab, getString(R.string.transition_fab))
);
} else {
activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity());
}
ActivityCompat.startActivity(getActivity(), intent, activityOptions.toBundle());
}
}
private void disableParentActivitiesViews() {
if (getActivity() instanceof KabViewsDisableAble) {
((KabViewsDisableAble) getActivity()).disableViews();
}
}
private boolean areParentActivitiesViewsEnabled() {
return !(getActivity() instanceof KabViewsDisableAble) || ((KabViewsDisableAble) getActivity()).areViewsEnabled();
} }
@Override @Override

View file

@ -56,29 +56,19 @@ public class ArtistViewFragment extends MainActivityFragment {
setUpViews(); setUpViews();
} }
@Override
public void onResume() {
super.onResume();
enableViews();
}
@Override @Override
public void enableViews() { public void enableViews() {
areViewsEnabled = true; super.enableViews();
absListView.setEnabled(true); absListView.setEnabled(true);
} }
@Override @Override
public void disableViews() { public void disableViews() {
areViewsEnabled = false; super.disableViews();
absListView.setEnabled(false); absListView.setEnabled(false);
} }
@Override
public boolean areViewsEnabled() {
return areViewsEnabled;
}
private void initViews() { private void initViews() {
absListView = (AbsListView) fragmentRootView.findViewById(R.id.absList); absListView = (AbsListView) fragmentRootView.findViewById(R.id.absList);
} }
@ -132,14 +122,4 @@ public class ArtistViewFragment extends MainActivityFragment {
public void returnToNonSearch() { public void returnToNonSearch() {
setUpAbsListView(); setUpAbsListView();
} }
private void disableParentActivityViews() {
if (getActivity() instanceof KabViewsDisableAble) {
((KabViewsDisableAble) getActivity()).disableViews();
}
}
private boolean areParentActivityViewsEnabled() {
return !(getActivity() instanceof KabViewsDisableAble) || ((KabViewsDisableAble) getActivity()).areViewsEnabled();
}
} }

View file

@ -7,12 +7,15 @@ import com.kabouzeid.materialmusic.App;
import com.kabouzeid.materialmusic.R; import com.kabouzeid.materialmusic.R;
import com.kabouzeid.materialmusic.interfaces.KabSearchAbleFragment; import com.kabouzeid.materialmusic.interfaces.KabSearchAbleFragment;
import com.kabouzeid.materialmusic.interfaces.KabViewsDisableAble; import com.kabouzeid.materialmusic.interfaces.KabViewsDisableAble;
import com.kabouzeid.materialmusic.ui.activities.MainActivity;
import com.kabouzeid.materialmusic.util.Util; import com.kabouzeid.materialmusic.util.Util;
/** /**
* Created by karim on 27.02.15. * Created by karim on 27.02.15.
*/ */
public abstract class MainActivityFragment extends Fragment implements KabViewsDisableAble, KabSearchAbleFragment { public abstract class MainActivityFragment extends Fragment implements KabViewsDisableAble, KabSearchAbleFragment {
private boolean areViewsEnabled;
protected int getTopPadding(App app) { protected int getTopPadding(App app) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (app.isInPortraitMode() || app.isTablet()) { if (app.isInPortraitMode() || app.isTablet()) {
@ -31,4 +34,29 @@ public abstract class MainActivityFragment extends Fragment implements KabViewsD
} }
return 0; return 0;
} }
@Override
public void enableViews() {
areViewsEnabled = true;
}
@Override
public void disableViews() {
areViewsEnabled = false;
}
@Override
public boolean areViewsEnabled() {
return areViewsEnabled;
}
@Override
public void onResume() {
super.onResume();
enableViews();
}
protected MainActivity getMainActivity() {
return (MainActivity) getActivity();
}
} }

View file

@ -97,16 +97,13 @@ public class SongViewFragment extends MainActivityFragment {
@Override @Override
public void enableViews() { public void enableViews() {
super.enableViews();
absListView.setEnabled(true);
} }
@Override @Override
public void disableViews() { public void disableViews() {
super.disableViews();
} absListView.setEnabled(false);
@Override
public boolean areViewsEnabled() {
return false;
} }
} }