More transition bugs fixed
This commit is contained in:
parent
59ca3a8c8f
commit
85f4f91243
7 changed files with 95 additions and 124 deletions
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue