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.mainactivityfragments.AlbumViewFragment;
|
||||
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.util.ImageLoaderUtil;
|
||||
import com.kabouzeid.materialmusic.util.MusicUtil;
|
||||
|
|
@ -162,6 +163,7 @@ public class MainActivity extends AbsFabActivity
|
|||
try {
|
||||
super.enableViews();
|
||||
toolbar.setEnabled(true);
|
||||
((MainActivityFragment)viewPagerAdapter.getItem(viewPager.getCurrentItem())).enableViews();
|
||||
} catch (NullPointerException e) {
|
||||
Log.e(TAG, "wasn't able to enable the views", e);
|
||||
}
|
||||
|
|
@ -171,7 +173,7 @@ public class MainActivity extends AbsFabActivity
|
|||
public void disableViews() {
|
||||
try {
|
||||
super.disableViews();
|
||||
toolbar.setEnabled(false);
|
||||
((MainActivityFragment)viewPagerAdapter.getItem(viewPager.getCurrentItem())).disableViews();
|
||||
} catch (NullPointerException e) {
|
||||
Log.e(TAG, "wasn't able to disable the views", e);
|
||||
}
|
||||
|
|
@ -261,19 +263,7 @@ public class MainActivity extends AbsFabActivity
|
|||
super.onBackPressed();
|
||||
}
|
||||
|
||||
private void disableFragmentViews() {
|
||||
|
||||
}
|
||||
|
||||
private void enableFragmentViews() {
|
||||
|
||||
}
|
||||
|
||||
private boolean areFragmentViewsEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static class PlaceholderFragment extends Fragment {
|
||||
public static class PlaceholderFragment extends MainActivityFragment {
|
||||
|
||||
public PlaceholderFragment() {
|
||||
}
|
||||
|
|
@ -286,13 +276,38 @@ public class MainActivity extends AbsFabActivity
|
|||
text.setText("Coming soon!");
|
||||
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 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;
|
||||
|
||||
public MainActivityViewPagerAdapter(Activity activity) {
|
||||
|
|
|
|||
|
|
@ -62,10 +62,8 @@ public class SearchActivity extends AbsBaseActivity {
|
|||
playList.add((Song) item);
|
||||
getApp().getMusicPlayerRemote().openQueue(playList, 0, true);
|
||||
} 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))});
|
||||
} 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))});
|
||||
}
|
||||
}
|
||||
|
|
@ -92,12 +90,6 @@ public class SearchActivity extends AbsBaseActivity {
|
|||
return TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
enableViews();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enableViews() {
|
||||
super.enableViews();
|
||||
|
|
|
|||
|
|
@ -105,28 +105,34 @@ public abstract class AbsBaseActivity extends ActionBarActivity implements KabVi
|
|||
}
|
||||
|
||||
public void goToArtist(int artistId, Pair[] sharedViews) {
|
||||
final Intent intent = new Intent(this, ArtistDetailActivity.class);
|
||||
intent.putExtra(AppKeys.E_ARTIST, artistId);
|
||||
if (sharedViews != null) {
|
||||
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this,
|
||||
sharedViews
|
||||
);
|
||||
ActivityCompat.startActivity(this, intent, optionsCompat.toBundle());
|
||||
} else {
|
||||
startActivity(intent);
|
||||
if(areViewsEnabled()) {
|
||||
disableViews();
|
||||
final Intent intent = new Intent(this, ArtistDetailActivity.class);
|
||||
intent.putExtra(AppKeys.E_ARTIST, artistId);
|
||||
if (sharedViews != null) {
|
||||
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this,
|
||||
sharedViews
|
||||
);
|
||||
ActivityCompat.startActivity(this, intent, optionsCompat.toBundle());
|
||||
} else {
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void goToAlbum(int albumId, Pair[] sharedViews) {
|
||||
final Intent intent = new Intent(this, AlbumDetailActivity.class);
|
||||
intent.putExtra(AppKeys.E_ALBUM, albumId);
|
||||
if (sharedViews != null) {
|
||||
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this,
|
||||
sharedViews
|
||||
);
|
||||
ActivityCompat.startActivity(this, intent, optionsCompat.toBundle());
|
||||
} else {
|
||||
startActivity(intent);
|
||||
if(areViewsEnabled()) {
|
||||
disableViews();
|
||||
final Intent intent = new Intent(this, AlbumDetailActivity.class);
|
||||
intent.putExtra(AppKeys.E_ALBUM, albumId);
|
||||
if (sharedViews != null) {
|
||||
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this,
|
||||
sharedViews
|
||||
);
|
||||
ActivityCompat.startActivity(this, intent, optionsCompat.toBundle());
|
||||
} else {
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
package com.kabouzeid.materialmusic.ui.fragments.mainactivityfragments;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.ActivityOptionsCompat;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
|
@ -15,12 +12,8 @@ import com.kabouzeid.materialmusic.App;
|
|||
import com.kabouzeid.materialmusic.R;
|
||||
import com.kabouzeid.materialmusic.adapter.AlbumViewGridAdapter;
|
||||
import com.kabouzeid.materialmusic.comparator.AlbumAlphabeticComparator;
|
||||
import com.kabouzeid.materialmusic.interfaces.KabViewsDisableAble;
|
||||
import com.kabouzeid.materialmusic.loader.AlbumLoader;
|
||||
import com.kabouzeid.materialmusic.misc.AppKeys;
|
||||
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.List;
|
||||
|
|
@ -34,8 +27,6 @@ public class AlbumViewFragment extends MainActivityFragment {
|
|||
private App app;
|
||||
private AbsListView absListView;
|
||||
private View fragmentRootView;
|
||||
private FloatingActionButton fab;
|
||||
private boolean areViewsEnabled;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
|
|
@ -58,32 +49,20 @@ public class AlbumViewFragment extends MainActivityFragment {
|
|||
setUpViews();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
enableViews();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enableViews() {
|
||||
areViewsEnabled = true;
|
||||
super.enableViews();
|
||||
absListView.setEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disableViews() {
|
||||
areViewsEnabled = false;
|
||||
super.disableViews();
|
||||
absListView.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areViewsEnabled() {
|
||||
return areViewsEnabled;
|
||||
}
|
||||
|
||||
private void initViews() {
|
||||
absListView = (AbsListView) fragmentRootView.findViewById(R.id.absList);
|
||||
fab = (FloatingActionButton) getActivity().findViewById(R.id.fab);
|
||||
}
|
||||
|
||||
private void setUpViews() {
|
||||
|
|
@ -105,43 +84,17 @@ public class AlbumViewFragment extends MainActivityFragment {
|
|||
Album album = (Album) parent.getItemAtPosition(position);
|
||||
View albumArtView = view.findViewById(R.id.album_art);
|
||||
|
||||
openAlbumDetailsActivityIfPossible(album, albumArtView);
|
||||
openAlbumDetailsActivity(album, albumArtView);
|
||||
}
|
||||
});
|
||||
|
||||
absListView.setPadding(0, getTopPadding(app), 0, getBottomPadding(app));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void openAlbumDetailsActivityIfPossible(Album album, View albumArtForTransition) {
|
||||
if (areParentActivitiesViewsEnabled()) {
|
||||
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();
|
||||
private void openAlbumDetailsActivity(Album album, View albumArtForTransition) {
|
||||
getMainActivity().goToAlbum(album.id, new Pair[]{
|
||||
Pair.create(albumArtForTransition, getString(R.string.transition_album_cover))
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -56,29 +56,19 @@ public class ArtistViewFragment extends MainActivityFragment {
|
|||
setUpViews();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
enableViews();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enableViews() {
|
||||
areViewsEnabled = true;
|
||||
super.enableViews();
|
||||
absListView.setEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disableViews() {
|
||||
areViewsEnabled = false;
|
||||
super.disableViews();
|
||||
absListView.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areViewsEnabled() {
|
||||
return areViewsEnabled;
|
||||
}
|
||||
|
||||
private void initViews() {
|
||||
absListView = (AbsListView) fragmentRootView.findViewById(R.id.absList);
|
||||
}
|
||||
|
|
@ -132,14 +122,4 @@ public class ArtistViewFragment extends MainActivityFragment {
|
|||
public void returnToNonSearch() {
|
||||
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.interfaces.KabSearchAbleFragment;
|
||||
import com.kabouzeid.materialmusic.interfaces.KabViewsDisableAble;
|
||||
import com.kabouzeid.materialmusic.ui.activities.MainActivity;
|
||||
import com.kabouzeid.materialmusic.util.Util;
|
||||
|
||||
/**
|
||||
* Created by karim on 27.02.15.
|
||||
*/
|
||||
public abstract class MainActivityFragment extends Fragment implements KabViewsDisableAble, KabSearchAbleFragment {
|
||||
private boolean areViewsEnabled;
|
||||
|
||||
protected int getTopPadding(App app) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
if (app.isInPortraitMode() || app.isTablet()) {
|
||||
|
|
@ -31,4 +34,29 @@ public abstract class MainActivityFragment extends Fragment implements KabViewsD
|
|||
}
|
||||
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
|
||||
public void enableViews() {
|
||||
|
||||
super.enableViews();
|
||||
absListView.setEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disableViews() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areViewsEnabled() {
|
||||
return false;
|
||||
super.disableViews();
|
||||
absListView.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue