diff --git a/app/src/main/java/com/dkanada/gramophone/shortcuts/AppShortcutLauncherActivity.java b/app/src/main/java/com/dkanada/gramophone/shortcuts/AppShortcutLauncherActivity.java index 7ee13d1b..fb843df0 100644 --- a/app/src/main/java/com/dkanada/gramophone/shortcuts/AppShortcutLauncherActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/shortcuts/AppShortcutLauncherActivity.java @@ -27,7 +27,7 @@ public class AppShortcutLauncherActivity extends Activity { // Set shortcutType from the intent extras Bundle extras = getIntent().getExtras(); if (extras != null) { - //noinspection WrongConstant + // noinspection WrongConstant shortcutType = extras.getInt(KEY_SHORTCUT_TYPE, SHORTCUT_TYPE_NONE); } diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/AlbumDetailActivity.java index d3ca0b92..ce961a00 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/AlbumDetailActivity.java @@ -6,17 +6,15 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import androidx.appcompat.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; import com.afollestad.materialcab.MaterialCab; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; +import com.dkanada.gramophone.databinding.ActivityAlbumDetailBinding; import com.google.android.material.appbar.AppBarLayout; import com.kabouzeid.appthemehelper.util.ColorUtil; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; @@ -43,54 +41,22 @@ import org.jellyfin.apiclient.model.querying.ItemQuery; import java.util.List; -import butterknife.BindView; -import butterknife.ButterKnife; - public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder, AppBarLayout.OnOffsetChangedListener { public static final String EXTRA_ALBUM = "extra_album"; - private Album album; - - @BindView(R.id.app_bar_layout) - AppBarLayout appBarLayout; - @BindView(R.id.list) - RecyclerView recyclerView; - @BindView(R.id.image) - ImageView albumArtImageView; - @BindView(R.id.toolbar) - Toolbar toolbar; - @BindView(R.id.header) - View headerView; - - @BindView(R.id.artist_icon) - ImageView artistIconImageView; - @BindView(R.id.duration_icon) - ImageView durationIconImageView; - @BindView(R.id.song_count_icon) - ImageView songCountIconImageView; - @BindView(R.id.album_year_icon) - ImageView albumYearIconImageView; - @BindView(R.id.artist_text) - TextView artistTextView; - @BindView(R.id.duration_text) - TextView durationTextView; - @BindView(R.id.song_count_text) - TextView songCountTextView; - @BindView(R.id.album_year_text) - TextView albumYearTextView; - - private AlbumSongAdapter adapter; + private ActivityAlbumDetailBinding binding; private MaterialCab cab; private int headerViewHeight; private int toolbarColor; + private Album album; + private AlbumSongAdapter adapter; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ButterKnife.bind(this); - setDrawUnderStatusbar(); setUpObservableListViewParams(); setUpToolbar(); @@ -116,12 +82,14 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements @Override public void onOffsetChanged (AppBarLayout appBarLayout, int verticalOffset) { float headerAlpha = Math.max(0, Math.min(1, 1 + (2 * (float) verticalOffset / headerViewHeight))); - headerView.setAlpha(headerAlpha); + binding.header.setAlpha(headerAlpha); } @Override protected View createContentView() { - return wrapSlidingMusicPanel(R.layout.activity_album_detail); + binding = ActivityAlbumDetailBinding.inflate(getLayoutInflater()); + + return wrapSlidingMusicPanel(binding.getRoot()); } private void setUpObservableListViewParams() { @@ -131,7 +99,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private void setUpViews() { setUpRecyclerView(); setUpSongsAdapter(); - artistTextView.setOnClickListener(v -> { + binding.artistText.setOnClickListener(v -> { if (album != null) { NavigationUtil.goToArtist(AlbumDetailActivity.this, new Artist(album)); } @@ -145,7 +113,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements .from(Glide.with(this), primary) .generatePalette(this).build() .dontAnimate() - .into(new CustomPaletteTarget(albumArtImageView) { + .into(new CustomPaletteTarget(binding.image) { @Override public void onColorReady(int color) { setColors(color); @@ -155,26 +123,26 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private void setColors(int color) { toolbarColor = color; - appBarLayout.setBackgroundColor(color); + binding.appBarLayout.setBackgroundColor(color); setNavigationbarColor(color); setTaskDescriptionColor(color); - toolbar.setBackgroundColor(color); + binding.toolbar.setBackgroundColor(color); // needed to auto readjust the toolbar content color - setSupportActionBar(toolbar); + setSupportActionBar(binding.toolbar); setStatusbarColor(color); int secondaryTextColor = MaterialValueHelper.getSecondaryTextColor(this, ColorUtil.isColorLight(color)); - artistIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); - durationIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); - songCountIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); - albumYearIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + binding.artistIcon.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + binding.durationIcon.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + binding.songCountIcon.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + binding.albumYearIcon.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); - artistTextView.setTextColor(MaterialValueHelper.getPrimaryTextColor(this, ColorUtil.isColorLight(color))); - durationTextView.setTextColor(secondaryTextColor); - songCountTextView.setTextColor(secondaryTextColor); - albumYearTextView.setTextColor(secondaryTextColor); + binding.artistText.setTextColor(MaterialValueHelper.getPrimaryTextColor(this, ColorUtil.isColorLight(color))); + binding.durationText.setTextColor(secondaryTextColor); + binding.songCountText.setTextColor(secondaryTextColor); + binding.albumYearText.setTextColor(secondaryTextColor); } @Override @@ -183,20 +151,20 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements } private void setUpRecyclerView() { - appBarLayout.addOnOffsetChangedListener(this); + binding.appBarLayout.addOnOffsetChangedListener(this); } private void setUpToolbar() { - setSupportActionBar(toolbar); - //noinspection ConstantConditions + setSupportActionBar(binding.toolbar); + // noinspection ConstantConditions getSupportActionBar().setTitle(null); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } private void setUpSongsAdapter() { adapter = new AlbumSongAdapter(this, getAlbum().songs, R.layout.item_list, false, this); - recyclerView.setLayoutManager(new GridLayoutManager(this, 1)); - recyclerView.setAdapter(adapter); + binding.list.setLayoutManager(new GridLayoutManager(this, 1)); + binding.list.setAdapter(adapter); adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { @Override public void onChanged() { @@ -275,7 +243,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements if (cab != null && cab.isActive()) { cab.finish(); } else { - recyclerView.stopScroll(); + binding.list.stopScroll(); super.onBackPressed(); } } @@ -290,10 +258,10 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements this.album = album; getSupportActionBar().setTitle(album.title); - artistTextView.setText(album.artistName); - songCountTextView.setText(MusicUtil.getSongCountString(this, album.songs.size())); - durationTextView.setText(MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(this, album.songs))); - albumYearTextView.setText(MusicUtil.getYearString(album.year)); + binding.artistText.setText(album.artistName); + binding.songCountText.setText(MusicUtil.getSongCountString(this, album.songs.size())); + binding.durationText.setText(MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(this, album.songs))); + binding.albumYearText.setText(MusicUtil.getYearString(album.year)); if (album.songs.size() != 0) adapter.swapDataSet(album.songs); } diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/ArtistDetailActivity.java index f68423c4..34a4cd5f 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/ArtistDetailActivity.java @@ -5,16 +5,11 @@ import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.appcompat.widget.Toolbar; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import butterknife.BindView; -import butterknife.ButterKnife; import java.util.List; @@ -22,6 +17,7 @@ import com.afollestad.materialcab.MaterialCab; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; import com.dkanada.gramophone.adapter.song.SongAdapter; +import com.dkanada.gramophone.databinding.ActivityArtistDetailBinding; import com.google.android.material.appbar.AppBarLayout; import com.kabouzeid.appthemehelper.util.ColorUtil; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; @@ -49,31 +45,7 @@ import org.jellyfin.apiclient.model.querying.ItemQuery; public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder, AppBarLayout.OnOffsetChangedListener { public static final String EXTRA_ARTIST = "extra_artist"; - @BindView(R.id.app_bar_layout) - AppBarLayout appBarLayout; - @BindView(R.id.albums) - RecyclerView albumRecyclerView; - @BindView(R.id.songs) - RecyclerView songRecyclerView; - @BindView(R.id.image) - ImageView artistImage; - @BindView(R.id.toolbar) - Toolbar toolbar; - @BindView(R.id.header) - View headerView; - - @BindView(R.id.duration_icon) - ImageView durationIconImageView; - @BindView(R.id.song_count_icon) - ImageView songCountIconImageView; - @BindView(R.id.album_count_icon) - ImageView albumCountIconImageView; - @BindView(R.id.duration_text) - TextView durationTextView; - @BindView(R.id.song_count_text) - TextView songCountTextView; - @BindView(R.id.album_count_text) - TextView albumCountTextView; + private ActivityArtistDetailBinding binding; private MaterialCab cab; private int headerViewHeight; @@ -87,8 +59,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ButterKnife.bind(this); - setDrawUnderStatusbar(); setUpObservableListViewParams(); setUpToolbar(); @@ -122,14 +92,16 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement } @Override - public void onOffsetChanged (AppBarLayout appBarLayout, int verticalOffset) { + public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { float headerAlpha = Math.max(0, Math.min(1, 1 + (2 * (float) verticalOffset / headerViewHeight))); - headerView.setAlpha(headerAlpha); + binding.header.setAlpha(headerAlpha); } @Override protected View createContentView() { - return wrapSlidingMusicPanel(R.layout.activity_artist_detail); + binding = ActivityArtistDetailBinding.inflate(getLayoutInflater()); + + return wrapSlidingMusicPanel(binding.getRoot()); } private boolean usePalette; @@ -145,18 +117,18 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement } private void setUpSongListView() { - appBarLayout.addOnOffsetChangedListener(this); + binding.appBarLayout.addOnOffsetChangedListener(this); songAdapter = new SongAdapter(this, getArtist().songs, R.layout.item_list, false, this); - songRecyclerView.setLayoutManager(new GridLayoutManager(this, 1)); - songRecyclerView.setAdapter(songAdapter); + binding.songs.setLayoutManager(new GridLayoutManager(this, 1)); + binding.songs.setAdapter(songAdapter); } private void setUpAlbumRecyclerView() { - albumRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); + binding.albums.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); albumAdapter = new HorizontalAlbumAdapter(this, getArtist().albums, usePalette, this); - albumRecyclerView.setAdapter(albumAdapter); + binding.albums.setAdapter(albumAdapter); albumAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { @Override public void onChanged() { @@ -177,7 +149,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement .from(Glide.with(this), primary) .generatePalette(this).build() .dontAnimate() - .into(new CustomPaletteTarget(artistImage) { + .into(new CustomPaletteTarget(binding.image) { @Override public void onColorReady(int color) { setColors(color); @@ -192,28 +164,28 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private void setColors(int color) { toolbarColor = color; - appBarLayout.setBackgroundColor(color); + binding.appBarLayout.setBackgroundColor(color); setNavigationbarColor(color); setTaskDescriptionColor(color); - toolbar.setBackgroundColor(color); + binding.toolbar.setBackgroundColor(color); // needed to auto readjust the toolbar content color - setSupportActionBar(toolbar); + setSupportActionBar(binding.toolbar); setStatusbarColor(color); int secondaryTextColor = MaterialValueHelper.getSecondaryTextColor(this, ColorUtil.isColorLight(color)); - durationIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); - songCountIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); - albumCountIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + binding.durationIcon.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + binding.songCountIcon.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + binding.albumCountIcon.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); - durationTextView.setTextColor(secondaryTextColor); - songCountTextView.setTextColor(secondaryTextColor); - albumCountTextView.setTextColor(secondaryTextColor); + binding.durationText.setTextColor(secondaryTextColor); + binding.songCountText.setTextColor(secondaryTextColor); + binding.albumCountText.setTextColor(secondaryTextColor); } private void setUpToolbar() { - setSupportActionBar(toolbar); + setSupportActionBar(binding.toolbar); // noinspection ConstantConditions getSupportActionBar().setTitle(null); getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -290,7 +262,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement if (cab != null && cab.isActive()) { cab.finish(); } else { - albumRecyclerView.stopScroll(); + binding.albums.stopScroll(); super.onBackPressed(); } } @@ -305,9 +277,9 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement this.artist = artist; getSupportActionBar().setTitle(artist.name); - songCountTextView.setText(MusicUtil.getSongCountString(this, artist.songs.size())); - albumCountTextView.setText(MusicUtil.getAlbumCountString(this, artist.albums.size())); - durationTextView.setText(MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(this, artist.songs))); + binding.songCountText.setText(MusicUtil.getSongCountString(this, artist.songs.size())); + binding.albumCountText.setText(MusicUtil.getAlbumCountString(this, artist.albums.size())); + binding.durationText.setText(MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(this, artist.songs))); if (artist.songs.size() != 0) songAdapter.swapDataSet(artist.songs); if (artist.albums.size() != 0) albumAdapter.swapDataSet(artist.albums); diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/GenreDetailActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/GenreDetailActivity.java index 78d40064..fe33d769 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/GenreDetailActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/GenreDetailActivity.java @@ -4,13 +4,12 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import androidx.appcompat.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.widget.TextView; import com.afollestad.materialcab.MaterialCab; +import com.dkanada.gramophone.databinding.ActivityGenreDetailBinding; import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils; import com.kabouzeid.appthemehelper.ThemeStore; import com.dkanada.gramophone.R; @@ -31,18 +30,10 @@ import org.jellyfin.apiclient.model.querying.ItemQuery; import java.util.ArrayList; import java.util.List; -import butterknife.BindView; -import butterknife.ButterKnife; - public class GenreDetailActivity extends AbsSlidingMusicPanelActivity implements CabHolder { public static final String EXTRA_GENRE = "extra_genre"; - @BindView(R.id.recycler_view) - RecyclerView recyclerView; - @BindView(R.id.toolbar) - Toolbar toolbar; - @BindView(android.R.id.empty) - TextView empty; + private ActivityGenreDetailBinding binding; private Genre genre; @@ -55,10 +46,9 @@ public class GenreDetailActivity extends AbsSlidingMusicPanelActivity implements protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ButterKnife.bind(this); - setDrawUnderStatusbar(); setStatusbarColorAuto(); + setNavigationbarColorAuto(); setTaskDescriptionColorAuto(); @@ -80,15 +70,17 @@ public class GenreDetailActivity extends AbsSlidingMusicPanelActivity implements @Override protected View createContentView() { - return wrapSlidingMusicPanel(R.layout.activity_genre_detail); + binding = ActivityGenreDetailBinding.inflate(getLayoutInflater()); + + return wrapSlidingMusicPanel(binding.getRoot()); } private void setUpRecyclerView() { - ViewUtil.setUpFastScrollRecyclerViewColor(this, ((FastScrollRecyclerView) recyclerView), ThemeStore.accentColor(this)); - recyclerView.setLayoutManager(new LinearLayoutManager(this)); + ViewUtil.setUpFastScrollRecyclerViewColor(this, ((FastScrollRecyclerView) binding.recyclerView), ThemeStore.accentColor(this)); + binding.recyclerView.setLayoutManager(new LinearLayoutManager(this)); adapter = new SongAdapter(this, new ArrayList<>(), R.layout.item_list, false, this); - recyclerView.setAdapter(adapter); + binding.recyclerView.setAdapter(adapter); adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { @Override @@ -100,9 +92,9 @@ public class GenreDetailActivity extends AbsSlidingMusicPanelActivity implements } private void setUpToolBar() { - toolbar.setBackgroundColor(ThemeStore.primaryColor(this)); - setSupportActionBar(toolbar); - //noinspection ConstantConditions + binding.toolbar.setBackgroundColor(ThemeStore.primaryColor(this)); + setSupportActionBar(binding.toolbar); + // noinspection ConstantConditions getSupportActionBar().setTitle(genre.name); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @@ -145,21 +137,18 @@ public class GenreDetailActivity extends AbsSlidingMusicPanelActivity implements public void onBackPressed() { if (cab != null && cab.isActive()) cab.finish(); else { - recyclerView.stopScroll(); + binding.recyclerView.stopScroll(); super.onBackPressed(); } } private void checkIsEmpty() { - empty.setVisibility(adapter.getItemCount() == 0 ? View.VISIBLE : View.GONE); + binding.empty.setVisibility(adapter.getItemCount() == 0 ? View.VISIBLE : View.GONE); } @Override protected void onDestroy() { - if (recyclerView != null) { - recyclerView.setAdapter(null); - recyclerView = null; - } + binding.recyclerView.setAdapter(null); if (wrappedAdapter != null) { WrapperAdapterUtils.releaseAll(wrappedAdapter); diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/MainActivity.java index 788512b8..5267381f 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/MainActivity.java @@ -7,6 +7,7 @@ import android.os.Handler; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.dkanada.gramophone.databinding.ActivityMainContentBinding; import com.dkanada.gramophone.databinding.ActivityMainDrawerLayoutBinding; import com.dkanada.gramophone.dialogs.ConfirmLogoutDialog; import androidx.fragment.app.Fragment; @@ -42,6 +43,7 @@ import java.util.List; public class MainActivity extends AbsSlidingMusicPanelActivity { private ActivityMainDrawerLayoutBinding binding; + private ActivityMainContentBinding contentBinding; @Nullable MainActivityFragmentCallbacks currentFragment; @@ -109,9 +111,10 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { @Override protected View createContentView() { binding = ActivityMainDrawerLayoutBinding.inflate(getLayoutInflater()); + contentBinding = ActivityMainContentBinding.inflate(getLayoutInflater()); - ViewGroup drawerContent = binding.getRoot().findViewById(R.id.drawer_content_container); - drawerContent.addView(wrapSlidingMusicPanel(R.layout.activity_main_content)); + ViewGroup drawerContent = binding.drawerContentContainer; + drawerContent.addView(wrapSlidingMusicPanel(contentBinding.getRoot())); return binding.getRoot(); } diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/PlaylistDetailActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/PlaylistDetailActivity.java index 691228ea..b5d1cf6c 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/PlaylistDetailActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/PlaylistDetailActivity.java @@ -4,14 +4,13 @@ import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.appcompat.widget.Toolbar; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.afollestad.materialcab.MaterialCab; +import com.dkanada.gramophone.databinding.ActivityPlaylistDetailBinding; import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator; import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator; import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager; @@ -38,18 +37,10 @@ import org.jellyfin.apiclient.model.playlists.PlaylistItemQuery; import java.util.ArrayList; import java.util.List; -import butterknife.BindView; -import butterknife.ButterKnife; - public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity implements CabHolder { public static String EXTRA_PLAYLIST = "extra_playlist"; - @BindView(R.id.recycler_view) - RecyclerView recyclerView; - @BindView(R.id.toolbar) - Toolbar toolbar; - @BindView(android.R.id.empty) - TextView empty; + private ActivityPlaylistDetailBinding binding; private Playlist playlist; @@ -63,8 +54,6 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ButterKnife.bind(this); - setDrawUnderStatusbar(); setStatusbarColorAuto(); @@ -89,12 +78,14 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme @Override protected View createContentView() { - return wrapSlidingMusicPanel(R.layout.activity_playlist_detail); + binding = ActivityPlaylistDetailBinding.inflate(getLayoutInflater()); + + return wrapSlidingMusicPanel(binding.getRoot()); } private void setUpRecyclerView() { - ViewUtil.setUpFastScrollRecyclerViewColor(this, ((FastScrollRecyclerView) recyclerView), ThemeStore.accentColor(this)); - recyclerView.setLayoutManager(new LinearLayoutManager(this)); + ViewUtil.setUpFastScrollRecyclerViewColor(this, ((FastScrollRecyclerView) binding.recyclerView), ThemeStore.accentColor(this)); + binding.recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerViewDragDropManager = new RecyclerViewDragDropManager(); final GeneralItemAnimator animator = new RefactoredDefaultItemAnimator(); @@ -107,10 +98,10 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme wrappedAdapter = recyclerViewDragDropManager.createWrappedAdapter(adapter); - recyclerView.setAdapter(wrappedAdapter); - recyclerView.setItemAnimator(animator); + binding.recyclerView.setAdapter(wrappedAdapter); + binding.recyclerView.setItemAnimator(animator); - recyclerViewDragDropManager.attachRecyclerView(recyclerView); + recyclerViewDragDropManager.attachRecyclerView(binding.recyclerView); adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { @Override @@ -122,15 +113,15 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme } private void setUpToolbar() { - toolbar.setBackgroundColor(ThemeStore.primaryColor(this)); - setSupportActionBar(toolbar); - //noinspection ConstantConditions + binding.toolbar.setBackgroundColor(ThemeStore.primaryColor(this)); + setSupportActionBar(binding.toolbar); + // noinspection ConstantConditions getSupportActionBar().setDisplayHomeAsUpEnabled(true); setToolbarTitle(playlist.name); } private void setToolbarTitle(String title) { - //noinspection ConstantConditions + // noinspection ConstantConditions getSupportActionBar().setTitle(title); } @@ -173,13 +164,13 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme if (cab != null && cab.isActive()) { cab.finish(); } else { - recyclerView.stopScroll(); + binding.recyclerView.stopScroll(); super.onBackPressed(); } } private void checkIsEmpty() { - empty.setVisibility(adapter.getItemCount() == 0 ? View.VISIBLE : View.GONE); + binding.empty.setVisibility(adapter.getItemCount() == 0 ? View.VISIBLE : View.GONE); } @Override @@ -198,11 +189,8 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme recyclerViewDragDropManager = null; } - if (recyclerView != null) { - recyclerView.setItemAnimator(null); - recyclerView.setAdapter(null); - recyclerView = null; - } + binding.recyclerView.setItemAnimator(null); + binding.recyclerView.setAdapter(null); if (wrappedAdapter != null) { WrapperAdapterUtils.releaseAll(wrappedAdapter); diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java index d3c3e682..ac6374e9 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java @@ -49,7 +49,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia binding.toolbar.setBackgroundColor(ThemeStore.primaryColor(this)); setSupportActionBar(binding.toolbar); - //noinspection ConstantConditions + // noinspection ConstantConditions getSupportActionBar().setDisplayHomeAsUpEnabled(true); if (savedInstanceState == null) { diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java index 9a7e2b42..ec9cd36e 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java @@ -2,13 +2,11 @@ package com.dkanada.gramophone.ui.activities.base; import android.animation.ArgbEvaluator; import android.animation.ValueAnimator; -import android.annotation.SuppressLint; import android.content.Intent; import android.os.Build; import android.os.Bundle; import androidx.annotation.ColorInt; import androidx.annotation.FloatRange; -import androidx.annotation.LayoutRes; import androidx.fragment.app.Fragment; import android.view.View; import android.view.ViewGroup; @@ -46,9 +44,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(createContentView()); - binding = SlidingMusicPanelLayoutBinding.bind(findViewById(R.id.sliding_layout)); // TODO use a fragment for the splash activity if (App.getApiClient() == null) { @@ -122,6 +118,8 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi @Override public void onServiceConnected() { super.onServiceConnected(); + + // don't call hideBottomBar(true) here as it causes a bug with the SlidingUpPanelLayout if (!MusicPlayerRemote.getPlayingQueue().isEmpty()) { binding.slidingLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override @@ -130,7 +128,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi hideBottomBar(false); } }); - } // don't call hideBottomBar(true) here as it causes a bug with the SlidingUpPanelLayout + } } @Override @@ -215,12 +213,13 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi } } - protected View wrapSlidingMusicPanel(@LayoutRes int resId) { - @SuppressLint("InflateParams") - View slidingMusicPanelLayout = getLayoutInflater().inflate(R.layout.sliding_music_panel_layout, null); - ViewGroup contentContainer = slidingMusicPanelLayout.findViewById(R.id.content_container); - getLayoutInflater().inflate(resId, contentContainer); - return slidingMusicPanelLayout; + protected View wrapSlidingMusicPanel(View view) { + binding = SlidingMusicPanelLayoutBinding.inflate(getLayoutInflater()); + + ViewGroup contentContainer = binding.contentContainer; + contentContainer.addView(view); + + return binding.getRoot(); } @Override diff --git a/app/src/main/java/com/dkanada/gramophone/ui/fragments/player/card/CardPlayerFragment.java b/app/src/main/java/com/dkanada/gramophone/ui/fragments/player/card/CardPlayerFragment.java index 45316bf0..5e643e93 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/fragments/player/card/CardPlayerFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/fragments/player/card/CardPlayerFragment.java @@ -340,7 +340,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum public AnimatorSet createDefaultColorChangeAnimatorSet(int newColor) { Animator backgroundAnimator; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - //noinspection ConstantConditions + // noinspection ConstantConditions int x = (int) (fragment.playbackControlsFragment.binding.playerPlayPauseFab.getX() + fragment.playbackControlsFragment.binding.playerPlayPauseFab.getWidth() / 2 + fragment.playbackControlsFragment.getView().getX()); int y = (int) (fragment.playbackControlsFragment.binding.playerPlayPauseFab.getY() + fragment.playbackControlsFragment.binding.playerPlayPauseFab.getHeight() / 2 + fragment.playbackControlsFragment.getView().getY() + fragment.playbackControlsFragment.binding.playerProgressSlider.getHeight()); float startRadius = Math.max(fragment.playbackControlsFragment.binding.playerPlayPauseFab.getWidth() / 2, fragment.playbackControlsFragment.binding.playerPlayPauseFab.getHeight() / 2);