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.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) {

View file

@ -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();

View file

@ -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);
}
}
}
}

View file

@ -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

View file

@ -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();
}
}

View file

@ -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();
}
}

View file

@ -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);
}
}