Refactor code

This commit is contained in:
h4h13 2019-11-13 18:37:44 +05:30
parent 1bd8b15aad
commit 72350898bb
10 changed files with 51 additions and 59 deletions

View file

@ -4,10 +4,12 @@ import android.app.ActivityOptions
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.transition.Slide import android.view.Menu
import android.view.* import android.view.MenuItem
import android.view.animation.AnimationUtils import android.view.SubMenu
import android.view.View
import android.widget.ImageView import android.widget.ImageView
import androidx.core.app.ActivityCompat
import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
@ -38,20 +40,18 @@ import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.NavigationUtil
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.activity_album.* import kotlinx.android.synthetic.main.activity_album.*
import kotlinx.android.synthetic.main.activity_album_content.* import kotlinx.android.synthetic.main.activity_album_content.*
import java.util.* import java.util.*
import javax.inject.Inject import javax.inject.Inject
import android.util.Pair as UtilPair import android.util.Pair as UtilPair
class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView { class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView {
private lateinit var simpleSongAdapter: SimpleSongAdapter private lateinit var simpleSongAdapter: SimpleSongAdapter
private var disposable = CompositeDisposable()
private lateinit var album: Album private lateinit var album: Album
private lateinit var artistImage: ImageView
private val savedSortOrder: String private val savedSortOrder: String
get() = PreferenceUtil.getInstance(this).albumDetailSongSortOrder get() = PreferenceUtil.getInstance(this).albumDetailSongSortOrder
@ -59,21 +59,11 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView {
return wrapSlidingMusicPanel(R.layout.activity_album) return wrapSlidingMusicPanel(R.layout.activity_album)
} }
private fun setupWindowTransition() {
val slide = Slide(Gravity.BOTTOM)
slide.excludeTarget(android.R.id.statusBarBackground, true)
slide.excludeTarget(android.R.id.navigationBarBackground, true)
slide.excludeTarget(toolbar, true)
slide.interpolator = AnimationUtils.loadInterpolator(this, android.R.interpolator.linear_out_slow_in)
window.enterTransition = slide
}
@Inject @Inject
lateinit var albumDetailsPresenter: AlbumDetailsPresenter lateinit var albumDetailsPresenter: AlbumDetailsPresenter
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
setDrawUnderStatusBar() setDrawUnderStatusBar()
//setupWindowTransition()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
toggleBottomNavigationView(true) toggleBottomNavigationView(true)
setStatusbarColor(Color.TRANSPARENT) setStatusbarColor(Color.TRANSPARENT)
@ -82,9 +72,9 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView {
setLightNavigationBar(true) setLightNavigationBar(true)
setLightStatusbar(ColorUtil.isColorLight(ATHUtil.resolveColor(this, R.attr.colorPrimary))) setLightStatusbar(ColorUtil.isColorLight(ATHUtil.resolveColor(this, R.attr.colorPrimary)))
App.musicComponent.inject(this) ActivityCompat.postponeEnterTransition(this)
postponeEnterTransition()
App.musicComponent.inject(this)
artistImage = findViewById(R.id.artistImage) artistImage = findViewById(R.id.artistImage)
setupRecyclerView() setupRecyclerView()
@ -122,12 +112,11 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView {
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
disposable.dispose()
albumDetailsPresenter.detachView() albumDetailsPresenter.detachView()
} }
override fun complete() { override fun complete() {
scheduleStartPostponedTransition(image) ActivityCompat.startPostponedEnterTransition(this)
} }
override fun album(album: Album) { override fun album(album: Album) {
@ -149,7 +138,6 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView {
albumDetailsPresenter.loadMore(album.artistId) albumDetailsPresenter.loadMore(album.artistId)
} }
private lateinit var artistImage: ImageView
override fun moreAlbums(albums: ArrayList<Album>) { override fun moreAlbums(albums: ArrayList<Album>) {
moreTitle.show() moreTitle.show()
@ -186,16 +174,6 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView {
}) })
} }
private fun scheduleStartPostponedTransition(image: ImageView) {
image.viewTreeObserver.addOnPreDrawListener(object : ViewTreeObserver.OnPreDrawListener {
override fun onPreDraw(): Boolean {
image.viewTreeObserver.removeOnPreDrawListener(this)
startPostponedEnterTransition();
return true;
}
})
}
private fun setColors(color: Int) { private fun setColors(color: Int) {
val themeColor = if (PreferenceUtil.getInstance(this).adaptiveColor) color val themeColor = if (PreferenceUtil.getInstance(this).adaptiveColor) color
else ThemeStore.accentColor(this) else ThemeStore.accentColor(this)
@ -212,10 +190,8 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView {
toolbar.setBackgroundColor(ATHUtil.resolveColor(this, R.attr.colorPrimary)) toolbar.setBackgroundColor(ATHUtil.resolveColor(this, R.attr.colorPrimary))
setSupportActionBar(toolbar) setSupportActionBar(toolbar)
supportActionBar?.title = null supportActionBar?.title = null
} }
override fun onCreateOptionsMenu(menu: Menu): Boolean { override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_album_detail, menu) menuInflater.inflate(R.menu.menu_album_detail, menu)
val sortOrder = menu.findItem(R.id.action_sort_order) val sortOrder = menu.findItem(R.id.action_sort_order)

View file

@ -7,12 +7,9 @@ import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.Html import android.text.Html
import android.text.Spanned import android.text.Spanned
import android.transition.Slide
import android.view.Gravity
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.animation.AnimationUtils
import android.widget.Toast import android.widget.Toast
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.DefaultItemAnimator
@ -54,12 +51,6 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailsView {
private lateinit var albumAdapter: AlbumAdapter private lateinit var albumAdapter: AlbumAdapter
private var forceDownload: Boolean = false private var forceDownload: Boolean = false
private fun setupWindowTransitions() {
val slide = Slide(Gravity.BOTTOM)
slide.interpolator = AnimationUtils.loadInterpolator(this, android.R.interpolator.linear_out_slow_in)
window.enterTransition = slide
}
override fun createContentView(): View { override fun createContentView(): View {
return wrapSlidingMusicPanel(R.layout.activity_artist_details) return wrapSlidingMusicPanel(R.layout.activity_artist_details)
} }
@ -69,7 +60,6 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailsView {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
setDrawUnderStatusBar() setDrawUnderStatusBar()
// setupWindowTransitions()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
toggleBottomNavigationView(true) toggleBottomNavigationView(true)
setStatusbarColor(Color.TRANSPARENT) setStatusbarColor(Color.TRANSPARENT)
@ -128,7 +118,6 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailsView {
} }
private fun setupRecyclerView() { private fun setupRecyclerView() {
albumAdapter = HorizontalAlbumAdapter(this, ArrayList(), false, null) albumAdapter = HorizontalAlbumAdapter(this, ArrayList(), false, null)
albumRecyclerView.apply { albumRecyclerView.apply {

View file

@ -19,7 +19,7 @@ import com.r0adkll.slidr.Slidr
import com.r0adkll.slidr.model.SlidrConfig import com.r0adkll.slidr.model.SlidrConfig
import com.r0adkll.slidr.model.SlidrListener import com.r0adkll.slidr.model.SlidrListener
import com.r0adkll.slidr.model.SlidrPosition import com.r0adkll.slidr.model.SlidrPosition
import kotlinx.android.synthetic.main.activity_album.* import kotlinx.android.synthetic.main.activity_lock_screen.*
class LockScreenActivity : AbsMusicServiceActivity() { class LockScreenActivity : AbsMusicServiceActivity() {
private var fragment: LockScreenPlayerControlsFragment? = null private var fragment: LockScreenPlayerControlsFragment? = null
@ -102,7 +102,7 @@ class LockScreenActivity : AbsMusicServiceActivity() {
.checkIgnoreMediaStore(this) .checkIgnoreMediaStore(this)
.generatePalette(this).build() .generatePalette(this).build()
.dontAnimate() .dontAnimate()
.into(object : RetroMusicColoredTarget(image) { .into(object : RetroMusicColoredTarget(image ) {
override fun onColorReady(color: Int) { override fun onColorReady(color: Int) {
fragment?.setDark(color) fragment?.setDark(color)
} }

View file

@ -14,7 +14,6 @@ import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter
import code.name.monkey.retromusic.extensions.applyToolbar import code.name.monkey.retromusic.extensions.applyToolbar
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.util.DensityUtil
import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.ViewUtil
import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator
@ -106,8 +105,7 @@ open class PlayingQueueActivity : AbsMusicServiceActivity() {
} }
private fun checkForPadding() { private fun checkForPadding() {
val height = DensityUtil.dip2px(this, 102f)
recyclerView.setPadding(0, 0, 0, (height))
} }
override fun onQueueChanged() { override fun onQueueChanged() {

View file

@ -162,10 +162,8 @@ open class AlbumAdapter(protected val activity: AppCompatActivity,
inner class ViewHolder(itemView: View) : MediaEntryViewHolder(itemView) { inner class ViewHolder(itemView: View) : MediaEntryViewHolder(itemView) {
init { init {
setImageTransitionName(activity.getString(code.name.monkey.retromusic.R.string.transition_album_art)) setImageTransitionName(activity.getString(R.string.transition_album_art))
if (menu != null) { menu?.visibility = View.GONE
menu!!.visibility = View.GONE
}
} }
override fun onClick(v: View?) { override fun onClick(v: View?) {

View file

@ -125,7 +125,7 @@ class ArtistAdapter(val activity: AppCompatActivity,
inner class ViewHolder(itemView: View) : MediaEntryViewHolder(itemView) { inner class ViewHolder(itemView: View) : MediaEntryViewHolder(itemView) {
init { init {
setImageTransitionName(activity.getString(code.name.monkey.retromusic.R.string.transition_artist_image)) setImageTransitionName(activity.getString(R.string.transition_artist_image))
menu?.visibility = View.GONE menu?.visibility = View.GONE
} }

View file

@ -17,11 +17,37 @@ import android.os.Parcelable
import kotlinx.android.parcel.Parcelize import kotlinx.android.parcel.Parcelize
@Parcelize @Parcelize
open class Song(val id: Int, val title: String, val trackNumber: Int, val year: Int, val duration: Long, val data: String, val dateModified: Long, val albumId: Int, val albumName: String, val artistId: Int, val artistName: String, val composer: String?) : Parcelable { open class Song(
val id: Int,
val title: String,
val trackNumber: Int,
val year: Int,
val duration: Long,
val data: String,
val dateModified: Long,
val albumId: Int,
val albumName: String,
val artistId: Int,
val artistName: String,
val composer: String?
) : Parcelable {
companion object { companion object {
@JvmStatic @JvmStatic
val emptySong = Song(-1, "", -1, -1, -1, "", -1, -1, "", -1, "", "") val emptySong = Song(
-1,
"",
-1,
-1,
-1,
"",
-1,
-1,
"",
-1,
"",
""
)
} }
} }

View file

@ -62,10 +62,10 @@ public class NavigationUtil {
public static void goToAlbumOptions(@NonNull Activity activity, public static void goToAlbumOptions(@NonNull Activity activity,
int albumId, int albumId,
@NonNull ActivityOptions activityOptions) { @NonNull ActivityOptions options) {
Intent intent = new Intent(activity, AlbumDetailsActivity.class); Intent intent = new Intent(activity, AlbumDetailsActivity.class);
intent.putExtra(AlbumDetailsActivity.EXTRA_ALBUM_ID, albumId); intent.putExtra(AlbumDetailsActivity.EXTRA_ALBUM_ID, albumId);
ActivityCompat.startActivity(activity, intent, activityOptions.toBundle()); ActivityCompat.startActivity(activity, intent, options.toBundle());
} }
public static void goToArtistOptions(@NotNull AppCompatActivity activity, public static void goToArtistOptions(@NotNull AppCompatActivity activity,

View file

@ -47,6 +47,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:clipToPadding="false" android:clipToPadding="false"
android:layoutAnimation="@anim/layout_animation_fall_down" android:layoutAnimation="@anim/layout_animation_fall_down"
android:paddingBottom="96dp"
android:scrollbars="none" android:scrollbars="none"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" /> app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />

View file

@ -76,4 +76,8 @@
<attr name="android:textAppearance" /> <attr name="android:textAppearance" />
<attr name="android:fontFamily" /> <attr name="android:fontFamily" />
</declare-styleable> </declare-styleable>
<declare-styleable name="CircleRectView">
<attr name="circleRadius" format="dimension" />
</declare-styleable>
</resources> </resources>