Merge branch 'master' of https://github.com/h4h13/RetroMusicPlayer
This commit is contained in:
commit
b64a1c86a8
103 changed files with 1129 additions and 889 deletions
6
FAQ.md
6
FAQ.md
|
@ -8,8 +8,7 @@ You can opt-in for the beta build by clicking on this link: https://play.google.
|
||||||
- STEP 4: You have to copy or move the file into a location on the SD Card: whatever_sdcard/RetroMusic/lyrics/ and paste inside your ".lrc" file in there.
|
- STEP 4: You have to copy or move the file into a location on the SD Card: whatever_sdcard/RetroMusic/lyrics/ and paste inside your ".lrc" file in there.
|
||||||
|
|
||||||
#### Q: Why isn't the artist's image downloading?
|
#### Q: Why isn't the artist's image downloading?
|
||||||
STEP 1: Settings -> Images -> Auto-download artist images -> Always
|
Last.fm has disabled the download of artist's images for the time being, whether functionality for this will be restored in future is uncertain.
|
||||||
STEP 2: Open the artists tab and wait some time for the images to download.
|
|
||||||
|
|
||||||
#### Q: How do I change the theme?
|
#### Q: How do I change the theme?
|
||||||
Settings -> Look and feel -> Select your theme.
|
Settings -> Look and feel -> Select your theme.
|
||||||
|
@ -35,8 +34,5 @@ Clear the app's cache and data.
|
||||||
##### Q: My app is crashing, how do i fix this? (Sorry, settings have changed internally)
|
##### Q: My app is crashing, how do i fix this? (Sorry, settings have changed internally)
|
||||||
Reinstalling the app should fix this issue.
|
Reinstalling the app should fix this issue.
|
||||||
|
|
||||||
##### Q: Artist images are not loading, why?
|
|
||||||
The Last.fm service has a limited number of requests of download data it can handle (artist images). If that request limit is exceeded, it will not download for some time.
|
|
||||||
|
|
||||||
##### Q: Why has all the text gone white/dissapeared?
|
##### Q: Why has all the text gone white/dissapeared?
|
||||||
Change the theme to Black or Dark and change it back to what you had before.
|
Change the theme to Black or Dark and change it back to what you had before.
|
||||||
|
|
|
@ -17,7 +17,6 @@ Retro Music is an open source, local music player for Android.
|
||||||
- Volume controls
|
- Volume controls
|
||||||
- Blacklist
|
- Blacklist
|
||||||
- Album artist support
|
- Album artist support
|
||||||
- Auto-download artist images from Last.fm
|
|
||||||
|
|
||||||
#### Download
|
#### Download
|
||||||
|
|
||||||
|
|
|
@ -31,8 +31,8 @@ android {
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
|
|
||||||
applicationId "code.name.monkey.retromusic"
|
applicationId "code.name.monkey.retromusic"
|
||||||
versionCode 336
|
versionCode 340
|
||||||
versionName '3.2.100'
|
versionName '3.2.125'
|
||||||
|
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
|
|
||||||
|
@ -132,9 +132,9 @@ dependencies {
|
||||||
implementation 'com.google.android.material:material:1.1.0-alpha07'
|
implementation 'com.google.android.material:material:1.1.0-alpha07'
|
||||||
implementation 'com.google.android.material:material:1.1.0-alpha07'
|
implementation 'com.google.android.material:material:1.1.0-alpha07'
|
||||||
|
|
||||||
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
|
implementation 'com.squareup.retrofit2:retrofit:2.6.0'
|
||||||
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
|
implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
|
||||||
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
|
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.6.0'
|
||||||
|
|
||||||
implementation 'com.afollestad.material-dialogs:core:3.0.0-alpha1'
|
implementation 'com.afollestad.material-dialogs:core:3.0.0-alpha1'
|
||||||
implementation 'com.afollestad.material-dialogs:input:3.0.0-alpha1'
|
implementation 'com.afollestad.material-dialogs:input:3.0.0-alpha1'
|
||||||
|
@ -161,7 +161,6 @@ dependencies {
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
||||||
implementation 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:3.4.0.201406110918-r'
|
implementation 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:3.4.0.201406110918-r'
|
||||||
|
|
||||||
implementation 'com.github.jetradarmobile:android-snowfall:1.2.0'
|
|
||||||
implementation 'com.github.takahirom.downloadable.calligraphy:downloadable-calligraphy:0.1.3'
|
implementation 'com.github.takahirom.downloadable.calligraphy:downloadable-calligraphy:0.1.3'
|
||||||
implementation 'com.github.ksoichiro:android-observablescrollview:1.6.0'
|
implementation 'com.github.ksoichiro:android-observablescrollview:1.6.0'
|
||||||
implementation 'com.github.kabouzeid:RecyclerView-FastScroll:1.0.16-kmod'
|
implementation 'com.github.kabouzeid:RecyclerView-FastScroll:1.0.16-kmod'
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,6 +1,7 @@
|
||||||
package code.name.monkey.retromusic.activities
|
package code.name.monkey.retromusic.activities
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.res.ColorStateList
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.transition.Slide
|
import android.transition.Slide
|
||||||
|
@ -70,7 +71,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac
|
||||||
setupWindowTransition()
|
setupWindowTransition()
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
toggleBottomNavigationView(true)
|
toggleBottomNavigationView(true)
|
||||||
collapsingToolbarLayout?.setBackgroundColor(ThemeStore.primaryColor(this))
|
contentContainer?.setCardBackgroundColor( ColorStateList.valueOf(ThemeStore.primaryColor(this)))
|
||||||
setLightNavigationBar(true)
|
setLightNavigationBar(true)
|
||||||
setNavigationbarColorAuto()
|
setNavigationbarColorAuto()
|
||||||
|
|
||||||
|
@ -111,7 +112,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac
|
||||||
supportActionBar!!.title = null
|
supportActionBar!!.title = null
|
||||||
|
|
||||||
val primaryColor = ThemeStore.primaryColor(this)
|
val primaryColor = ThemeStore.primaryColor(this)
|
||||||
TintHelper.setTintAuto(contentContainer!!, primaryColor, true)
|
//TintHelper.setTintAuto(contentContainer!!, primaryColor, true)
|
||||||
|
|
||||||
if (collapsingToolbarLayout != null) {
|
if (collapsingToolbarLayout != null) {
|
||||||
collapsingToolbarLayout!!.apply {
|
collapsingToolbarLayout!!.apply {
|
||||||
|
|
|
@ -2,6 +2,7 @@ package code.name.monkey.retromusic.activities
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.res.ColorStateList
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
@ -17,7 +18,10 @@ 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
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.appthemehelper.util.*
|
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||||
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
|
import code.name.monkey.appthemehelper.util.MaterialUtil
|
||||||
|
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity
|
import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity
|
||||||
import code.name.monkey.retromusic.adapter.album.AlbumAdapter
|
import code.name.monkey.retromusic.adapter.album.AlbumAdapter
|
||||||
|
@ -68,7 +72,8 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac
|
||||||
setDrawUnderStatusBar()
|
setDrawUnderStatusBar()
|
||||||
setupWindowTransitions()
|
setupWindowTransitions()
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
collapsingToolbarLayout?.setBackgroundColor(ThemeStore.primaryColor(this))
|
//collapsingToolbarLayout?.setBackgroundColor(ThemeStore.primaryColor(this))
|
||||||
|
contentContainer?.setCardBackgroundColor(ColorStateList.valueOf(ThemeStore.primaryColor(this)))
|
||||||
toggleBottomNavigationView(true)
|
toggleBottomNavigationView(true)
|
||||||
setNavigationbarColorAuto()
|
setNavigationbarColorAuto()
|
||||||
setLightNavigationBar(true)
|
setLightNavigationBar(true)
|
||||||
|
@ -114,7 +119,7 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac
|
||||||
|
|
||||||
private fun setupToolbarMarginHeight() {
|
private fun setupToolbarMarginHeight() {
|
||||||
val primaryColor = ThemeStore.primaryColor(this)
|
val primaryColor = ThemeStore.primaryColor(this)
|
||||||
TintHelper.setTintAuto(contentContainer!!, primaryColor, true)
|
|
||||||
collapsingToolbarLayout?.let {
|
collapsingToolbarLayout?.let {
|
||||||
it.setContentScrimColor(primaryColor)
|
it.setContentScrimColor(primaryColor)
|
||||||
it.setStatusBarScrimColor(ColorUtil.darkenColor(primaryColor))
|
it.setStatusBarScrimColor(ColorUtil.darkenColor(primaryColor))
|
||||||
|
@ -198,7 +203,7 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getArtist(): Artist {
|
private fun getArtist(): Artist {
|
||||||
return this.artist;
|
return this.artist
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setArtist(artist: Artist) {
|
private fun setArtist(artist: Artist) {
|
||||||
|
@ -327,7 +332,7 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac
|
||||||
R.id.action_reset_artist_image -> {
|
R.id.action_reset_artist_image -> {
|
||||||
Toast.makeText(this@ArtistDetailActivity, resources.getString(R.string.updating),
|
Toast.makeText(this@ArtistDetailActivity, resources.getString(R.string.updating),
|
||||||
Toast.LENGTH_SHORT).show()
|
Toast.LENGTH_SHORT).show()
|
||||||
CustomArtistImageUtil.getInstance(this@ArtistDetailActivity).resetCustomArtistImage(artist!!)
|
CustomArtistImageUtil.getInstance(this@ArtistDetailActivity).resetCustomArtistImage(artist)
|
||||||
forceDownload = true
|
forceDownload = true
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,20 @@
|
||||||
package code.name.monkey.retromusic.activities
|
package code.name.monkey.retromusic.activities
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.*
|
import android.content.ContentUris
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.ContextWrapper
|
||||||
|
import android.content.Intent
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.DocumentsContract
|
import android.provider.DocumentsContract
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore.Images.Media
|
||||||
import android.provider.MediaStore.Images.Media.getBitmap
|
import android.provider.MediaStore.Images.Media.getBitmap
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.content.FileProvider
|
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.MaterialUtil
|
import code.name.monkey.appthemehelper.util.MaterialUtil
|
||||||
|
@ -56,10 +58,10 @@ class UserInfoActivity : AbsBaseActivity() {
|
||||||
name.setText(PreferenceUtil.getInstance().userName)
|
name.setText(PreferenceUtil.getInstance().userName)
|
||||||
bio.setText(PreferenceUtil.getInstance().userBio)
|
bio.setText(PreferenceUtil.getInstance().userBio)
|
||||||
|
|
||||||
if (!PreferenceUtil.getInstance().profileImage.isEmpty()) {
|
if (PreferenceUtil.getInstance().profileImage.isNotEmpty()) {
|
||||||
loadImageFromStorage(PreferenceUtil.getInstance().profileImage)
|
loadImageFromStorage(PreferenceUtil.getInstance().profileImage)
|
||||||
}
|
}
|
||||||
if (!PreferenceUtil.getInstance().bannerImage.isEmpty()) {
|
if (PreferenceUtil.getInstance().bannerImage.isNotEmpty()) {
|
||||||
loadBannerFromStorage(PreferenceUtil.getInstance().bannerImage)
|
loadBannerFromStorage(PreferenceUtil.getInstance().bannerImage)
|
||||||
}
|
}
|
||||||
userImage.setOnClickListener {
|
userImage.setOnClickListener {
|
||||||
|
@ -129,7 +131,7 @@ class UserInfoActivity : AbsBaseActivity() {
|
||||||
private fun selectBannerImage() {
|
private fun selectBannerImage() {
|
||||||
|
|
||||||
if (TextUtils.isEmpty(PreferenceUtil.getInstance().bannerImage)) {
|
if (TextUtils.isEmpty(PreferenceUtil.getInstance().bannerImage)) {
|
||||||
val pickImageIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
|
val pickImageIntent = Intent(Intent.ACTION_PICK, Media.EXTERNAL_CONTENT_URI)
|
||||||
pickImageIntent.type = "image/*"
|
pickImageIntent.type = "image/*"
|
||||||
//pickImageIntent.putExtra("crop", "true")
|
//pickImageIntent.putExtra("crop", "true")
|
||||||
pickImageIntent.putExtra("outputX", 1290)
|
pickImageIntent.putExtra("outputX", 1290)
|
||||||
|
@ -147,7 +149,7 @@ class UserInfoActivity : AbsBaseActivity() {
|
||||||
|
|
||||||
|
|
||||||
private fun pickNewPhoto() {
|
private fun pickNewPhoto() {
|
||||||
val pickImageIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
|
val pickImageIntent = Intent(Intent.ACTION_PICK, Media.EXTERNAL_CONTENT_URI)
|
||||||
pickImageIntent.type = "image/*"
|
pickImageIntent.type = "image/*"
|
||||||
pickImageIntent.putExtra("crop", "true")
|
pickImageIntent.putExtra("crop", "true")
|
||||||
pickImageIntent.putExtra("outputX", 512)
|
pickImageIntent.putExtra("outputX", 512)
|
||||||
|
@ -163,42 +165,30 @@ class UserInfoActivity : AbsBaseActivity() {
|
||||||
if (resultCode == Activity.RESULT_OK && data != null) {
|
if (resultCode == Activity.RESULT_OK && data != null) {
|
||||||
when (requestCode) {
|
when (requestCode) {
|
||||||
PICK_IMAGE_REQUEST -> {
|
PICK_IMAGE_REQUEST -> {
|
||||||
val uri = data.data
|
|
||||||
try {
|
try {
|
||||||
val bitmap = getResizedBitmap(getBitmap(contentResolver, uri), PROFILE_ICON_SIZE)
|
data.data?.let {
|
||||||
|
val bitmap = getResizedBitmap(getBitmap(contentResolver, it), PROFILE_ICON_SIZE)
|
||||||
val profileImagePath = saveToInternalStorage(bitmap, USER_PROFILE)
|
val profileImagePath = saveToInternalStorage(bitmap, USER_PROFILE)
|
||||||
PreferenceUtil.getInstance().saveProfileImage(profileImagePath)
|
PreferenceUtil.getInstance().saveProfileImage(profileImagePath)
|
||||||
loadImageFromStorage(profileImagePath)
|
loadImageFromStorage(profileImagePath)
|
||||||
|
}
|
||||||
|
|
||||||
} catch (e: IOException) {
|
} catch (e: IOException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CROP_IMAGE_REQUEST -> {
|
|
||||||
val extras: Bundle = data.extras!!
|
|
||||||
val selectedBitmap: Bitmap = extras.getParcelable("data")
|
|
||||||
val profileImagePath = saveToInternalStorage(selectedBitmap, USER_PROFILE)
|
|
||||||
PreferenceUtil.getInstance().saveProfileImage(profileImagePath)
|
|
||||||
loadImageFromStorage(profileImagePath)
|
|
||||||
}
|
|
||||||
PICK_BANNER_REQUEST -> {
|
PICK_BANNER_REQUEST -> {
|
||||||
val uri = data.data
|
|
||||||
try {
|
try {
|
||||||
val bitmap = getBitmap(contentResolver, uri)
|
data.data?.let {
|
||||||
|
val bitmap = getBitmap(contentResolver, it)
|
||||||
val profileImagePath = saveToInternalStorage(bitmap, USER_BANNER)
|
val profileImagePath = saveToInternalStorage(bitmap, USER_BANNER)
|
||||||
PreferenceUtil.getInstance().setBannerImagePath(profileImagePath)
|
PreferenceUtil.getInstance().setBannerImagePath(profileImagePath)
|
||||||
loadBannerFromStorage(profileImagePath)
|
loadBannerFromStorage(profileImagePath)
|
||||||
|
}
|
||||||
} catch (e: IOException) {
|
} catch (e: IOException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CROP_BANNER_REQUEST -> {
|
|
||||||
val selectedBitmap: Bitmap? = data.extras?.getParcelable("date")
|
|
||||||
val profileImagePath = selectedBitmap?.let { saveToInternalStorage(it, USER_BANNER) }
|
|
||||||
profileImagePath?.let {
|
|
||||||
PreferenceUtil.getInstance().saveProfileImage(it)
|
|
||||||
loadImageFromStorage(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -213,8 +203,8 @@ class UserInfoActivity : AbsBaseActivity() {
|
||||||
val documentId = DocumentsContract.getDocumentId(aUri)
|
val documentId = DocumentsContract.getDocumentId(aUri)
|
||||||
if ("com.android.providers.media.documents" == aUri.authority) {
|
if ("com.android.providers.media.documents" == aUri.authority) {
|
||||||
val id = documentId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[1]
|
val id = documentId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[1]
|
||||||
val selection = MediaStore.Images.Media._ID + "=" + id
|
val selection = Media._ID + "=" + id
|
||||||
imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection)
|
imagePath = getImagePath(Media.EXTERNAL_CONTENT_URI, selection)
|
||||||
} else if ("com.android.providers.downloads.documents" == aUri.authority) {
|
} else if ("com.android.providers.downloads.documents" == aUri.authority) {
|
||||||
val contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),
|
val contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),
|
||||||
java.lang.Long.valueOf(documentId))
|
java.lang.Long.valueOf(documentId))
|
||||||
|
@ -233,50 +223,13 @@ class UserInfoActivity : AbsBaseActivity() {
|
||||||
val cursor = App.context.contentResolver.query(aUri, null, aSelection, null, null)
|
val cursor = App.context.contentResolver.query(aUri, null, aSelection, null, null)
|
||||||
if (cursor != null) {
|
if (cursor != null) {
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA))
|
path = cursor.getString(cursor.getColumnIndex(Media.DATA))
|
||||||
}
|
}
|
||||||
cursor.close()
|
cursor.close()
|
||||||
}
|
}
|
||||||
return path
|
return path
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun performBannerCrop(picturePath: Uri?) {
|
|
||||||
val photoUri = FileProvider.getUriForFile(this, "$packageName.provider", File(getImagePathFromUri(picturePath)))
|
|
||||||
try {
|
|
||||||
|
|
||||||
val cropIntent = Intent("com.android.camera.action.CROP")
|
|
||||||
cropIntent.setDataAndType(photoUri, "image/*")
|
|
||||||
cropIntent.putExtra("crop", "true")
|
|
||||||
cropIntent.putExtra("aspectX", 1)
|
|
||||||
cropIntent.putExtra("aspectY", 1)
|
|
||||||
cropIntent.putExtra("return-data", true)
|
|
||||||
cropIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
|
||||||
startActivityForResult(cropIntent, CROP_BANNER_REQUEST)
|
|
||||||
} catch (anfe: ActivityNotFoundException) {
|
|
||||||
val errorMessage = "your device doesn't support the crop action!"
|
|
||||||
Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT).show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun performCrop(imageUri: Uri) {
|
|
||||||
val photoUri = FileProvider.getUriForFile(this, "$packageName.provider", File(getImagePathFromUri(imageUri)))
|
|
||||||
try {
|
|
||||||
val cropIntent = Intent("com.android.camera.action.CROP")
|
|
||||||
cropIntent.setDataAndType(photoUri, "image/*")
|
|
||||||
cropIntent.putExtra("crop", "true")
|
|
||||||
cropIntent.putExtra("aspectX", 1)
|
|
||||||
cropIntent.putExtra("aspectY", 1)
|
|
||||||
cropIntent.putExtra("outputX", 280)
|
|
||||||
cropIntent.putExtra("outputY", 280)
|
|
||||||
cropIntent.putExtra("return-data", true)
|
|
||||||
cropIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
|
||||||
startActivityForResult(cropIntent, CROP_IMAGE_REQUEST)
|
|
||||||
} catch (anfe: ActivityNotFoundException) {
|
|
||||||
val errorMessage = "your device doesn't support the crop action!"
|
|
||||||
Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT).show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun loadBannerFromStorage(profileImagePath: String) {
|
private fun loadBannerFromStorage(profileImagePath: String) {
|
||||||
disposable.add(Compressor(this)
|
disposable.add(Compressor(this)
|
||||||
.setQuality(100)
|
.setQuality(100)
|
||||||
|
@ -323,9 +276,7 @@ class UserInfoActivity : AbsBaseActivity() {
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
private const val PICK_IMAGE_REQUEST = 9002
|
private const val PICK_IMAGE_REQUEST = 9002
|
||||||
private const val CROP_IMAGE_REQUEST = 9003
|
|
||||||
private const val PICK_BANNER_REQUEST = 9004
|
private const val PICK_BANNER_REQUEST = 9004
|
||||||
private const val CROP_BANNER_REQUEST = 9005
|
|
||||||
private const val PROFILE_ICON_SIZE = 400
|
private const val PROFILE_ICON_SIZE = 400
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -133,6 +133,7 @@ public class WriteTagsAsyncTask extends
|
||||||
(Activity) context, toBeScanned) : null);
|
(Activity) context, toBeScanned) : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
protected Dialog createDialog(@NonNull Context context) {
|
protected Dialog createDialog(@NonNull Context context) {
|
||||||
return new MaterialDialog(context, new BottomSheet())
|
return new MaterialDialog(context, new BottomSheet())
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
package code.name.monkey.retromusic.adapter
|
package code.name.monkey.retromusic.adapter
|
||||||
|
|
||||||
|
import android.content.res.ColorStateList
|
||||||
import android.util.DisplayMetrics
|
import android.util.DisplayMetrics
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.TextView
|
|
||||||
import androidx.annotation.IntDef
|
import androidx.annotation.IntDef
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.adapter.album.AlbumFullWidthAdapter
|
import code.name.monkey.retromusic.adapter.album.AlbumFullWidthAdapter
|
||||||
import code.name.monkey.retromusic.adapter.artist.ArtistAdapter
|
import code.name.monkey.retromusic.adapter.artist.ArtistAdapter
|
||||||
|
@ -17,7 +18,7 @@ import code.name.monkey.retromusic.adapter.song.SongAdapter
|
||||||
import code.name.monkey.retromusic.loaders.PlaylistSongsLoader
|
import code.name.monkey.retromusic.loaders.PlaylistSongsLoader
|
||||||
import code.name.monkey.retromusic.model.*
|
import code.name.monkey.retromusic.model.*
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.views.IconImageView
|
import com.google.android.material.chip.Chip
|
||||||
|
|
||||||
|
|
||||||
class HomeAdapter(private val activity: AppCompatActivity, private var homes: List<Home>, private val displayMetrics: DisplayMetrics) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
class HomeAdapter(private val activity: AppCompatActivity, private var homes: List<Home>, private val displayMetrics: DisplayMetrics) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||||
|
@ -91,8 +92,8 @@ class HomeAdapter(private val activity: AppCompatActivity, private var homes: Li
|
||||||
recyclerView.apply {
|
recyclerView.apply {
|
||||||
adapter = AlbumFullWidthAdapter(activity, home.arrayList as ArrayList<Album>, displayMetrics)
|
adapter = AlbumFullWidthAdapter(activity, home.arrayList as ArrayList<Album>, displayMetrics)
|
||||||
}
|
}
|
||||||
title.text = activity.getString(home.title)
|
chip.text = activity.getString(home.title)
|
||||||
icon.setImageResource(home.icon)
|
chip.setChipIconResource(home.icon)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,8 +104,8 @@ class HomeAdapter(private val activity: AppCompatActivity, private var homes: Li
|
||||||
val artistAdapter = ArtistAdapter(activity, home.arrayList as ArrayList<Artist>, PreferenceUtil.getInstance().getHomeGridStyle(context!!), false, null)
|
val artistAdapter = ArtistAdapter(activity, home.arrayList as ArrayList<Artist>, PreferenceUtil.getInstance().getHomeGridStyle(context!!), false, null)
|
||||||
adapter = artistAdapter
|
adapter = artistAdapter
|
||||||
}
|
}
|
||||||
title.text = activity.getString(home.title)
|
chip.text = activity.getString(home.title)
|
||||||
icon.setImageResource(home.icon)
|
chip.setChipIconResource(home.icon)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,8 +117,8 @@ class HomeAdapter(private val activity: AppCompatActivity, private var homes: Li
|
||||||
adapter = genreAdapter
|
adapter = genreAdapter
|
||||||
|
|
||||||
}
|
}
|
||||||
title.text = activity.getString(home.title)
|
chip.text = activity.getString(home.title)
|
||||||
icon.setImageResource(home.icon)
|
chip.setChipIconResource(home.icon)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,14 +131,17 @@ class HomeAdapter(private val activity: AppCompatActivity, private var homes: Li
|
||||||
adapter = songAdapter
|
adapter = songAdapter
|
||||||
|
|
||||||
}
|
}
|
||||||
title.text = activity.getString(home.title)
|
chip.text = activity.getString(home.title)
|
||||||
icon.setImageResource(home.icon)
|
chip.setChipIconResource(home.icon)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private open inner class AbsHomeViewItem(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
private open inner class AbsHomeViewItem(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||||
val recyclerView: RecyclerView = itemView.findViewById(R.id.recyclerView)
|
val recyclerView: RecyclerView = itemView.findViewById(R.id.recyclerView)
|
||||||
val title: TextView = itemView.findViewById(R.id.sectionTitle)
|
val chip: Chip = itemView.findViewById(R.id.chipHead)
|
||||||
val icon: IconImageView = itemView.findViewById(R.id.sectionIcon)
|
|
||||||
|
init {
|
||||||
|
chip.apply { chipBackgroundColor = ColorStateList.valueOf(ThemeStore.primaryColor(context)) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -52,8 +52,7 @@ interface DeezerApiService {
|
||||||
.addHeader("Cache-Control",
|
.addHeader("Cache-Control",
|
||||||
String.format(
|
String.format(
|
||||||
Locale.getDefault(),
|
Locale.getDefault(),
|
||||||
"max-age=%d, max-stale=%d",
|
"max-age=31536000, max-stale=31536000"
|
||||||
31536000, 31536000
|
|
||||||
)
|
)
|
||||||
).build()
|
).build()
|
||||||
chain.proceed(modifiedRequest)
|
chain.proceed(modifiedRequest)
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019 Hemanth Savarala.
|
||||||
|
*
|
||||||
|
* Licensed under the GNU General Public License v3
|
||||||
|
*
|
||||||
|
* This is free software: you can redistribute it and/or modify it under
|
||||||
|
* the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
* See the GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package code.name.monkey.retromusic.extensions
|
||||||
|
|
||||||
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
|
|
||||||
|
fun Int.ripAlpha(): Int {
|
||||||
|
return ColorUtil.stripAlpha(this)
|
||||||
|
}
|
|
@ -12,6 +12,7 @@ import android.widget.SeekBar
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||||
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
|
@ -109,7 +110,6 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setTintable(color: Int) {
|
fun setTintable(color: Int) {
|
||||||
|
|
||||||
ViewUtil.setProgressDrawable(volumeSeekBar, color, true)
|
ViewUtil.setProgressDrawable(volumeSeekBar, color, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,15 +121,12 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
|
||||||
if (PreferenceUtil.getInstance().pauseOnZeroVolume())
|
if (PreferenceUtil.getInstance().pauseOnZeroVolume())
|
||||||
if (MusicPlayerRemote.isPlaying && pauseWhenZeroVolume) {
|
if (MusicPlayerRemote.isPlaying && pauseWhenZeroVolume) {
|
||||||
MusicPlayerRemote.pauseSong()
|
MusicPlayerRemote.pauseSong()
|
||||||
} else {
|
|
||||||
MusicPlayerRemote.resumePlaying()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setTintableColor(color: Int) {
|
fun setTintableColor(color: Int) {
|
||||||
volumeDown.setColorFilter(color, PorterDuff.Mode.SRC_IN)
|
volumeDown.setColorFilter(color, PorterDuff.Mode.SRC_IN)
|
||||||
volumeUp.setColorFilter(color, PorterDuff.Mode.SRC_IN)
|
volumeUp.setColorFilter(color, PorterDuff.Mode.SRC_IN)
|
||||||
//TintHelper.setTintAuto(volumeSeekBar, color, false)
|
|
||||||
ViewUtil.setProgressDrawable(volumeSeekBar, color, true)
|
ViewUtil.setProgressDrawable(volumeSeekBar, color, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
|
|
||||||
open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridLayoutManager>(), AlbumContract.AlbumView {
|
open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridLayoutManager>(), AlbumContract.AlbumView {
|
||||||
|
|
||||||
private var presenter: AlbumPresenter? = null
|
private lateinit var presenter: AlbumPresenter
|
||||||
|
|
||||||
|
|
||||||
override val emptyMessage: Int
|
override val emptyMessage: Int
|
||||||
|
@ -48,7 +48,7 @@ open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Al
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setSortOrder(sortOrder: String) {
|
override fun setSortOrder(sortOrder: String) {
|
||||||
presenter!!.loadAlbums()
|
presenter.loadAlbums()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun loadSortOrder(): String {
|
override fun loadSortOrder(): String {
|
||||||
|
@ -87,7 +87,7 @@ open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Al
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMediaStoreChanged() {
|
override fun onMediaStoreChanged() {
|
||||||
presenter!!.loadAlbums()
|
presenter.loadAlbums()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
@ -113,13 +113,13 @@ open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Al
|
||||||
libraryFragment.setTitle(
|
libraryFragment.setTitle(
|
||||||
if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.albums)
|
if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.albums)
|
||||||
if (adapter!!.dataSet.isEmpty()) {
|
if (adapter!!.dataSet.isEmpty()) {
|
||||||
presenter!!.subscribe()
|
presenter.subscribe()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
presenter!!.unsubscribe()
|
presenter.unsubscribe()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun loading() {}
|
override fun loading() {}
|
||||||
|
@ -136,7 +136,7 @@ open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Al
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
val TAG = AlbumsFragment::class.java.simpleName
|
val TAG: String = AlbumsFragment::class.java.simpleName
|
||||||
|
|
||||||
fun newInstance(): AlbumsFragment {
|
fun newInstance(): AlbumsFragment {
|
||||||
val args = Bundle()
|
val args = Bundle()
|
||||||
|
|
|
@ -12,7 +12,7 @@ import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<ArtistAdapter, GridLayoutManager>(), ArtistContract.ArtistView {
|
class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<ArtistAdapter, GridLayoutManager>(), ArtistContract.ArtistView {
|
||||||
private var presenter: ArtistPresenter? = null
|
private lateinit var presenter: ArtistPresenter
|
||||||
|
|
||||||
override val emptyMessage: Int
|
override val emptyMessage: Int
|
||||||
get() = R.string.no_artists
|
get() = R.string.no_artists
|
||||||
|
@ -37,7 +37,7 @@ class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Artist
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMediaStoreChanged() {
|
override fun onMediaStoreChanged() {
|
||||||
presenter!!.loadArtists()
|
presenter.loadArtists()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun loadGridSize(): Int {
|
override fun loadGridSize(): Int {
|
||||||
|
@ -83,7 +83,7 @@ class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Artist
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setSortOrder(sortOrder: String) {
|
override fun setSortOrder(sortOrder: String) {
|
||||||
presenter!!.loadArtists()
|
presenter.loadArtists()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -103,13 +103,13 @@ class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Artist
|
||||||
libraryFragment.setTitle(
|
libraryFragment.setTitle(
|
||||||
if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.artists)
|
if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.artists)
|
||||||
if (adapter!!.dataSet.isEmpty()) {
|
if (adapter!!.dataSet.isEmpty()) {
|
||||||
presenter!!.subscribe()
|
presenter.subscribe()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
presenter!!.unsubscribe()
|
presenter.unsubscribe()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun loading() {}
|
override fun loading() {}
|
||||||
|
|
|
@ -16,7 +16,7 @@ import java.util.*
|
||||||
|
|
||||||
class PlaylistsFragment : AbsLibraryPagerRecyclerViewFragment<PlaylistAdapter, LinearLayoutManager>(), PlaylistContract.PlaylistView {
|
class PlaylistsFragment : AbsLibraryPagerRecyclerViewFragment<PlaylistAdapter, LinearLayoutManager>(), PlaylistContract.PlaylistView {
|
||||||
|
|
||||||
private var presenter: PlaylistPresenter? = null
|
private lateinit var presenter: PlaylistPresenter
|
||||||
|
|
||||||
override val emptyMessage: Int
|
override val emptyMessage: Int
|
||||||
get() = R.string.no_playlists
|
get() = R.string.no_playlists
|
||||||
|
@ -47,18 +47,18 @@ class PlaylistsFragment : AbsLibraryPagerRecyclerViewFragment<PlaylistAdapter, L
|
||||||
super.onResume()
|
super.onResume()
|
||||||
libraryFragment.setTitle(if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.playlists)
|
libraryFragment.setTitle(if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.playlists)
|
||||||
if (adapter!!.dataSet.isEmpty()) {
|
if (adapter!!.dataSet.isEmpty()) {
|
||||||
presenter!!.subscribe()
|
presenter.subscribe()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
presenter!!.unsubscribe()
|
presenter.unsubscribe()
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMediaStoreChanged() {
|
override fun onMediaStoreChanged() {
|
||||||
super.onMediaStoreChanged()
|
super.onMediaStoreChanged()
|
||||||
presenter!!.loadPlaylists()
|
presenter.loadPlaylists()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun loading() {
|
override fun loading() {
|
||||||
|
|
|
@ -83,7 +83,7 @@ class SongsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<SongAdap
|
||||||
super.onResume()
|
super.onResume()
|
||||||
libraryFragment.setTitle(if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.songs)
|
libraryFragment.setTitle(if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.songs)
|
||||||
if (adapter!!.dataSet.isEmpty()) {
|
if (adapter!!.dataSet.isEmpty()) {
|
||||||
presenter!!.subscribe()
|
presenter.subscribe()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ class SongsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<SongAdap
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setSortOrder(sortOrder: String) {
|
override fun setSortOrder(sortOrder: String) {
|
||||||
presenter!!.loadSongs()
|
presenter.loadSongs()
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
|
@ -17,6 +17,7 @@ import code.name.monkey.retromusic.Constants
|
||||||
import code.name.monkey.retromusic.Constants.USER_BANNER
|
import code.name.monkey.retromusic.Constants.USER_BANNER
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.adapter.HomeAdapter
|
import code.name.monkey.retromusic.adapter.HomeAdapter
|
||||||
|
import code.name.monkey.retromusic.extensions.hide
|
||||||
import code.name.monkey.retromusic.extensions.show
|
import code.name.monkey.retromusic.extensions.show
|
||||||
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
|
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import code.name.monkey.retromusic.glide.GlideApp
|
||||||
|
@ -32,7 +33,7 @@ import code.name.monkey.retromusic.mvp.presenter.HomePresenter
|
||||||
import code.name.monkey.retromusic.util.*
|
import code.name.monkey.retromusic.util.*
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import kotlinx.android.synthetic.main.abs_playlists.*
|
import kotlinx.android.synthetic.main.abs_playlists.*
|
||||||
import kotlinx.android.synthetic.main.fragment_banner_home.*
|
import kotlinx.android.synthetic.main.fragment_banner_home.*
|
||||||
|
@ -42,12 +43,8 @@ import java.util.*
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallbacks, HomeContract.HomeView {
|
class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallbacks, HomeContract.HomeView {
|
||||||
override fun showEmpty() {
|
|
||||||
emptyContainer.show()
|
|
||||||
emptyText.setText(R.string.start_play_music)
|
|
||||||
}
|
|
||||||
|
|
||||||
private var disposable: Disposable? = null
|
private var disposable: CompositeDisposable = CompositeDisposable()
|
||||||
private lateinit var homePresenter: HomePresenter
|
private lateinit var homePresenter: HomePresenter
|
||||||
private lateinit var toolbar: Toolbar
|
private lateinit var toolbar: Toolbar
|
||||||
|
|
||||||
|
@ -56,10 +53,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun loadImageFromStorage() {
|
private fun loadImageFromStorage() {
|
||||||
if (disposable != null) {
|
disposable.add(Compressor(context!!)
|
||||||
disposable?.dispose()
|
|
||||||
}
|
|
||||||
disposable = Compressor(context!!)
|
|
||||||
.setMaxHeight(300)
|
.setMaxHeight(300)
|
||||||
.setMaxWidth(300)
|
.setMaxWidth(300)
|
||||||
.setQuality(75)
|
.setQuality(75)
|
||||||
|
@ -75,7 +69,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
||||||
}
|
}
|
||||||
}) {
|
}) {
|
||||||
userImage.setImageDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_person_flat))
|
userImage.setImageDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_person_flat))
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private val displayMetrics: DisplayMetrics
|
private val displayMetrics: DisplayMetrics
|
||||||
|
@ -176,7 +170,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
disposable?.dispose()
|
disposable.dispose()
|
||||||
homePresenter.unsubscribe()
|
homePresenter.unsubscribe()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,7 +179,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun showEmptyView() {
|
override fun showEmptyView() {
|
||||||
|
emptyContainer.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun completed() {
|
override fun completed() {
|
||||||
|
@ -211,6 +205,11 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
||||||
layoutManager = LinearLayoutManager(mainActivity)
|
layoutManager = LinearLayoutManager(mainActivity)
|
||||||
adapter = homeAdapter
|
adapter = homeAdapter
|
||||||
}
|
}
|
||||||
|
if (list.isEmpty()) {
|
||||||
|
showEmptyView()
|
||||||
|
} else {
|
||||||
|
emptyContainer.hide()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
|
@ -262,13 +261,13 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
||||||
.diskCacheStrategy(DiskCacheStrategy.ALL)
|
.diskCacheStrategy(DiskCacheStrategy.ALL)
|
||||||
.into(bannerImage!!)
|
.into(bannerImage!!)
|
||||||
} else {
|
} else {
|
||||||
disposable = Compressor(context!!)
|
disposable.add(Compressor(context!!)
|
||||||
.setQuality(100)
|
.setQuality(100)
|
||||||
.setCompressFormat(Bitmap.CompressFormat.WEBP)
|
.setCompressFormat(Bitmap.CompressFormat.WEBP)
|
||||||
.compressToBitmapAsFlowable(File(PreferenceUtil.getInstance().bannerImage, USER_BANNER))
|
.compressToBitmapAsFlowable(File(PreferenceUtil.getInstance().bannerImage, USER_BANNER))
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe { bannerImage?.setImageBitmap(it) }
|
.subscribe { bitmap -> bannerImage.setImageBitmap(bitmap) })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
loadImageFromStorage()
|
loadImageFromStorage()
|
||||||
|
|
|
@ -14,6 +14,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.TintHelper
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.extensions.ripAlpha
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
||||||
|
@ -100,7 +101,7 @@ class AdaptivePlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
color
|
color
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(context!!)
|
ThemeStore.accentColor(context!!).ripAlpha()
|
||||||
}
|
}
|
||||||
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(colorFinal)), false)
|
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(colorFinal)), false)
|
||||||
TintHelper.setTintAuto(playPauseButton, colorFinal, true)
|
TintHelper.setTintAuto(playPauseButton, colorFinal, true)
|
||||||
|
|
|
@ -14,6 +14,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.TintHelper
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.extensions.ripAlpha
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
||||||
|
@ -127,7 +128,7 @@ class CardPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
color
|
color
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(context!!)
|
ThemeStore.accentColor(context!!).ripAlpha()
|
||||||
}
|
}
|
||||||
image.setColorFilter(colorFinal, PorterDuff.Mode.SRC_IN)
|
image.setColorFilter(colorFinal, PorterDuff.Mode.SRC_IN)
|
||||||
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(colorFinal)), false)
|
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(colorFinal)), false)
|
||||||
|
|
|
@ -16,16 +16,16 @@ import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity
|
||||||
|
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
||||||
|
import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter
|
||||||
import code.name.monkey.retromusic.dialogs.SongShareDialog
|
import code.name.monkey.retromusic.dialogs.SongShareDialog
|
||||||
|
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
|
||||||
|
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.menu.SongMenuHelper
|
import code.name.monkey.retromusic.helper.menu.SongMenuHelper
|
||||||
import code.name.monkey.retromusic.model.Song
|
import code.name.monkey.retromusic.model.Song
|
||||||
import code.name.monkey.retromusic.model.lyrics.Lyrics
|
import code.name.monkey.retromusic.model.lyrics.Lyrics
|
||||||
import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity
|
|
||||||
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
|
||||||
import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter
|
|
||||||
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
|
|
||||||
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
|
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import code.name.monkey.retromusic.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
import code.name.monkey.retromusic.util.RetroUtil
|
||||||
import code.name.monkey.retromusic.util.ViewUtil
|
import code.name.monkey.retromusic.util.ViewUtil
|
||||||
|
@ -151,8 +151,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Call
|
||||||
|
|
||||||
private fun setUpPlayerToolbar() {
|
private fun setUpPlayerToolbar() {
|
||||||
playerToolbar.apply {
|
playerToolbar.apply {
|
||||||
inflateMenu(code.name.monkey.retromusic.R.menu.menu_player)
|
inflateMenu(R.menu.menu_player)
|
||||||
setNavigationIcon(code.name.monkey.retromusic.R.drawable.ic_close_white_24dp)
|
|
||||||
setNavigationOnClickListener { activity!!.onBackPressed() }
|
setNavigationOnClickListener { activity!!.onBackPressed() }
|
||||||
setOnMenuItemClickListener(this@ClassicPlayerFragment)
|
setOnMenuItemClickListener(this@ClassicPlayerFragment)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,14 +15,14 @@ import android.widget.SeekBar
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.TintHelper
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
||||||
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener
|
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import code.name.monkey.retromusic.service.MusicService
|
||||||
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
|
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import code.name.monkey.retromusic.util.MusicUtil
|
||||||
import kotlinx.android.synthetic.main.fragment_player_playback_controls.*
|
import kotlinx.android.synthetic.main.fragment_color_player_playback_controls.*
|
||||||
import kotlinx.android.synthetic.main.media_button.*
|
import kotlinx.android.synthetic.main.media_button.*
|
||||||
|
|
||||||
class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
|
@ -99,7 +99,7 @@ class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
title!!.setTextColor(lastPlaybackControlsColor)
|
title!!.setTextColor(lastPlaybackControlsColor)
|
||||||
text!!.setTextColor(lastDisabledPlaybackControlsColor)
|
text!!.setTextColor(lastDisabledPlaybackControlsColor)
|
||||||
|
|
||||||
setProgressBarColor(lastPlaybackControlsColor, lastDisabledPlaybackControlsColor)
|
TintHelper.setTintAuto(progressSlider, lastPlaybackControlsColor, false)
|
||||||
|
|
||||||
volumeFragment?.setTintableColor(lastPlaybackControlsColor)
|
volumeFragment?.setTintableColor(lastPlaybackControlsColor)
|
||||||
|
|
||||||
|
@ -111,17 +111,6 @@ class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
updatePrevNextColor()
|
updatePrevNextColor()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setProgressBarColor(c1: Int, c2: Int) {
|
|
||||||
progressSlider.thumbTintList = ColorStateList.valueOf(c1)
|
|
||||||
val ld = progressSlider.progressDrawable as LayerDrawable
|
|
||||||
|
|
||||||
val clipDrawableProgress = ld.findDrawableByLayerId(android.R.id.progress)
|
|
||||||
clipDrawableProgress.setColorFilter(c1, PorterDuff.Mode.SRC_IN)
|
|
||||||
|
|
||||||
val clipDrawableBackground = ld.findDrawableByLayerId(android.R.id.background)
|
|
||||||
clipDrawableBackground.setColorFilter(c2, PorterDuff.Mode.SRC_IN)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setUpPlayPauseFab() {
|
private fun setUpPlayPauseFab() {
|
||||||
TintHelper.setTintAuto(playPauseButton, Color.WHITE, true)
|
TintHelper.setTintAuto(playPauseButton, Color.WHITE, true)
|
||||||
TintHelper.setTintAuto(playPauseButton, Color.BLACK, false)
|
TintHelper.setTintAuto(playPauseButton, Color.BLACK, false)
|
||||||
|
|
|
@ -16,6 +16,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.TintHelper
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.extensions.ripAlpha
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
||||||
|
@ -113,7 +114,7 @@ class FitPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
color
|
color
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(context!!)
|
ThemeStore.accentColor(context!!).ripAlpha()
|
||||||
}
|
}
|
||||||
|
|
||||||
volumeFragment?.setTintable(colorFinal)
|
volumeFragment?.setTintable(colorFinal)
|
||||||
|
|
|
@ -15,6 +15,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.TintHelper
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.extensions.ripAlpha
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback
|
||||||
|
@ -102,7 +103,7 @@ class FlatPlaybackControlsFragment : AbsPlayerControlsFragment(), Callback {
|
||||||
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
color
|
color
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(context!!)
|
ThemeStore.accentColor(context!!).ripAlpha()
|
||||||
}
|
}
|
||||||
|
|
||||||
updateTextColors(colorFinal)
|
updateTextColors(colorFinal)
|
||||||
|
|
|
@ -21,6 +21,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.TintHelper
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.extensions.ripAlpha
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
||||||
|
@ -111,7 +112,7 @@ class FullPlaybackControlsFragment : AbsPlayerControlsFragment(), PopupMenu.OnMe
|
||||||
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
color
|
color
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(context!!)
|
ThemeStore.accentColor(context!!).ripAlpha()
|
||||||
}
|
}
|
||||||
volumeFragment?.setTintableColor(colorFinal)
|
volumeFragment?.setTintableColor(colorFinal)
|
||||||
text.setTextColor(colorFinal)
|
text.setTextColor(colorFinal)
|
||||||
|
|
|
@ -12,6 +12,8 @@ import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.extensions.hide
|
import code.name.monkey.retromusic.extensions.hide
|
||||||
import code.name.monkey.retromusic.extensions.show
|
import code.name.monkey.retromusic.extensions.show
|
||||||
|
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
|
||||||
|
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import code.name.monkey.retromusic.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
||||||
|
@ -21,8 +23,6 @@ import code.name.monkey.retromusic.loaders.ArtistLoader
|
||||||
import code.name.monkey.retromusic.model.Song
|
import code.name.monkey.retromusic.model.Song
|
||||||
import code.name.monkey.retromusic.model.lyrics.AbsSynchronizedLyrics
|
import code.name.monkey.retromusic.model.lyrics.AbsSynchronizedLyrics
|
||||||
import code.name.monkey.retromusic.model.lyrics.Lyrics
|
import code.name.monkey.retromusic.model.lyrics.Lyrics
|
||||||
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
|
|
||||||
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
|
|
||||||
import code.name.monkey.retromusic.util.NavigationUtil
|
import code.name.monkey.retromusic.util.NavigationUtil
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
|
@ -83,7 +83,7 @@ class FullPlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbac
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun hideLyricsLayout() {
|
private fun hideLyricsLayout() {
|
||||||
lyricsLayout.animate().alpha(0f).setDuration( VISIBILITY_ANIM_DURATION).withEndAction(Runnable {
|
lyricsLayout.animate().alpha(0f).setDuration(VISIBILITY_ANIM_DURATION).withEndAction(Runnable {
|
||||||
if (!isLyricsLayoutBound()) return@Runnable
|
if (!isLyricsLayoutBound()) return@Runnable
|
||||||
lyricsLayout.visibility = View.GONE
|
lyricsLayout.visibility = View.GONE
|
||||||
lyricsLine1.text = null
|
lyricsLine1.text = null
|
||||||
|
@ -119,7 +119,6 @@ class FullPlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbac
|
||||||
|
|
||||||
private fun setUpPlayerToolbar() {
|
private fun setUpPlayerToolbar() {
|
||||||
playerToolbar.apply {
|
playerToolbar.apply {
|
||||||
setNavigationIcon(R.drawable.ic_close_white_24dp)
|
|
||||||
setNavigationOnClickListener { activity!!.onBackPressed() }
|
setNavigationOnClickListener { activity!!.onBackPressed() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.TintHelper
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.extensions.ripAlpha
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
||||||
|
@ -123,7 +124,7 @@ class LockScreenPlayerControlsFragment : AbsPlayerControlsFragment() {
|
||||||
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
color
|
color
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.textColorSecondary(context!!)
|
ThemeStore.textColorSecondary(context!!).ripAlpha()
|
||||||
}
|
}
|
||||||
volumeFragment?.setTintable(colorFinal)
|
volumeFragment?.setTintable(colorFinal)
|
||||||
ViewUtil.setProgressDrawable(progressSlider, ColorUtil.stripAlpha(colorFinal), true)
|
ViewUtil.setProgressDrawable(progressSlider, ColorUtil.stripAlpha(colorFinal), true)
|
||||||
|
|
|
@ -13,6 +13,7 @@ import code.name.monkey.appthemehelper.util.ATHUtil
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.extensions.ripAlpha
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
||||||
|
@ -106,7 +107,7 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() {
|
||||||
lastPlaybackControlsColor = color
|
lastPlaybackControlsColor = color
|
||||||
color
|
color
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.textColorSecondary(context!!)
|
ThemeStore.textColorSecondary(context!!).ripAlpha()
|
||||||
}
|
}
|
||||||
text.setTextColor(colorFinal)
|
text.setTextColor(colorFinal)
|
||||||
ViewUtil.setProgressDrawable(progressSlider, ColorUtil.stripAlpha(colorFinal), true)
|
ViewUtil.setProgressDrawable(progressSlider, ColorUtil.stripAlpha(colorFinal), true)
|
||||||
|
|
|
@ -101,7 +101,6 @@ class PlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbacks {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setUpSubFragments()
|
setUpSubFragments()
|
||||||
setUpPlayerToolbar()
|
setUpPlayerToolbar()
|
||||||
snowfall.visibility = if (PreferenceUtil.getInstance().isSnowFall) View.VISIBLE else View.GONE
|
|
||||||
|
|
||||||
|
|
||||||
//val display = activity?.windowManager?.defaultDisplay
|
//val display = activity?.windowManager?.defaultDisplay
|
||||||
|
|
|
@ -15,6 +15,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.appthemehelper.util.TintHelper
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.extensions.ripAlpha
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
||||||
|
@ -71,10 +72,9 @@ class PlayerPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
color
|
color
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(context!!)
|
ThemeStore.accentColor(context!!).ripAlpha()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context!!, ColorUtil.isColorLight(colorFinal)), false)
|
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context!!, ColorUtil.isColorLight(colorFinal)), false)
|
||||||
TintHelper.setTintAuto(playPauseButton, colorFinal, true)
|
TintHelper.setTintAuto(playPauseButton, colorFinal, true)
|
||||||
ViewUtil.setProgressDrawable(progressSlider, colorFinal)
|
ViewUtil.setProgressDrawable(progressSlider, colorFinal)
|
||||||
|
|
|
@ -33,18 +33,12 @@ import code.name.monkey.retromusic.util.NavigationUtil
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract class AbsSettingsFragment : PreferenceFragmentCompat() {
|
abstract class AbsSettingsFragment : PreferenceFragmentCompat() {
|
||||||
|
|
||||||
internal fun showProToastAndNavigate(message: String) {
|
internal fun showProToastAndNavigate(message: String) {
|
||||||
Toast.makeText(context, "$message is Pro version feature.", Toast.LENGTH_SHORT).show()
|
Toast.makeText(context, "$message is Pro version feature.", Toast.LENGTH_SHORT).show()
|
||||||
|
|
||||||
NavigationUtil.goToProVersion(activity!!)
|
NavigationUtil.goToProVersion(activity!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun setSummary(preference: Preference) {
|
|
||||||
setSummary(preference, PreferenceManager
|
|
||||||
.getDefaultSharedPreferences(preference.context)
|
|
||||||
.getString(preference.key, "")!!)
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun setSummary(preference: Preference, value: Any) {
|
internal fun setSummary(preference: Preference, value: Any) {
|
||||||
val stringValue = value.toString()
|
val stringValue = value.toString()
|
||||||
if (preference is ListPreference) {
|
if (preference is ListPreference) {
|
||||||
|
@ -57,6 +51,12 @@ abstract class AbsSettingsFragment : PreferenceFragmentCompat() {
|
||||||
|
|
||||||
abstract fun invalidateSettings()
|
abstract fun invalidateSettings()
|
||||||
|
|
||||||
|
protected fun setSummary(preference: Preference) {
|
||||||
|
setSummary(preference, PreferenceManager
|
||||||
|
.getDefaultSharedPreferences(preference.context)
|
||||||
|
.getString(preference.key, "")!!)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setDivider(ColorDrawable(Color.TRANSPARENT))
|
setDivider(ColorDrawable(Color.TRANSPARENT))
|
||||||
|
@ -68,19 +68,18 @@ abstract class AbsSettingsFragment : PreferenceFragmentCompat() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDisplayPreferenceDialog(preference: Preference) {
|
override fun onDisplayPreferenceDialog(preference: Preference) {
|
||||||
var dialogFragment: DialogFragment? = null
|
var dialogFragment: DialogFragment? = null// Dialog creation could not be handled here. Try with the super method.
|
||||||
if (preference is NowPlayingScreenPreference) {
|
// The dialog was created (it was one of our custom Preferences), show the dialog for it
|
||||||
dialogFragment = NowPlayingScreenPreferenceDialog.newInstance(preference.key);
|
when (preference) {
|
||||||
} else if (preference is AlbumCoverStylePreference) {
|
is NowPlayingScreenPreference -> dialogFragment = NowPlayingScreenPreferenceDialog.newInstance(preference.key)
|
||||||
dialogFragment = AlbumCoverStylePreferenceDialog.newInstance(preference.key);
|
is AlbumCoverStylePreference -> dialogFragment = AlbumCoverStylePreferenceDialog.newInstance(preference.key)
|
||||||
}
|
is MaterialListPreference -> {
|
||||||
if (preference is MaterialListPreference) {
|
|
||||||
preference.entries
|
preference.entries
|
||||||
dialogFragment = MaterialListPreferenceDialog.newInstance(preference)
|
dialogFragment = MaterialListPreferenceDialog.newInstance(preference)
|
||||||
}
|
}
|
||||||
if (preference is BlacklistPreference) {
|
is BlacklistPreference -> dialogFragment = BlacklistPreferenceDialog.newInstance(preference.key)
|
||||||
dialogFragment = BlacklistPreferenceDialog.newInstance(preference.key)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dialogFragment != null) {
|
if (dialogFragment != null) {
|
||||||
// The dialog was created (it was one of our custom Preferences), show the dialog for it
|
// The dialog was created (it was one of our custom Preferences), show the dialog for it
|
||||||
dialogFragment.setTargetFragment(this, 0);
|
dialogFragment.setTargetFragment(this, 0);
|
||||||
|
@ -89,6 +88,5 @@ abstract class AbsSettingsFragment : PreferenceFragmentCompat() {
|
||||||
// Dialog creation could not be handled here. Try with the super method.
|
// Dialog creation could not be handled here. Try with the super method.
|
||||||
super.onDisplayPreferenceDialog(preference);
|
super.onDisplayPreferenceDialog(preference);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,40 +14,50 @@
|
||||||
|
|
||||||
package code.name.monkey.retromusic.fragments.settings
|
package code.name.monkey.retromusic.fragments.settings
|
||||||
|
|
||||||
import android.os.Build
|
import android.os.Build.VERSION
|
||||||
|
import android.os.Build.VERSION_CODES
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.preference.TwoStatePreference
|
import androidx.preference.TwoStatePreference
|
||||||
import code.name.monkey.retromusic.R
|
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Hemanth S (h4h13).
|
* @author Hemanth S (h4h13).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class NotificationSettingsFragment : AbsSettingsFragment() {
|
class NotificationSettingsFragment : AbsSettingsFragment() {
|
||||||
override fun invalidateSettings() {
|
override fun invalidateSettings() {
|
||||||
val classicNotification: TwoStatePreference = findPreference("classic_notification")!!
|
|
||||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
val classicNotification: TwoStatePreference? = findPreference("classic_notification")
|
||||||
classicNotification.isVisible = false
|
if (VERSION.SDK_INT < VERSION_CODES.N) {
|
||||||
|
classicNotification?.isVisible = false
|
||||||
} else {
|
} else {
|
||||||
classicNotification.isChecked = PreferenceUtil.getInstance().classicNotification()
|
classicNotification?.apply {
|
||||||
classicNotification.setOnPreferenceChangeListener { _, newValue ->
|
isChecked = PreferenceUtil.getInstance().classicNotification()
|
||||||
|
setOnPreferenceChangeListener { _, newValue ->
|
||||||
// Save preference
|
// Save preference
|
||||||
PreferenceUtil.getInstance().setClassicNotification(newValue as Boolean)
|
PreferenceUtil.getInstance().setClassicNotification(newValue as Boolean)
|
||||||
|
invalidateSettings()
|
||||||
val service = MusicPlayerRemote.musicService
|
|
||||||
if (service != null) {
|
|
||||||
service.initNotification()
|
|
||||||
service.updateNotification()
|
|
||||||
}
|
|
||||||
|
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val coloredNotification: TwoStatePreference? = findPreference("colored_notification")
|
||||||
|
if (VERSION.SDK_INT >= VERSION_CODES.O) {
|
||||||
|
coloredNotification?.isEnabled = PreferenceUtil.getInstance().classicNotification()
|
||||||
|
} else {
|
||||||
|
coloredNotification?.apply {
|
||||||
|
isChecked = PreferenceUtil.getInstance().coloredNotification()
|
||||||
|
setOnPreferenceChangeListener { _, newValue ->
|
||||||
|
PreferenceUtil.getInstance().setColoredNotification(newValue as Boolean)
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
addPreferencesFromResource(R.xml.pref_notification)
|
addPreferencesFromResource(code.name.monkey.retromusic.R.xml.pref_notification)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,6 @@ import androidx.preference.Preference
|
||||||
import androidx.preference.TwoStatePreference
|
import androidx.preference.TwoStatePreference
|
||||||
import code.name.monkey.appthemehelper.*
|
import code.name.monkey.appthemehelper.*
|
||||||
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEColorPreference
|
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEColorPreference
|
||||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.App
|
import code.name.monkey.retromusic.App
|
||||||
|
@ -42,15 +41,20 @@ import com.afollestad.materialdialogs.color.colorChooser
|
||||||
class ThemeSettingsFragment : AbsSettingsFragment() {
|
class ThemeSettingsFragment : AbsSettingsFragment() {
|
||||||
|
|
||||||
override fun invalidateSettings() {
|
override fun invalidateSettings() {
|
||||||
val primaryColorPref: ATEColorPreference = findPreference("primary_color")!!
|
val primaryColorPref: ATEColorPreference? = findPreference("primary_color")
|
||||||
primaryColorPref.isVisible = PreferenceUtil.getInstance().generalTheme == R.style.Theme_RetroMusic_Color
|
primaryColorPref?.let {
|
||||||
|
it.isVisible = PreferenceUtil.getInstance().generalTheme == R.style.Theme_RetroMusic_Color
|
||||||
val primaryColor = ThemeStore.primaryColor(activity!!)
|
val primaryColor = ThemeStore.primaryColor(activity!!)
|
||||||
primaryColorPref.setColor(primaryColor, ColorUtil.darkenColor(primaryColor))
|
it.setColor(primaryColor, ColorUtil.darkenColor(primaryColor))
|
||||||
primaryColorPref.setOnPreferenceClickListener {
|
it.setOnPreferenceClickListener {
|
||||||
MaterialDialog(activity!!, BottomSheet()).show {
|
MaterialDialog(activity!!, BottomSheet()).show {
|
||||||
title(code.name.monkey.retromusic.R.string.primary_color)
|
title(R.string.primary_color)
|
||||||
positiveButton(R.string.set)
|
positiveButton(R.string.set)
|
||||||
colorChooser(initialSelection = BLUE, allowCustomArgb = true, colors = PRIMARY_COLORS, subColors = PRIMARY_COLORS_SUB) { _, color ->
|
colorChooser(initialSelection = BLUE,
|
||||||
|
allowCustomArgb = true,
|
||||||
|
colors = PRIMARY_COLORS,
|
||||||
|
subColors = PRIMARY_COLORS_SUB) { _, color ->
|
||||||
|
|
||||||
val theme = if (ColorUtil.isColorLight(color))
|
val theme = if (ColorUtil.isColorLight(color))
|
||||||
PreferenceUtil.getThemeResFromPrefValue("light")
|
PreferenceUtil.getThemeResFromPrefValue("light")
|
||||||
else
|
else
|
||||||
|
@ -65,31 +69,30 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val generalTheme: Preference = findPreference("general_theme")!!
|
val generalTheme: Preference? = findPreference("general_theme")
|
||||||
setSummary(generalTheme)
|
|
||||||
generalTheme.setOnPreferenceChangeListener { _, newValue ->
|
generalTheme?.let {
|
||||||
|
setSummary(it)
|
||||||
|
it.setOnPreferenceChangeListener { _, newValue ->
|
||||||
val theme = newValue as String
|
val theme = newValue as String
|
||||||
|
println(newValue)
|
||||||
if (theme == "color" && !App.isProVersion) {
|
if (theme == "color" && !App.isProVersion) {
|
||||||
primaryColorPref.isVisible = false
|
|
||||||
showProToastAndNavigate("Color theme")
|
showProToastAndNavigate("Color theme")
|
||||||
return@setOnPreferenceChangeListener false
|
return@setOnPreferenceChangeListener false
|
||||||
} else {
|
}
|
||||||
primaryColorPref.isVisible = true
|
|
||||||
|
if (theme == "color") {
|
||||||
|
primaryColorPref?.isVisible = true
|
||||||
}
|
}
|
||||||
|
|
||||||
setSummary(generalTheme, newValue)
|
setSummary(generalTheme, newValue)
|
||||||
|
|
||||||
|
|
||||||
when (theme) {
|
when (theme) {
|
||||||
"light" -> ThemeStore.editTheme(context!!).primaryColor(Color.WHITE).commit()
|
"light" -> ThemeStore.editTheme(context!!).primaryColor(Color.WHITE).commit()
|
||||||
"black" -> ThemeStore.editTheme(context!!).primaryColor(Color.BLACK).commit()
|
"black" -> ThemeStore.editTheme(context!!).primaryColor(Color.BLACK).commit()
|
||||||
"dark" -> ThemeStore.editTheme(context!!).primaryColor(ContextCompat.getColor(context!!, R.color.md_grey_900)).commit()
|
"dark" -> ThemeStore.editTheme(context!!).primaryColor(ContextCompat.getColor(context!!, R.color.md_grey_900)).commit()
|
||||||
"daynight" -> {
|
|
||||||
val color = ATHUtil.resolveColor(context!!, android.R.attr.colorPrimary)
|
|
||||||
ThemeStore.editTheme(context!!).primaryColor(color).commit()
|
|
||||||
}
|
|
||||||
"color" -> ThemeStore.editTheme(context!!).primaryColor(ContextCompat.getColor(context!!, R.color.md_blue_grey_800)).commit()
|
"color" -> ThemeStore.editTheme(context!!).primaryColor(ContextCompat.getColor(context!!, R.color.md_blue_grey_800)).commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,13 +101,13 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
|
||||||
.commit()
|
.commit()
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
|
||||||
activity!!.setTheme(PreferenceUtil.getThemeResFromPrefValue(theme))
|
activity?.setTheme(PreferenceUtil.getThemeResFromPrefValue(theme))
|
||||||
DynamicShortcutManager(activity!!).updateDynamicShortcuts()
|
DynamicShortcutManager(activity!!).updateDynamicShortcuts()
|
||||||
}
|
}
|
||||||
activity!!.recreate()
|
activity?.recreate()
|
||||||
//invalidateSettings();
|
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val accentColorPref: ATEColorPreference = findPreference("accent_color")!!
|
val accentColorPref: ATEColorPreference = findPreference("accent_color")!!
|
||||||
val accentColor = ThemeStore.accentColor(activity!!)
|
val accentColor = ThemeStore.accentColor(activity!!)
|
||||||
|
|
|
@ -17,9 +17,10 @@ package code.name.monkey.retromusic.model;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -20,12 +20,9 @@ import code.name.monkey.retromusic.mvp.BaseView
|
||||||
|
|
||||||
interface HomeContract {
|
interface HomeContract {
|
||||||
|
|
||||||
interface HomeView : BaseView<ArrayList<Home>> {
|
interface HomeView : BaseView<ArrayList<Home>>
|
||||||
fun showEmpty()
|
|
||||||
}
|
|
||||||
|
|
||||||
interface HomePresenter : BasePresenter<HomeView> {
|
interface HomePresenter : BasePresenter<HomeView> {
|
||||||
|
fun homeSections()
|
||||||
fun homeSections();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -59,7 +59,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
|
||||||
if (it.isNotEmpty()) hashSet.add(Home(0, R.string.recent_artists, 0, it, RECENT_ARTISTS, R.drawable.ic_artist_white_24dp))
|
if (it.isNotEmpty()) hashSet.add(Home(0, R.string.recent_artists, 0, it, RECENT_ARTISTS, R.drawable.ic_artist_white_24dp))
|
||||||
view.showData(ArrayList(hashSet))
|
view.showData(ArrayList(hashSet))
|
||||||
}, {
|
}, {
|
||||||
view.showEmpty()
|
view.showEmptyView()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
|
||||||
if (it.isNotEmpty()) hashSet.add(Home(1, R.string.recent_albums, 0, it, RECENT_ALBUMS, R.drawable.ic_album_white_24dp))
|
if (it.isNotEmpty()) hashSet.add(Home(1, R.string.recent_albums, 0, it, RECENT_ALBUMS, R.drawable.ic_album_white_24dp))
|
||||||
view.showData(ArrayList(hashSet))
|
view.showData(ArrayList(hashSet))
|
||||||
}, {
|
}, {
|
||||||
view.showEmpty()
|
view.showEmptyView()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
|
||||||
if (it.isNotEmpty()) hashSet.add(Home(3, R.string.top_albums, 0, it, TOP_ALBUMS, R.drawable.ic_album_white_24dp))
|
if (it.isNotEmpty()) hashSet.add(Home(3, R.string.top_albums, 0, it, TOP_ALBUMS, R.drawable.ic_album_white_24dp))
|
||||||
view.showData(ArrayList(hashSet))
|
view.showData(ArrayList(hashSet))
|
||||||
}, {
|
}, {
|
||||||
view.showEmpty()
|
view.showEmptyView()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
|
||||||
if (it.isNotEmpty()) hashSet.add(Home(2, R.string.top_artists, 0, it, TOP_ARTISTS, R.drawable.ic_artist_white_24dp))
|
if (it.isNotEmpty()) hashSet.add(Home(2, R.string.top_artists, 0, it, TOP_ARTISTS, R.drawable.ic_artist_white_24dp))
|
||||||
view.showData(ArrayList(hashSet))
|
view.showData(ArrayList(hashSet))
|
||||||
}, {
|
}, {
|
||||||
view.showEmpty()
|
view.showEmptyView()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
|
||||||
if (it.isNotEmpty()) hashSet.add(Home(4, R.string.favorites, 0, it, PLAYLISTS, R.drawable.ic_favorite_white_24dp))
|
if (it.isNotEmpty()) hashSet.add(Home(4, R.string.favorites, 0, it, PLAYLISTS, R.drawable.ic_favorite_white_24dp))
|
||||||
view.showData(ArrayList(hashSet))
|
view.showData(ArrayList(hashSet))
|
||||||
}, {
|
}, {
|
||||||
view.showEmpty()
|
view.showEmptyView()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
|
||||||
if (it.isNotEmpty()) hashSet.add(Home(6, R.string.genres, 0, it, GENRES, R.drawable.ic_guitar_acoustic_white_24dp))
|
if (it.isNotEmpty()) hashSet.add(Home(6, R.string.genres, 0, it, GENRES, R.drawable.ic_guitar_acoustic_white_24dp))
|
||||||
view.showData(ArrayList(hashSet))
|
view.showData(ArrayList(hashSet))
|
||||||
}, {
|
}, {
|
||||||
view.showEmpty()
|
view.showEmptyView()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ package code.name.monkey.retromusic.preferences
|
||||||
|
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.graphics.PorterDuff
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -28,6 +29,7 @@ import androidx.preference.DialogPreference
|
||||||
import androidx.preference.PreferenceDialogFragmentCompat
|
import androidx.preference.PreferenceDialogFragmentCompat
|
||||||
import androidx.viewpager.widget.PagerAdapter
|
import androidx.viewpager.widget.PagerAdapter
|
||||||
import androidx.viewpager.widget.ViewPager
|
import androidx.viewpager.widget.ViewPager
|
||||||
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.retromusic.App
|
import code.name.monkey.retromusic.App
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.fragments.NowPlayingScreen
|
import code.name.monkey.retromusic.fragments.NowPlayingScreen
|
||||||
|
@ -35,7 +37,6 @@ import code.name.monkey.retromusic.util.NavigationUtil
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.ViewUtil
|
import code.name.monkey.retromusic.util.ViewUtil
|
||||||
import com.afollestad.materialdialogs.MaterialDialog
|
import com.afollestad.materialdialogs.MaterialDialog
|
||||||
import com.afollestad.materialdialogs.bottomsheets.BottomSheet
|
|
||||||
import com.afollestad.materialdialogs.customview.customView
|
import com.afollestad.materialdialogs.customview.customView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
|
|
||||||
|
@ -54,6 +55,10 @@ class NowPlayingScreenPreference : DialogPreference {
|
||||||
override fun getDialogLayoutResource(): Int {
|
override fun getDialogLayoutResource(): Int {
|
||||||
return mLayoutRes;
|
return mLayoutRes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
icon?.setColorFilter(ThemeStore.textColorSecondary(context), PorterDuff.Mode.SRC_IN)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class NowPlayingScreenPreferenceDialog : PreferenceDialogFragmentCompat(), ViewPager.OnPageChangeListener {
|
class NowPlayingScreenPreferenceDialog : PreferenceDialogFragmentCompat(), ViewPager.OnPageChangeListener {
|
||||||
|
|
|
@ -51,11 +51,11 @@ class MediaButtonIntentReceiver : BroadcastReceiver() {
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val TAG = MediaButtonIntentReceiver::class.java.simpleName
|
val TAG: String = MediaButtonIntentReceiver::class.java.simpleName
|
||||||
private val DEBUG = BuildConfig.DEBUG
|
private val DEBUG = BuildConfig.DEBUG
|
||||||
private val MSG_HEADSET_DOUBLE_CLICK_TIMEOUT = 2
|
private const val MSG_HEADSET_DOUBLE_CLICK_TIMEOUT = 2
|
||||||
|
|
||||||
private val DOUBLE_CLICK = 400
|
private const val DOUBLE_CLICK = 400
|
||||||
|
|
||||||
private var wakeLock: WakeLock? = null
|
private var wakeLock: WakeLock? = null
|
||||||
private var mClickCounter = 0
|
private var mClickCounter = 0
|
||||||
|
|
|
@ -29,7 +29,6 @@ import android.graphics.Point;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.media.audiofx.AudioEffect;
|
import android.media.audiofx.AudioEffect;
|
||||||
import android.media.session.MediaSession;
|
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
@ -86,6 +85,7 @@ import code.name.monkey.retromusic.service.playback.Playback;
|
||||||
import code.name.monkey.retromusic.util.MusicUtil;
|
import code.name.monkey.retromusic.util.MusicUtil;
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||||
import code.name.monkey.retromusic.util.RetroUtil;
|
import code.name.monkey.retromusic.util.RetroUtil;
|
||||||
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
|
||||||
import static code.name.monkey.retromusic.Constants.ACTION_PAUSE;
|
import static code.name.monkey.retromusic.Constants.ACTION_PAUSE;
|
||||||
import static code.name.monkey.retromusic.Constants.ACTION_PENDING_QUIT;
|
import static code.name.monkey.retromusic.Constants.ACTION_PENDING_QUIT;
|
||||||
|
@ -142,6 +142,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
| PlaybackStateCompat.ACTION_STOP
|
| PlaybackStateCompat.ACTION_STOP
|
||||||
| PlaybackStateCompat.ACTION_SEEK_TO;
|
| PlaybackStateCompat.ACTION_SEEK_TO;
|
||||||
private final IBinder musicBind = new MusicBinder();
|
private final IBinder musicBind = new MusicBinder();
|
||||||
|
public boolean pendingQuit = false;
|
||||||
private AppWidgetBig appWidgetBig = AppWidgetBig.Companion.getInstance();
|
private AppWidgetBig appWidgetBig = AppWidgetBig.Companion.getInstance();
|
||||||
private AppWidgetClassic appWidgetClassic = AppWidgetClassic.Companion.getInstance();
|
private AppWidgetClassic appWidgetClassic = AppWidgetClassic.Companion.getInstance();
|
||||||
private AppWidgetSmall appWidgetSmall = AppWidgetSmall.Companion.getInstance();
|
private AppWidgetSmall appWidgetSmall = AppWidgetSmall.Companion.getInstance();
|
||||||
|
@ -178,7 +179,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
public boolean pendingQuit = false;
|
|
||||||
private Playback playback;
|
private Playback playback;
|
||||||
private ArrayList<Song> playingQueue = new ArrayList<>();
|
private ArrayList<Song> playingQueue = new ArrayList<>();
|
||||||
private ArrayList<Song> originalPlayingQueue = new ArrayList<>();
|
private ArrayList<Song> originalPlayingQueue = new ArrayList<>();
|
||||||
|
@ -244,8 +244,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
String action = intent.getAction();
|
String action = intent.getAction();
|
||||||
if (action != null) {
|
if (action != null) {
|
||||||
switch (action) {
|
if (Intent.ACTION_HEADSET_PLUG.equals(action)) {
|
||||||
case Intent.ACTION_HEADSET_PLUG:
|
|
||||||
int state = intent.getIntExtra("state", -1);
|
int state = intent.getIntExtra("state", -1);
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -257,7 +256,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
play();
|
play();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -352,7 +350,10 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
|
|
||||||
PendingIntent mediaButtonReceiverPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0);
|
PendingIntent mediaButtonReceiverPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0);
|
||||||
|
|
||||||
mediaSession = new MediaSessionCompat(this, "RetroMusicPlayer", mediaButtonReceiverComponentName, mediaButtonReceiverPendingIntent);
|
mediaSession = new MediaSessionCompat(this,
|
||||||
|
"RetroMusicPlayer",
|
||||||
|
mediaButtonReceiverComponentName,
|
||||||
|
mediaButtonReceiverPendingIntent);
|
||||||
mediaSession.setCallback(new MediaSessionCompat.Callback() {
|
mediaSession.setCallback(new MediaSessionCompat.Callback() {
|
||||||
@Override
|
@Override
|
||||||
public void onPlay() {
|
public void onPlay() {
|
||||||
|
@ -390,8 +391,9 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mediaSession.setFlags(MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS
|
mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS
|
||||||
| MediaSession.FLAG_HANDLES_MEDIA_BUTTONS);
|
| MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS
|
||||||
|
);
|
||||||
|
|
||||||
mediaSession.setMediaButtonReceiver(mediaButtonReceiverPendingIntent);
|
mediaSession.setMediaButtonReceiver(mediaButtonReceiverPendingIntent);
|
||||||
}
|
}
|
||||||
|
@ -417,31 +419,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
play();
|
play();
|
||||||
break;
|
break;
|
||||||
case ACTION_PLAY_PLAYLIST:
|
case ACTION_PLAY_PLAYLIST:
|
||||||
Playlist playlist = intent.getParcelableExtra(INTENT_EXTRA_PLAYLIST);
|
playFromPlaylist(intent);
|
||||||
int shuffleMode = intent.getIntExtra(INTENT_EXTRA_SHUFFLE_MODE, getShuffleMode());
|
|
||||||
if (playlist != null) {
|
|
||||||
ArrayList<Song> playlistSongs;
|
|
||||||
if (playlist instanceof AbsCustomPlaylist) {
|
|
||||||
playlistSongs = ((AbsCustomPlaylist) playlist).getSongs(getApplicationContext()).blockingFirst();
|
|
||||||
} else {
|
|
||||||
//noinspection unchecked
|
|
||||||
playlistSongs = PlaylistSongsLoader.INSTANCE.getPlaylistSongList(getApplicationContext(), playlist.id).blockingFirst();
|
|
||||||
}
|
|
||||||
if (!playlistSongs.isEmpty()) {
|
|
||||||
if (shuffleMode == SHUFFLE_MODE_SHUFFLE) {
|
|
||||||
int startPosition;
|
|
||||||
startPosition = new Random().nextInt(playlistSongs.size());
|
|
||||||
openQueue(playlistSongs, startPosition, true);
|
|
||||||
setShuffleMode(shuffleMode);
|
|
||||||
} else {
|
|
||||||
openQueue(playlistSongs, 0, true);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Toast.makeText(getApplicationContext(), R.string.playlist_is_empty, Toast.LENGTH_LONG).show();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Toast.makeText(getApplicationContext(), R.string.playlist_is_empty, Toast.LENGTH_LONG).show();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case ACTION_REWIND:
|
case ACTION_REWIND:
|
||||||
back(true);
|
back(true);
|
||||||
|
@ -464,6 +442,45 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
return START_STICKY;
|
return START_STICKY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void playFromPlaylist(Intent intent) {
|
||||||
|
Playlist playlist = intent.getParcelableExtra(INTENT_EXTRA_PLAYLIST);
|
||||||
|
int shuffleMode = intent.getIntExtra(INTENT_EXTRA_SHUFFLE_MODE, getShuffleMode());
|
||||||
|
|
||||||
|
if (playlist != null) {
|
||||||
|
if (playlist instanceof AbsCustomPlaylist) {
|
||||||
|
((AbsCustomPlaylist) playlist).getSongs(getApplicationContext())
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.subscribe(songs -> {
|
||||||
|
playSongs(shuffleMode, songs);
|
||||||
|
}, throwable -> {
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
PlaylistSongsLoader.INSTANCE.getPlaylistSongList(getApplicationContext(), playlist.id)
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.subscribe(songs -> {
|
||||||
|
playSongs(shuffleMode, songs);
|
||||||
|
}, throwable -> {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Toast.makeText(getApplicationContext(), R.string.playlist_is_empty, Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void playSongs(int shuffleMode, ArrayList<Song> playlistSongs) {
|
||||||
|
if (!playlistSongs.isEmpty()) {
|
||||||
|
if (shuffleMode == SHUFFLE_MODE_SHUFFLE) {
|
||||||
|
int startPosition;
|
||||||
|
startPosition = new Random().nextInt(playlistSongs.size());
|
||||||
|
openQueue(playlistSongs, startPosition, true);
|
||||||
|
setShuffleMode(shuffleMode);
|
||||||
|
} else {
|
||||||
|
openQueue(playlistSongs, 0, true);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Toast.makeText(getApplicationContext(), R.string.playlist_is_empty, Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
|
|
|
@ -33,13 +33,13 @@ import code.name.monkey.retromusic.Constants.ACTION_REWIND
|
||||||
import code.name.monkey.retromusic.Constants.ACTION_SKIP
|
import code.name.monkey.retromusic.Constants.ACTION_SKIP
|
||||||
import code.name.monkey.retromusic.Constants.ACTION_TOGGLE_PAUSE
|
import code.name.monkey.retromusic.Constants.ACTION_TOGGLE_PAUSE
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.activities.MainActivity
|
||||||
import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget.Companion.createBitmap
|
import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget.Companion.createBitmap
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import code.name.monkey.retromusic.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.RetroSimpleTarget
|
import code.name.monkey.retromusic.glide.RetroSimpleTarget
|
||||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
|
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import code.name.monkey.retromusic.service.MusicService
|
||||||
import code.name.monkey.retromusic.activities.MainActivity
|
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
import code.name.monkey.retromusic.util.RetroUtil
|
||||||
|
@ -89,8 +89,7 @@ class PlayingNotificationImpl : PlayingNotification() {
|
||||||
.getActivity(service, 0, action, PendingIntent.FLAG_UPDATE_CURRENT)
|
.getActivity(service, 0, action, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
val deleteIntent = buildPendingIntent(service, ACTION_QUIT, null)
|
val deleteIntent = buildPendingIntent(service, ACTION_QUIT, null)
|
||||||
|
|
||||||
val notification = NotificationCompat.Builder(service,
|
val notification = NotificationCompat.Builder(service, NOTIFICATION_CHANNEL_ID)
|
||||||
PlayingNotification.NOTIFICATION_CHANNEL_ID)
|
|
||||||
.setSmallIcon(R.drawable.ic_notification)
|
.setSmallIcon(R.drawable.ic_notification)
|
||||||
.setContentIntent(clickIntent)
|
.setContentIntent(clickIntent)
|
||||||
.setDeleteIntent(deleteIntent)
|
.setDeleteIntent(deleteIntent)
|
||||||
|
|
|
@ -30,13 +30,13 @@ import code.name.monkey.retromusic.Constants.ACTION_REWIND
|
||||||
import code.name.monkey.retromusic.Constants.ACTION_SKIP
|
import code.name.monkey.retromusic.Constants.ACTION_SKIP
|
||||||
import code.name.monkey.retromusic.Constants.ACTION_TOGGLE_PAUSE
|
import code.name.monkey.retromusic.Constants.ACTION_TOGGLE_PAUSE
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.activities.MainActivity
|
||||||
import code.name.monkey.retromusic.glide.GlideApp
|
import code.name.monkey.retromusic.glide.GlideApp
|
||||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.glide.RetroSimpleTarget
|
import code.name.monkey.retromusic.glide.RetroSimpleTarget
|
||||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
|
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
|
||||||
import code.name.monkey.retromusic.model.Song
|
import code.name.monkey.retromusic.model.Song
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import code.name.monkey.retromusic.service.MusicService
|
||||||
import code.name.monkey.retromusic.activities.MainActivity
|
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
import code.name.monkey.retromusic.util.RetroUtil
|
||||||
import code.name.monkey.retromusic.util.RetroUtil.createBitmap
|
import code.name.monkey.retromusic.util.RetroUtil.createBitmap
|
||||||
|
@ -87,8 +87,7 @@ class PlayingNotificationOreo : PlayingNotification() {
|
||||||
.getActivity(service, 0, action, PendingIntent.FLAG_UPDATE_CURRENT)
|
.getActivity(service, 0, action, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
val deleteIntent = buildPendingIntent(service, ACTION_QUIT, null)
|
val deleteIntent = buildPendingIntent(service, ACTION_QUIT, null)
|
||||||
|
|
||||||
val builder = NotificationCompat.Builder(service,
|
val builder = NotificationCompat.Builder(service, NOTIFICATION_CHANNEL_ID)
|
||||||
PlayingNotification.NOTIFICATION_CHANNEL_ID)
|
|
||||||
.setSmallIcon(R.drawable.ic_notification)
|
.setSmallIcon(R.drawable.ic_notification)
|
||||||
.setContentIntent(clickIntent)
|
.setContentIntent(clickIntent)
|
||||||
.setDeleteIntent(deleteIntent)
|
.setDeleteIntent(deleteIntent)
|
||||||
|
|
|
@ -220,7 +220,8 @@ public class ImageUtil {
|
||||||
return inSampleSize;
|
return inSampleSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Bitmap getResizedBitmap(Bitmap image, int maxSize) {
|
@NonNull
|
||||||
|
public static Bitmap getResizedBitmap(@NonNull Bitmap image, int maxSize) {
|
||||||
int width = image.getWidth();
|
int width = image.getWidth();
|
||||||
int height = image.getHeight();
|
int height = image.getHeight();
|
||||||
|
|
||||||
|
|
|
@ -147,8 +147,6 @@ public final class PreferenceUtil {
|
||||||
return R.style.Theme_RetroMusic_Light;
|
return R.style.Theme_RetroMusic_Light;
|
||||||
case "color":
|
case "color":
|
||||||
return R.style.Theme_RetroMusic_Color;
|
return R.style.Theme_RetroMusic_Color;
|
||||||
case "acolor":
|
|
||||||
return R.style.Theme_RetroMusic_Black;
|
|
||||||
case "black":
|
case "black":
|
||||||
return R.style.Theme_RetroMusic_Black;
|
return R.style.Theme_RetroMusic_Black;
|
||||||
case "daynight":
|
case "daynight":
|
||||||
|
@ -306,6 +304,10 @@ public final class PreferenceUtil {
|
||||||
return mPreferences.getBoolean(COLORED_NOTIFICATION, true);
|
return mPreferences.getBoolean(COLORED_NOTIFICATION, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final void setColoredNotification(boolean b) {
|
||||||
|
mPreferences.edit().putBoolean(COLORED_NOTIFICATION, b).apply();
|
||||||
|
}
|
||||||
|
|
||||||
public final boolean classicNotification() {
|
public final boolean classicNotification() {
|
||||||
return mPreferences.getBoolean(CLASSIC_NOTIFICATION, false);
|
return mPreferences.getBoolean(CLASSIC_NOTIFICATION, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ import code.name.monkey.retromusic.R;
|
||||||
public class RetroColorUtil {
|
public class RetroColorUtil {
|
||||||
public static int toolbarColor(@NonNull Context context) {
|
public static int toolbarColor(@NonNull Context context) {
|
||||||
int color = ThemeStore.Companion.primaryColor(context);
|
int color = ThemeStore.Companion.primaryColor(context);
|
||||||
if (ATHUtil.INSTANCE.isWindowBackgroundDark(context)) {
|
if (ATHUtil.INSTANCE.isWindowBackgroundDark(context) && PreferenceUtil.getInstance().getGeneralTheme() != R.style.Theme_RetroMusic_Color) {
|
||||||
return ATHUtil.INSTANCE.resolveColor(context, R.attr.cardBackgroundColor);
|
return ATHUtil.INSTANCE.resolveColor(context, R.attr.cardBackgroundColor);
|
||||||
} else {
|
} else {
|
||||||
return color;
|
return color;
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019 Hemanth Savarala.
|
||||||
|
*
|
||||||
|
* Licensed under the GNU General Public License v3
|
||||||
|
*
|
||||||
|
* This is free software: you can redistribute it and/or modify it under
|
||||||
|
* the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
* See the GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package code.name.monkey.retromusic.views
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.res.ColorStateList
|
||||||
|
import android.util.AttributeSet
|
||||||
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
|
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||||
|
import code.name.monkey.retromusic.R
|
||||||
|
import com.google.android.material.chip.Chip
|
||||||
|
|
||||||
|
class RetroChip @JvmOverloads constructor(
|
||||||
|
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :
|
||||||
|
Chip(context, attrs, defStyleAttr) {
|
||||||
|
init {
|
||||||
|
chipBackgroundColor = ColorStateList.valueOf(ThemeStore.primaryColor(context))
|
||||||
|
val iconColor = ATHUtil.resolveColor(context, R.attr.iconColor)
|
||||||
|
val dividerColor = ATHUtil.resolveColor(context, R.attr.dividerColor)
|
||||||
|
chipIcon?.setTintList(ColorStateList.valueOf(iconColor))
|
||||||
|
setTextColor(iconColor)
|
||||||
|
chipStrokeColor = ColorStateList.valueOf(dividerColor)
|
||||||
|
}
|
||||||
|
}
|
|
@ -30,13 +30,19 @@
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/contentContainer"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:fillViewport="true"
|
android:fillViewport="true"
|
||||||
android:overScrollMode="never">
|
android:overScrollMode="never">
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:id="@+id/contentContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:cardCornerRadius="16dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -94,6 +100,7 @@
|
||||||
|
|
||||||
<include layout="@layout/activity_album_content" />
|
<include layout="@layout/activity_album_content" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/root"
|
android:id="@+id/root"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -30,12 +31,18 @@
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/contentContainer"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:overScrollMode="never">
|
android:overScrollMode="never">
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:id="@+id/contentContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:cardCornerRadius="16dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -88,6 +95,7 @@
|
||||||
android:layout_height="@dimen/status_bar_padding" />
|
android:layout_height="@dimen/status_bar_padding" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
@ -84,8 +84,8 @@
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
app:contentInsetLeft="0dp"
|
app:contentInsetLeft="0dp"
|
||||||
app:contentInsetStart="0dp"
|
app:contentInsetStart="0dp"
|
||||||
app:contentInsetStartWithNavigation="0dp"
|
app:contentInsetStartWithNavigation="0dp"
|
||||||
app:navigationIcon="@drawable/ic_keyboard_backspace_black_24dp"
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:subtitleTextAppearance="@style/TextAppearance.AppCompat.Caption"
|
app:subtitleTextAppearance="@style/TextAppearance.AppCompat.Caption"
|
||||||
app:titleMargin="0dp"
|
app:titleMargin="0dp"
|
||||||
app:titleMarginStart="0dp"
|
app:titleMarginStart="0dp"
|
||||||
|
|
|
@ -18,7 +18,9 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:background="@android:color/transparent" />
|
android:background="@android:color/transparent"
|
||||||
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -78,11 +80,11 @@
|
||||||
android:id="@+id/playingQueueCard"
|
android:id="@+id/playingQueueCard"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
sothree:cardCornerRadius="12dp"
|
|
||||||
android:layout_marginBottom="-8dp"
|
android:layout_marginBottom="-8dp"
|
||||||
app:cardBackgroundColor="?cardBackgroundColor"
|
app:cardBackgroundColor="?cardBackgroundColor"
|
||||||
app:cardElevation="@dimen/card_elevation"
|
app:cardElevation="@dimen/card_elevation"
|
||||||
app:cardUseCompatPadding="false">
|
app:cardUseCompatPadding="false"
|
||||||
|
sothree:cardCornerRadius="12dp">
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -43,9 +43,9 @@
|
||||||
<androidx.cardview.widget.CardView
|
<androidx.cardview.widget.CardView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:layout_margin="12dp"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="8dp"
|
app:cardElevation="8dp"
|
||||||
android:layout_margin="12dp"
|
|
||||||
app:cardPreventCornerOverlap="false"
|
app:cardPreventCornerOverlap="false"
|
||||||
app:cardUseCompatPadding="true">
|
app:cardUseCompatPadding="true">
|
||||||
|
|
||||||
|
@ -119,8 +119,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -63,8 +63,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
|
|
|
@ -31,9 +31,13 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="6dp"
|
app:cardElevation="0dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
app:layout_scrollFlags="scroll|enterAlways">
|
app:layout_scrollFlags="scroll|enterAlways"
|
||||||
|
app:strokeColor="?dividerColor"
|
||||||
|
app:strokeWidth="1dp">
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/toolbar"
|
android:id="@+id/toolbar"
|
||||||
|
|
|
@ -70,8 +70,8 @@
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -105,8 +105,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
@ -12,10 +12,6 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
<com.jetradarmobile.snowfall.SnowfallView
|
|
||||||
android:id="@+id/snowfall"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent" />
|
|
||||||
|
|
||||||
<include layout="@layout/shadow_statusbar_toolbar" />
|
<include layout="@layout/shadow_statusbar_toolbar" />
|
||||||
|
|
||||||
|
@ -67,8 +63,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
|
|
|
@ -73,8 +73,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -41,7 +41,6 @@
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/contentContainer"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="fill_vertical"
|
android:layout_gravity="fill_vertical"
|
||||||
|
@ -52,6 +51,13 @@
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:id="@+id/contentContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:cardCornerRadius="16dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -119,7 +125,7 @@
|
||||||
|
|
||||||
<include layout="@layout/activity_album_content" />
|
<include layout="@layout/activity_album_content" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
|
|
@ -39,18 +39,23 @@
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/contentContainer"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="fill_vertical"
|
android:layout_gravity="fill_vertical"
|
||||||
android:layout_marginStart="128dp"
|
android:layout_marginStart="128dp"
|
||||||
android:layout_marginEnd="128dp"
|
android:layout_marginEnd="128dp"
|
||||||
android:background="@drawable/bg_bottom_sheet_dialog_fragment"
|
|
||||||
android:fillViewport="true"
|
android:fillViewport="true"
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||||
tools:background="@color/md_red_500">
|
tools:background="@color/md_red_500">
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:id="@+id/contentContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:cardCornerRadius="16dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
@ -93,5 +98,6 @@
|
||||||
|
|
||||||
<include layout="@layout/activity_artist_content" />
|
<include layout="@layout/activity_artist_content" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/imageContainer"
|
android:id="@+id/imageContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="228dp"
|
android:layout_height="258dp"
|
||||||
app:layout_collapseMode="parallax">
|
app:layout_collapseMode="parallax">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -63,6 +63,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="6dp"
|
app:cardElevation="6dp"
|
||||||
|
android:layout_marginStart="128dp"
|
||||||
|
android:layout_marginEnd="128dp"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
app:layout_scrollFlags="scroll|enterAlways">
|
app:layout_scrollFlags="scroll|enterAlways">
|
||||||
|
|
||||||
|
|
|
@ -73,10 +73,10 @@
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -31,10 +31,14 @@
|
||||||
android:id="@+id/toolbarContainer"
|
android:id="@+id/toolbarContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="6dp"
|
app:cardElevation="0dp"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
app:layout_scrollFlags="scroll|enterAlways">
|
app:layout_scrollFlags="scroll|enterAlways"
|
||||||
|
app:strokeColor="?dividerColor"
|
||||||
|
app:strokeWidth="1dp">
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/toolbar"
|
android:id="@+id/toolbar"
|
||||||
|
|
|
@ -12,11 +12,6 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
<com.jetradarmobile.snowfall.SnowfallView
|
|
||||||
android:id="@+id/snowfall"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent" />
|
|
||||||
|
|
||||||
<include layout="@layout/shadow_statusbar_toolbar" />
|
<include layout="@layout/shadow_statusbar_toolbar" />
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.FitSystemWindowsLayout
|
<code.name.monkey.retromusic.views.FitSystemWindowsLayout
|
||||||
|
@ -66,7 +61,8 @@
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
||||||
|
|
|
@ -13,10 +13,7 @@
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:paddingStart="24dp"
|
android:padding="24dp">
|
||||||
android:paddingTop="10dp"
|
|
||||||
android:paddingEnd="24dp"
|
|
||||||
android:paddingBottom="10dp">
|
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.CircularImageView
|
<code.name.monkey.retromusic.views.CircularImageView
|
||||||
android:id="@+id/userImage"
|
android:id="@+id/userImage"
|
||||||
|
|
|
@ -42,17 +42,22 @@
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/contentContainer"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="fill_vertical"
|
android:layout_gravity="fill_vertical"
|
||||||
android:layout_marginStart="96dp"
|
android:layout_marginStart="96dp"
|
||||||
android:layout_marginEnd="96dp"
|
android:layout_marginEnd="96dp"
|
||||||
android:background="@drawable/bg_bottom_sheet_dialog_fragment"
|
|
||||||
android:fillViewport="true"
|
android:fillViewport="true"
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:id="@+id/contentContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:cardCornerRadius="16dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
@ -61,6 +66,7 @@
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:baselineAligned="false"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.WidthFitSquareLayout
|
<code.name.monkey.retromusic.views.WidthFitSquareLayout
|
||||||
|
@ -119,9 +125,9 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<include layout="@layout/activity_album_content" />
|
<include layout="@layout/activity_album_content" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
|
|
@ -40,17 +40,22 @@
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/contentContainer"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="fill_vertical"
|
android:layout_gravity="fill_vertical"
|
||||||
android:layout_marginStart="96dp"
|
android:layout_marginStart="96dp"
|
||||||
android:layout_marginEnd="96dp"
|
android:layout_marginEnd="96dp"
|
||||||
android:background="@drawable/bg_bottom_sheet_dialog_fragment"
|
|
||||||
android:fillViewport="true"
|
android:fillViewport="true"
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:id="@+id/contentContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:cardCornerRadius="16dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
@ -96,5 +101,6 @@
|
||||||
<include layout="@layout/activity_artist_content" />
|
<include layout="@layout/activity_artist_content" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
|
@ -98,12 +98,12 @@
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:id="@+id/nameContainer"
|
android:id="@+id/nameContainer"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
|
|
||||||
app:hintEnabled="true">
|
app:hintEnabled="true">
|
||||||
|
|
||||||
|
|
||||||
|
@ -119,12 +119,12 @@
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:id="@+id/bioContainer"
|
android:id="@+id/bioContainer"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
|
|
||||||
app:hintEnabled="true">
|
app:hintEnabled="true">
|
||||||
|
|
||||||
|
|
||||||
|
@ -135,7 +135,8 @@
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:hint="@string/bio"
|
android:hint="@string/bio"
|
||||||
android:inputType="textPersonName|textCapWords|text"
|
android:inputType="textPersonName|textCapWords|text"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
|
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
|
||||||
|
android:visibility="gone" />
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -147,8 +148,8 @@
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
app:iconGravity="textStart"
|
|
||||||
android:padding="16dp"
|
android:padding="16dp"
|
||||||
android:text="@string/save"
|
android:text="@string/save"
|
||||||
app:icon="@drawable/ic_save_white_24dp" />
|
app:icon="@drawable/ic_save_white_24dp"
|
||||||
|
app:iconGravity="textStart" />
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
|
@ -30,7 +30,7 @@
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/imageContainer"
|
android:id="@+id/imageContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="196dp"
|
android:layout_height="228dp"
|
||||||
app:layout_collapseMode="parallax">
|
app:layout_collapseMode="parallax">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -61,6 +61,8 @@
|
||||||
android:id="@+id/toolbarContainer"
|
android:id="@+id/toolbarContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="64dp"
|
||||||
|
android:layout_marginEnd="64dp"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="6dp"
|
app:cardElevation="6dp"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
|
@ -70,8 +72,8 @@
|
||||||
android:id="@+id/toolbar"
|
android:id="@+id/toolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
app:title="@string/search_hint"
|
app:title="@string/search_hint"
|
||||||
app:titleTextAppearance="@style/TextAppearance.MaterialComponents.Body1"
|
|
||||||
app:titleMarginStart="0dp"
|
app:titleMarginStart="0dp"
|
||||||
|
app:titleTextAppearance="@style/TextAppearance.MaterialComponents.Body1"
|
||||||
tools:ignore="UnusedAttribute" />
|
tools:ignore="UnusedAttribute" />
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -81,8 +81,8 @@
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
||||||
|
|
|
@ -32,16 +32,20 @@
|
||||||
android:id="@+id/toolbarContainer"
|
android:id="@+id/toolbarContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="64dp"
|
||||||
|
android:layout_marginEnd="64dp"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="6dp"
|
app:cardElevation="0dp"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
app:layout_scrollFlags="scroll|enterAlways">
|
app:layout_scrollFlags="scroll|enterAlways"
|
||||||
|
app:strokeColor="?dividerColor"
|
||||||
|
app:strokeWidth="1dp">
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/toolbar"
|
android:id="@+id/toolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
app:titleMarginStart="0dp"
|
|
||||||
app:title="@string/search_hint"
|
app:title="@string/search_hint"
|
||||||
|
app:titleMarginStart="0dp"
|
||||||
app:titleTextAppearance="@style/TextAppearance.MaterialComponents.Body1"
|
app:titleTextAppearance="@style/TextAppearance.MaterialComponents.Body1"
|
||||||
tools:ignore="UnusedAttribute" />
|
tools:ignore="UnusedAttribute" />
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
|
|
@ -11,10 +11,7 @@
|
||||||
android:id="@+id/colorGradientBackground"
|
android:id="@+id/colorGradientBackground"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
<com.jetradarmobile.snowfall.SnowfallView
|
|
||||||
android:id="@+id/snowfall"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent" />
|
|
||||||
<include layout="@layout/shadow_statusbar_toolbar" />
|
<include layout="@layout/shadow_statusbar_toolbar" />
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.FitSystemWindowsLayout
|
<code.name.monkey.retromusic.views.FitSystemWindowsLayout
|
||||||
|
@ -29,6 +26,12 @@
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<include layout="@layout/status_bar" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.WidthFitSquareLayout
|
<code.name.monkey.retromusic.views.WidthFitSquareLayout
|
||||||
android:id="@+id/album_cover_container"
|
android:id="@+id/album_cover_container"
|
||||||
|
@ -64,8 +67,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
||||||
|
|
|
@ -46,12 +46,17 @@
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:behavior_overlapTop="24dp"
|
||||||
|
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
android:id="@+id/contentContainer"
|
android:id="@+id/contentContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/bg_circular_top_corners"
|
app:cardCornerRadius="16dp"
|
||||||
app:behavior_overlapTop="24dp"
|
app:cardElevation="0dp">
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -110,5 +115,6 @@
|
||||||
<include layout="@layout/activity_album_content" />
|
<include layout="@layout/activity_album_content" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
|
@ -47,14 +47,19 @@
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/contentContainer"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/bg_circular_top_corners"
|
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
app:behavior_overlapTop="24dp"
|
app:behavior_overlapTop="24dp"
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:id="@+id/contentContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:cardCornerRadius="16dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -96,5 +101,6 @@
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
|
@ -19,9 +19,14 @@
|
||||||
android:id="@+id/searchContainer"
|
android:id="@+id/searchContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="6dp"
|
app:cardElevation="0dp"
|
||||||
app:cardUseCompatPadding="true">
|
app:cardUseCompatPadding="true"
|
||||||
|
app:layout_scrollFlags="scroll|enterAlways"
|
||||||
|
app:strokeColor="?dividerColor"
|
||||||
|
app:strokeWidth="1dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -95,6 +100,6 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="bottom|end"
|
android:layout_gravity="bottom|end"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:text="Keyboard"
|
android:text="@string/keyboard"
|
||||||
app:icon="@drawable/ic_keyboard_white_24dp" />
|
app:icon="@drawable/ic_keyboard_white_24dp" />
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
|
@ -35,7 +35,9 @@
|
||||||
<com.google.android.material.card.MaterialCardView
|
<com.google.android.material.card.MaterialCardView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="12dp"
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="12dp"
|
||||||
app:cardCornerRadius="12dp"
|
app:cardCornerRadius="12dp"
|
||||||
app:cardUseCompatPadding="true">
|
app:cardUseCompatPadding="true">
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="6dp"
|
app:cardElevation="6dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
app:layout_scrollFlags="scroll|enterAlways">
|
app:layout_scrollFlags="scroll|enterAlways">
|
||||||
|
|
||||||
|
|
|
@ -75,8 +75,8 @@
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
app:contentInsetLeft="0dp"
|
app:contentInsetLeft="0dp"
|
||||||
app:contentInsetStart="0dp"
|
app:contentInsetStart="0dp"
|
||||||
app:contentInsetStartWithNavigation="0dp"
|
app:contentInsetStartWithNavigation="0dp"
|
||||||
app:navigationIcon="@drawable/ic_keyboard_backspace_black_24dp"
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:subtitleTextAppearance="@style/TextAppearance.AppCompat.Caption"
|
app:subtitleTextAppearance="@style/TextAppearance.AppCompat.Caption"
|
||||||
app:titleMargin="0dp"
|
app:titleMargin="0dp"
|
||||||
app:titleMarginStart="0dp"
|
app:titleMarginStart="0dp"
|
||||||
|
|
|
@ -76,7 +76,9 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:background="@android:color/transparent" />
|
android:background="@android:color/transparent"
|
||||||
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
@ -100,9 +102,9 @@
|
||||||
sothree:cardCornerRadius="12dp">
|
sothree:cardCornerRadius="12dp">
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:background="?cardBackgroundColor"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?cardBackgroundColor">
|
||||||
|
|
||||||
<!--This is necessary for the drag sorting to work at the top-->
|
<!--This is necessary for the drag sorting to work at the top-->
|
||||||
<View
|
<View
|
||||||
|
|
|
@ -115,8 +115,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -43,16 +43,13 @@
|
||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
tools:ignore="RtlHardcoded,RtlSymmetry" />
|
tools:ignore="RtlHardcoded,RtlSymmetry" />
|
||||||
|
|
||||||
<SeekBar
|
<androidx.appcompat.widget.AppCompatSeekBar
|
||||||
android:id="@+id/progressSlider"
|
android:id="@+id/progressSlider"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@id/songTotalTime"
|
android:layout_toLeftOf="@id/songTotalTime"
|
||||||
android:layout_toRightOf="@id/songCurrentProgress"
|
android:layout_toRightOf="@id/songCurrentProgress"
|
||||||
android:maxHeight="3dp"
|
|
||||||
android:progressDrawable="@drawable/color_progress_seek"
|
|
||||||
android:splitTrack="false"
|
|
||||||
tools:ignore="RtlHardcoded,UnusedAttribute"
|
tools:ignore="RtlHardcoded,UnusedAttribute"
|
||||||
tools:progress="20" />
|
tools:progress="20" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
|
@ -48,8 +48,8 @@
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -40,8 +40,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.WidthFitSquareLayout
|
<code.name.monkey.retromusic.views.WidthFitSquareLayout
|
||||||
|
|
|
@ -58,7 +58,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp">
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -29,7 +29,11 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="6dp"
|
app:cardElevation="0dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
app:strokeColor="?dividerColor"
|
||||||
|
app:strokeWidth="1dp"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
app:layout_scrollFlags="scroll|enterAlways">
|
app:layout_scrollFlags="scroll|enterAlways">
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,10 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:strokeColor="@color/black_color"
|
app:cardElevation="0dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
app:strokeColor="?dividerColor"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
app:layout_scrollFlags="scroll|enterAlways"
|
app:layout_scrollFlags="scroll|enterAlways"
|
||||||
app:strokeWidth="1dp">
|
app:strokeWidth="1dp">
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
<code.name.monkey.retromusic.views.IconImageView
|
<code.name.monkey.retromusic.views.IconImageView
|
||||||
android:layout_width="96dp"
|
android:layout_width="96dp"
|
||||||
android:layout_height="96dp"
|
android:layout_height="96dp"
|
||||||
app:srcCompat="@drawable/ic_disc_full_black_24dp" />
|
app:srcCompat="@drawable/ic_music_note_off_white_24dp" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/emptyText"
|
android:id="@+id/emptyText"
|
||||||
|
|
|
@ -60,8 +60,8 @@
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
||||||
|
|
|
@ -92,8 +92,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
||||||
|
|
|
@ -12,10 +12,6 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
<com.jetradarmobile.snowfall.SnowfallView
|
|
||||||
android:id="@+id/snowfall"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent" />
|
|
||||||
|
|
||||||
<include layout="@layout/shadow_statusbar_toolbar" />
|
<include layout="@layout/shadow_statusbar_toolbar" />
|
||||||
|
|
||||||
|
@ -72,8 +68,8 @@
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
<include layout="@layout/status_bar" />
|
<include layout="@layout/status_bar" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.WidthFitSquareLayout
|
<code.name.monkey.retromusic.views.WidthFitSquareLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
@ -61,8 +60,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
android:navigationIcon="@drawable/ic_close_white_24dp"
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
</code.name.monkey.retromusic.views.FitSystemWindowsLayout>
|
||||||
|
|
|
@ -101,7 +101,8 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/playerToolbar"
|
android:id="@+id/playerToolbar"
|
||||||
style="@style/Toolbar"
|
style="@style/Toolbar"
|
||||||
app:navigationIcon="@drawable/ic_close_white_24dp" />
|
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||||
|
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/viewGroup"
|
android:id="@+id/viewGroup"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -21,8 +22,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:maxHeight="3dp"
|
tools:progress="20" />
|
||||||
android:progressDrawable="@drawable/color_progress_seek" />
|
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.IconImageView
|
<code.name.monkey.retromusic.views.IconImageView
|
||||||
android:id="@+id/volumeUp"
|
android:id="@+id/volumeUp"
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/contentContainer"
|
android:id="@+id/contentContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -40,19 +41,20 @@
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
tools:visibility="visible"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.IconImageView
|
<code.name.monkey.retromusic.views.IconImageView
|
||||||
android:layout_width="96dp"
|
android:layout_width="96dp"
|
||||||
android:layout_height="96dp"
|
android:layout_height="96dp"
|
||||||
app:srcCompat="@drawable/ic_disc_full_black_24dp" />
|
app:srcCompat="@drawable/ic_play_arrow_white_64dp" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/emptyText"
|
android:id="@+id/emptyText"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:text="@string/empty"
|
android:text="@string/start_play_music"
|
||||||
android:textColor="?android:textColorSecondary" />
|
android:textColor="?android:textColorSecondary" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
|
@ -26,7 +26,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="4dp"
|
android:layout_marginStart="4dp"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="4dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:padding="10dp"
|
android:padding="10dp"
|
||||||
android:text="@string/action_play_all"
|
android:text="@string/action_play_all"
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="4dp"
|
android:layout_marginStart="4dp"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="4dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:padding="10dp"
|
android:padding="10dp"
|
||||||
android:text="@string/shuffle"
|
android:text="@string/shuffle"
|
||||||
|
|
|
@ -1,37 +1,25 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:paddingBottom="12dp">
|
android:paddingBottom="12dp">
|
||||||
|
|
||||||
<LinearLayout
|
<code.name.monkey.retromusic.views.RetroChip
|
||||||
|
android:id="@+id/chipHead"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="12dp"
|
android:layout_margin="12dp"
|
||||||
android:background="@drawable/material_design_outline"
|
android:fontFamily="@font/circular"
|
||||||
android:backgroundTint="?dividerColor"
|
android:textColor="?android:textColorSecondary"
|
||||||
android:gravity="center_vertical"
|
app:chipIconTint="?iconColor"
|
||||||
android:paddingStart="12dp"
|
app:chipStrokeColor="?dividerColor"
|
||||||
android:paddingTop="6dp"
|
app:chipStrokeWidth="1dp"
|
||||||
android:paddingEnd="12dp"
|
app:iconStartPadding="8dp"
|
||||||
android:paddingBottom="6dp">
|
tools:chipIcon="@drawable/ic_person_white_24dp"
|
||||||
|
tools:text="@string/for_you" />
|
||||||
<code.name.monkey.retromusic.views.IconImageView
|
|
||||||
android:id="@+id/sectionIcon"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginEnd="12dp"
|
|
||||||
app:srcCompat="@drawable/ic_person_white_24dp" />
|
|
||||||
|
|
||||||
<code.name.monkey.appthemehelper.common.views.ATESecondaryTextView
|
|
||||||
android:id="@+id/sectionTitle"
|
|
||||||
style="@style/SubTitleTextAppearance"
|
|
||||||
android:padding="0dp"
|
|
||||||
android:text="@string/for_you" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.MetalRecyclerViewPager
|
<code.name.monkey.retromusic.views.MetalRecyclerViewPager
|
||||||
android:id="@+id/recyclerView"
|
android:id="@+id/recyclerView"
|
||||||
|
|
|
@ -2,37 +2,24 @@
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/recentArtistContainer"
|
android:id="@+id/recentArtistContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<code.name.monkey.retromusic.views.RetroChip
|
||||||
|
android:id="@+id/chipHead"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="12dp"
|
android:layout_margin="12dp"
|
||||||
android:background="@drawable/material_design_outline"
|
android:fontFamily="@font/circular"
|
||||||
android:backgroundTint="?dividerColor"
|
app:chipIconTint="?iconColor"
|
||||||
android:gravity="center_vertical"
|
app:chipStrokeColor="?dividerColor"
|
||||||
android:paddingStart="12dp"
|
app:chipStrokeWidth="1dp"
|
||||||
android:paddingTop="6dp"
|
app:iconStartPadding="8dp"
|
||||||
android:paddingEnd="12dp"
|
tools:chipIcon="@drawable/ic_person_white_24dp"
|
||||||
android:paddingBottom="6dp">
|
tools:text="@string/for_you" />
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.IconImageView
|
|
||||||
android:id="@+id/sectionIcon"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginEnd="12dp"
|
|
||||||
app:srcCompat="@drawable/ic_person_white_24dp" />
|
|
||||||
|
|
||||||
<code.name.monkey.appthemehelper.common.views.ATESecondaryTextView
|
|
||||||
android:id="@+id/sectionTitle"
|
|
||||||
style="@style/SubTitleTextAppearance"
|
|
||||||
android:padding="0dp"
|
|
||||||
android:text="@string/for_you" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/recyclerView"
|
android:id="@+id/recyclerView"
|
||||||
|
|
|
@ -1,11 +1,55 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
<string name="synced_lyrics">扫描到的歌词</string>
|
||||||
|
<string name="songs">歌曲</string>
|
||||||
|
<string name="action_play_all">全部播放</string>
|
||||||
|
<string name="search_hint">搜索您的资料库…</string>
|
||||||
|
<string name="recent_albums">您最近播放过的专辑</string>
|
||||||
|
<string name="recent_artists">您最近听过 TA 们的歌</string>
|
||||||
|
<string name="small">小专辑</string>
|
||||||
|
<string name="welcome">欢迎您,</string>
|
||||||
|
<string name="top_albums">脱颖专辑</string>
|
||||||
|
<string name="top_artists">脱颖艺人</string>
|
||||||
|
<string name="pref_title_blacklist">黑名单</string>
|
||||||
|
<string name="set_artist_image">设置艺人图片</string>
|
||||||
|
<string name="reset_artist_image">重置艺人图片</string>
|
||||||
<string name="accent_color">强调色</string>
|
<string name="accent_color">强调色</string>
|
||||||
<string name="accent_color_desc">主题强调色,默认为蓝绿色。</string>
|
<string name="pref_title_album_cover_style">封面主题</string>
|
||||||
|
<string name="accent_color_desc">主题强调色,默认为蓝绿。</string>
|
||||||
|
<string name="profile">个人资料</string>
|
||||||
<string name="action_about">关于</string>
|
<string name="action_about">关于</string>
|
||||||
|
<string name="report_bug">反馈漏洞</string>
|
||||||
|
<string name="bug_report_use_account">使用 GitHub 账号发送反馈</string>
|
||||||
|
<string name="save_playlist_title">另存为文件</string>
|
||||||
|
<string name="save_playlists_title">另存为文件</string>
|
||||||
|
<string name="login">登陆</string>
|
||||||
|
<string name="bug_report_manual">手动发送</string>
|
||||||
|
<string name="you_will_be_forwarded_to_the_issue_tracker_website">您将会被导向至漏洞追踪器页面</string>
|
||||||
|
<string name="telegram_group_summary">加入我们的 Telegram 群组,与万千用户,以及我们的开发人员一起,解决漏洞,交流讨论,谈天说地</string>
|
||||||
|
<string name="bug_report_issue">问题</string>
|
||||||
|
<string name="title">标题</string>
|
||||||
|
<string name="description">描述</string>
|
||||||
|
<string name="username">用户名</string>
|
||||||
|
<string name="password">密码</string>
|
||||||
|
<string name="device_info">设备信息</string>
|
||||||
|
<string name="report_an_issue">反馈问题</string>
|
||||||
|
<string name="bug_report_no_username">请输入正确的 GitHub 用户名</string>
|
||||||
|
<string name="bug_report_no_password">请输入正确的 GitHub 密码</string>
|
||||||
|
<string name="bug_report_no_title">请输入问题的标题</string>
|
||||||
|
<string name="support_development">协助开发</string>
|
||||||
|
<string name="bug_report_no_description">请输入您对问题的描述</string>
|
||||||
|
<string name="bug_report_uploading">正在向 GitHub 提交您的问题…</string>
|
||||||
|
<string name="bug_report_failed">无法发送您的问题</string>
|
||||||
|
<string name="bug_report_failed_wrong_credentials">用户名或密码错误</string>
|
||||||
|
<string name="bug_report_failed_invalid_token">无效的访问令牌,请联系应用开发者。</string>
|
||||||
|
<string name="bug_report_failed_issues_not_available">未对所选存储库启用问题,请联系应用开发者。</string>
|
||||||
|
<string name="bug_report_failed_unknown">发生了意料之外的问题,请联系应用开发者</string>
|
||||||
|
<string name="translate">翻译</string>
|
||||||
|
<string name="translate_community">帮助我们使这款播放器以您的语言呈现内容</string>
|
||||||
|
<string name="copied_device_info_to_clipboard">已经把您的设备信息复制到剪贴板了</string>
|
||||||
<string name="action_add_to_favorites">添加到收藏夹</string>
|
<string name="action_add_to_favorites">添加到收藏夹</string>
|
||||||
<string name="action_add_to_playing_queue">添加到播放队列</string>
|
<string name="action_add_to_playing_queue">添加到播放队列</string>
|
||||||
<string name="action_add_to_playlist">添加到播放列表…</string>
|
<string name="action_add_to_playlist">添加到播放列表</string>
|
||||||
<string name="action_clear_playing_queue">清空播放队列</string>
|
<string name="action_clear_playing_queue">清空播放队列</string>
|
||||||
<string name="action_clear_playlist">清空播放列表</string>
|
<string name="action_clear_playlist">清空播放列表</string>
|
||||||
<string name="action_delete">删除</string>
|
<string name="action_delete">删除</string>
|
||||||
|
@ -37,12 +81,13 @@
|
||||||
<string name="action_settings">"设置"</string>
|
<string name="action_settings">"设置"</string>
|
||||||
<string name="action_share">分享</string>
|
<string name="action_share">分享</string>
|
||||||
<string name="action_shuffle_all">随机播放全部</string>
|
<string name="action_shuffle_all">随机播放全部</string>
|
||||||
<string name="action_shuffle_playlist">随机播放播放列表</string>
|
<string name="action_shuffle_playlist">随机播放列表</string>
|
||||||
<string name="action_sleep_timer">睡眠定时器</string>
|
<string name="action_sleep_timer">睡眠定时器</string>
|
||||||
<string name="action_sort_order">排序</string>
|
<string name="action_sort_order">排序</string>
|
||||||
<string name="action_tag_editor">标签编辑器</string>
|
<string name="action_tag_editor">标签编辑器</string>
|
||||||
<string name="adaptive">自适应</string>
|
<string name="adaptive">自适应</string>
|
||||||
<string name="add_action">添加</string>
|
<string name="add_action">添加</string>
|
||||||
|
<string name="your_account_data_is_only_used_for_authentication">您的帐户数据将仅用于身份验证</string>
|
||||||
<string name="add_photo">添加\n头像</string>
|
<string name="add_photo">添加\n头像</string>
|
||||||
<string name="add_playlist_title">"添加到播放列表"</string>
|
<string name="add_playlist_title">"添加到播放列表"</string>
|
||||||
<string name="added_title_to_playing_queue">"已加入播放队列"</string>
|
<string name="added_title_to_playing_queue">"已加入播放队列"</string>
|
||||||
|
@ -53,48 +98,60 @@
|
||||||
<string name="albums">专辑</string>
|
<string name="albums">专辑</string>
|
||||||
<!-- Android Auto -->
|
<!-- Android Auto -->
|
||||||
<string name="always">始终</string>
|
<string name="always">始终</string>
|
||||||
<string name="app_share">嘿快来瞧瞧这个酷炫的音乐播放器:https://play.google.com/store/apps/details?id=%s</string>
|
<string name="app_share">妈耶!这个音乐播放器帅到爆炸!https://play.google.com/store/apps/details?id=%s</string>
|
||||||
<!-- App Shortcuts -->
|
<!-- App Shortcuts -->
|
||||||
<string name="app_shortcut_last_added_long">@string/last_added</string>
|
<string name="app_shortcut_last_added_long">@string/last_added</string>
|
||||||
<string name="app_shortcut_last_added_short">@string/last_added</string>
|
<string name="app_shortcut_last_added_short">@string/last_added</string>
|
||||||
<string name="app_shortcut_shuffle_all_long">@string/action_shuffle_all</string>
|
<string name="app_shortcut_shuffle_all_long">@string/action_shuffle_all</string>
|
||||||
<string name="app_shortcut_top_tracks_long">@string/my_top_tracks</string>
|
<string name="app_shortcut_top_tracks_long">@string/my_top_tracks</string>
|
||||||
<string name="app_shortcut_shuffle_all_short">随机播放</string>
|
<string name="app_shortcut_shuffle_all_short">随机播放</string>
|
||||||
<string name="app_shortcut_top_tracks_short">顶级轨道</string>
|
<string name="app_shortcut_top_tracks_short">畅响天籁</string>
|
||||||
<string name="app_widget_big_name">Retro音乐 - 大</string>
|
<string name="app_widget_big_name">Retro Music - 大</string>
|
||||||
<string name="app_widget_card_name">Retro Music - 卡片模式</string>
|
<string name="app_widget_card_name">Retro Music - 卡片模式</string>
|
||||||
<string name="app_widget_classic_name">Retro Music - 经典模式</string>
|
<string name="app_widget_classic_name">Retro Music - 经典模式</string>
|
||||||
<string name="app_widget_small_name">Retro音乐 - 小</string>
|
<string name="app_widget_small_name">Retro Music - 小</string>
|
||||||
<string name="artist">歌手</string>
|
<string name="artist">歌手</string>
|
||||||
<string name="artists">歌手</string>
|
<string name="artists">歌手</string>
|
||||||
<string name="audio_focus_denied">音频焦点丢失</string>
|
<string name="audio_focus_denied">音频焦点丢失</string>
|
||||||
<string name="audio_settings_summary">更改声音设置和均衡器设置</string>
|
<string name="audio_settings_summary">更改声音设置和均衡器设置</string>
|
||||||
<string name="bass_boost">低音增强</string>
|
<string name="bass_boost">低音增强</string>
|
||||||
<string name="biography">简介</string>
|
<string name="biography">简介</string>
|
||||||
<string name="black_theme_name">纯黑</string>
|
<string name="black_theme_name">纯粹黑</string>
|
||||||
<string name="blacklist">黑名单</string>
|
<string name="blacklist">黑名单</string>
|
||||||
<string name="blur">模糊</string>
|
<string name="blur">模糊</string>
|
||||||
<string name="blur_card">模糊卡片</string>
|
<string name="blur_card">模糊卡片</string>
|
||||||
<string name="pref_keep_screen_on_title">屏幕常亮</string>
|
<string name="pref_keep_screen_on_title">屏幕常亮</string>
|
||||||
<string name="pref_keep_screen_on_summary">请注意,启用此功能可能会降低电池续航时间</string>
|
<string name="pref_keep_screen_on_summary">请注意,启用此功能可能会降低电池续航时间</string>
|
||||||
<string name="pref_blur_amount_title">模糊量</string>
|
<string name="pref_blur_amount_title">模糊度</string>
|
||||||
<string name="pref_blur_amount_summary">应用于模糊主题,数量越低加载越快</string>
|
<string name="pref_blur_amount_summary">应用于模糊主题,数量越低,加载越快</string>
|
||||||
<string name="cancel_current_timer">取消</string>
|
<string name="cancel_current_timer">取消</string>
|
||||||
<string name="card">卡片</string>
|
<string name="card">卡片</string>
|
||||||
<string name="card_color_style">彩色卡片</string>
|
<string name="card_color_style">彩色卡片式</string>
|
||||||
<string name="card_circular_style">圆形</string>
|
<string name="card_circular_style">圆形</string>
|
||||||
|
<string name="select_banner_photo">背景图</string>
|
||||||
|
<string name="new_banner_photo">选择一张新背景图</string>
|
||||||
|
<string name="remove_banner_photo">移除当前背景图</string>
|
||||||
|
<string name="new_profile_photo">选择一张新头像</string>
|
||||||
<string name="image">图片</string>
|
<string name="image">图片</string>
|
||||||
<string name="card_style">卡片</string>
|
<string name="set">应用</string>
|
||||||
|
<string name="card_style">卡片式</string>
|
||||||
|
<string name="today">当天</string>
|
||||||
|
<string name="this_month">一个月内</string>
|
||||||
|
<string name="this_week">一周内</string>
|
||||||
|
<string name="this_year">一年内</string>
|
||||||
|
<string name="pref_filter_song_title">筛选歌曲时长</string>
|
||||||
<string name="cast">投射</string>
|
<string name="cast">投射</string>
|
||||||
<string name="changelog">更新日志</string>
|
<string name="changelog">更新日志</string>
|
||||||
<string name="changelog_summary">在Telegram频道上维护更新日志</string>
|
<string name="changelog_summary">在 Telegram 频道上维护更新日志</string>
|
||||||
<string name="clear_action">透明</string>
|
<string name="pref_summary_blacklist">被列入黑名单的文件夹中的音频,将不会出现在播放器中</string>
|
||||||
|
<string name="clear_action">清除</string>
|
||||||
<string name="clear_blacklist">清空黑名单</string>
|
<string name="clear_blacklist">清空黑名单</string>
|
||||||
<string name="clear_playlist_title">清除播放列表</string>
|
<string name="clear_playlist_title">清除播放列表</string>
|
||||||
<string name="clear_playlist_x"><![CDATA[\u786e\u8ba4\u6e05\u9664\u64ad\u653e\u5217\u8868 <b>%1$s</b> \u5417\uff1f\u8bf7\u6ce8\u610f\uff0c\u6b64\u64cd\u4f5c\u4e0d\u53ef\u6062\u590d\uff01]]></string>
|
<string name="clear_playlist_x"><![CDATA[\u786e\u8ba4\u6e05\u9664\u64ad\u653e\u5217\u8868 <b>%1$s</b> \u5417\uff1f\u8bf7\u6ce8\u610f\uff0c\u6b64\u64cd\u4f5c\u4e0d\u53ef\u6062\u590d\uff01]]></string>
|
||||||
<string name="close_notification">关闭</string>
|
<string name="close_notification">关闭</string>
|
||||||
<string name="color">颜色</string>
|
<string name="color">多彩</string>
|
||||||
<string name="color_theme_name">颜色</string>
|
<string name="color_theme_name">自定义</string>
|
||||||
|
<string name="primary_color_desc">播放器的主色调,默认蓝灰色。使用深色效果更佳。</string>
|
||||||
<string name="colors">更多颜色</string>
|
<string name="colors">更多颜色</string>
|
||||||
<string name="could_not_create_playlist">\u4e0d\u80fd\u521b\u5efa\u64ad\u653e\u5217\u8868</string>
|
<string name="could_not_create_playlist">\u4e0d\u80fd\u521b\u5efa\u64ad\u653e\u5217\u8868</string>
|
||||||
<string name="could_not_download_album_cover">"\u65e0\u6cd5\u4e0b\u8f7d\u5339\u914d\u7684\u4e13\u8f91\u5c01\u9762"</string>
|
<string name="could_not_download_album_cover">"\u65e0\u6cd5\u4e0b\u8f7d\u5339\u914d\u7684\u4e13\u8f91\u5c01\u9762"</string>
|
||||||
|
@ -104,7 +161,7 @@
|
||||||
<string name="created_playlist_x">已创建播放列表 %1$s</string>
|
<string name="created_playlist_x">已创建播放列表 %1$s</string>
|
||||||
<string name="credit_title">开发团队和贡献者</string>
|
<string name="credit_title">开发团队和贡献者</string>
|
||||||
<string name="currently_listening_to_x_by_x">当前通过 %2$s 收听 %1$s</string>
|
<string name="currently_listening_to_x_by_x">当前通过 %2$s 收听 %1$s</string>
|
||||||
<string name="dark_theme_name">浅黑</string>
|
<string name="dark_theme_name">深空灰</string>
|
||||||
<string name="default_hint">没有歌词</string>
|
<string name="default_hint">没有歌词</string>
|
||||||
<string name="delete_playlist_title">删除播放列表</string>
|
<string name="delete_playlist_title">删除播放列表</string>
|
||||||
<string name="delete_playlist_x"><![CDATA[确认删除播放列表 <b>%1$s</b> 吗?]]></string>
|
<string name="delete_playlist_x"><![CDATA[确认删除播放列表 <b>%1$s</b> 吗?]]></string>
|
||||||
|
@ -113,11 +170,13 @@
|
||||||
<string name="delete_x_playlists"><![CDATA[删除播放列表 <b>%1$s</b> 吗?]]></string>
|
<string name="delete_x_playlists"><![CDATA[删除播放列表 <b>%1$s</b> 吗?]]></string>
|
||||||
<string name="delete_x_songs"><![CDATA[删除歌曲 <b>%1$s</b> 吗?]]></string>
|
<string name="delete_x_songs"><![CDATA[删除歌曲 <b>%1$s</b> 吗?]]></string>
|
||||||
<string name="deleted_x_songs">已删除 %1$d 首歌曲</string>
|
<string name="deleted_x_songs">已删除 %1$d 首歌曲</string>
|
||||||
<string name="do_you_want_to_clear_the_blacklist">你想清除黑名单吗?</string>
|
<string name="do_you_want_to_clear_the_blacklist">您想清除黑名单吗?</string>
|
||||||
<string name="do_you_want_to_remove_from_the_blacklist"><![CDATA[要从黑名单中删除 <b>%1$s</b> 吗?]]></string>
|
<string name="do_you_want_to_remove_from_the_blacklist"><![CDATA[要从黑名单中删除 <b>%1$s</b> 吗?]]></string>
|
||||||
<string name="donate">捐赠</string>
|
<string name="donate">赞助</string>
|
||||||
<string name="donate_summary">如果你觉得我的应用好用,你可以在这里捐赠一些资金,你的支持是我开发的动力</string>
|
<string name="pinterest_page_summary">关注我们的 Pinterest 主页,随时随地了解我们的设计灵感吧!</string>
|
||||||
<string name="donation_header">用以下方式捐赠:</string>
|
<string name="donate_summary">如果您觉得这款播放器还对你的胃口,欢迎您为这款应用赞助!您的支持,就是我最大的动力!</string>
|
||||||
|
<string name="rate_on_google_play_summary">感觉还不错?5 星好评一下怎么样!或者您也可以把您的想法留在评论里,帮助这款播放器锦上添花!</string>
|
||||||
|
<string name="donation_header">您可以使用以下方式赞助我们:</string>
|
||||||
<string name="download_from_last_fm">从 Last.fm 下载</string>
|
<string name="download_from_last_fm">从 Last.fm 下载</string>
|
||||||
<string name="edit_cover">编辑专辑封面</string>
|
<string name="edit_cover">编辑专辑封面</string>
|
||||||
<string name="empty">空空如也</string>
|
<string name="empty">空空如也</string>
|
||||||
|
@ -126,20 +185,21 @@
|
||||||
<string name="favorites">收藏夹</string>
|
<string name="favorites">收藏夹</string>
|
||||||
<string name="flat">扁平</string>
|
<string name="flat">扁平</string>
|
||||||
<string name="folders">文件夹</string>
|
<string name="folders">文件夹</string>
|
||||||
<string name="for_you">给你的</string>
|
<string name="for_you">专属于您</string>
|
||||||
<string name="full">满</string>
|
<string name="full_card">卡片式全屏幕</string>
|
||||||
|
<string name="full">全屏幕</string>
|
||||||
<string name="general_settings_summary">更改应用的主题和颜色</string>
|
<string name="general_settings_summary">更改应用的主题和颜色</string>
|
||||||
<string name="general_settings_title">界面外观</string>
|
<string name="general_settings_title">界面外观</string>
|
||||||
<string name="genre">流派</string>
|
<string name="genre">流派</string>
|
||||||
<string name="genres">流派</string>
|
<string name="genres">流派</string>
|
||||||
<string name="git_hub_summary">在GitHub上Fork项目</string>
|
<string name="git_hub_summary">在 GitHub 上 Fork 项目</string>
|
||||||
<string name="google_plus_community">加入Google+社区获得帮助或者更新信息</string>
|
<string name="google_plus_community">加入 Google+ 社区获得帮助或者更新信息</string>
|
||||||
<string name="history">历史记录</string>
|
<string name="history">历史记录</string>
|
||||||
<string name="home">主页</string>
|
<string name="home">主页</string>
|
||||||
<string name="image_settings_summary">更改艺术家图片下载设置</string>
|
<string name="image_settings_summary">更改艺术家图片下载设置</string>
|
||||||
<string name="inserted_x_songs_into_playlist_x">将歌曲%1$d加入%2$s列表</string>
|
<string name="inserted_x_songs_into_playlist_x">将歌曲 %1$d 加入 %2$s 列表</string>
|
||||||
<string name="instagram_page">Instagram</string>
|
<string name="instagram_page">Instagram</string>
|
||||||
<string name="instagram_page_summary">分享你的设置到Instagram</string>
|
<string name="instagram_page_summary">分享您的设置到 Instagram</string>
|
||||||
<string name="label_bit_rate">比特率</string>
|
<string name="label_bit_rate">比特率</string>
|
||||||
<string name="label_file_format">格式</string>
|
<string name="label_file_format">格式</string>
|
||||||
<string name="label_file_name">文件名</string>
|
<string name="label_file_name">文件名</string>
|
||||||
|
@ -147,47 +207,89 @@
|
||||||
<string name="label_file_size">大小</string>
|
<string name="label_file_size">大小</string>
|
||||||
<string name="label_sampling_rate">采样率</string>
|
<string name="label_sampling_rate">采样率</string>
|
||||||
<string name="label_track_length">长度</string>
|
<string name="label_track_length">长度</string>
|
||||||
<string name="last_added">上次添加</string>
|
<string name="last_added">最近添加</string>
|
||||||
<string name="lets_play_something">来点音乐吧!</string>
|
<string name="lets_play_something">来点音乐吧!</string>
|
||||||
<string name="library">库</string>
|
<string name="library">资料库</string>
|
||||||
<string name="licenses">许可</string>
|
<string name="licenses">许可</string>
|
||||||
<string name="light_theme_name">纯白</string>
|
<string name="light_theme_name">皓月白</string>
|
||||||
<string name="listing_files">正在罗列所有文件</string>
|
<string name="listing_files">正在罗列出所有文件</string>
|
||||||
<string name="loading_products">加载产品...</string>
|
<string name="loading_products">劳烦您稍等一下…(若始终无法加载,请尝试使用爬墙工具)</string>
|
||||||
<string name="lyrics">歌词</string>
|
<string name="lyrics">歌词</string>
|
||||||
<string name="material">材质</string>
|
<string name="material">质感</string>
|
||||||
<string name="my_name">我的名字</string>
|
<string name="my_name">我的名字</string>
|
||||||
<string name="my_top_tracks">播放最多</string>
|
<string name="my_top_tracks">我的最爱</string>
|
||||||
<string name="never">从不</string>
|
<string name="never">从不</string>
|
||||||
<string name="new_playlist_title">新播放列表</string>
|
<string name="new_playlist_title">新建播放列表</string>
|
||||||
<string name="new_profile_photo">新头像</string>
|
<string name="new_start_directory">%s 是新的开始目录</string>
|
||||||
<string name="new_start_directory">%s是新的开始目录</string>
|
<string name="no_albums">还没有专辑</string>
|
||||||
<string name="no_albums">无专辑</string>
|
<string name="no_artists">还没有艺术家</string>
|
||||||
<string name="no_artists">无艺术家</string>
|
<string name="no_audio_ID">"请先放首曲子,然后再试试"</string>
|
||||||
<string name="no_audio_ID">"先放首曲子,然后再试试"</string>
|
<string name="no_equalizer">暂时没有均衡器</string>
|
||||||
<string name="no_equalizer">找不到均衡器</string>
|
|
||||||
<string name="no_genres">无流派</string>
|
<string name="no_genres">无流派</string>
|
||||||
<string name="no_lyrics_found">找不到歌词</string>
|
<string name="no_lyrics_found">找不到歌词</string>
|
||||||
<string name="no_playlists">无播放列表</string>
|
<string name="no_playlists">还没有创建播放列表</string>
|
||||||
<string name="no_purchase_found">找不到支付记录</string>
|
<string name="no_purchase_found">找不到支付记录</string>
|
||||||
|
|
||||||
<string name="no_results">无结果</string>
|
<string name="no_results">无结果</string>
|
||||||
<string name="no_songs">无歌曲</string>
|
<string name="no_songs">无歌曲</string>
|
||||||
|
<string name="composer">作曲家</string>
|
||||||
|
<string name="track_hint">"音轨 (使用 2 来代表轨道 2,或者使用 3004 来代表 CD3 轨道 4)"</string>
|
||||||
|
<string name="sort_order_composer">作曲家</string>
|
||||||
|
|
||||||
|
<string name="up_next">接下来</string>
|
||||||
|
<string name="the_audio_file">分享音频文件</string>
|
||||||
|
<string name="clear_playing_queue">清除播放队列</string>
|
||||||
<string name="normal">正常</string>
|
<string name="normal">正常</string>
|
||||||
<string name="normal_lyrics">正常歌词</string>
|
<string name="queue">播放队列</string>
|
||||||
|
<string name="normal_lyrics">一般歌词</string>
|
||||||
|
<string name="send_crash_log">发送崩溃日志</string>
|
||||||
<string name="normal_style">正常</string>
|
<string name="normal_style">正常</string>
|
||||||
<string name="not_listed_in_media_store"><![CDATA[<b>%s</b>在多媒体商店没列出]]></string>
|
<string name="edit">编辑</string>
|
||||||
|
<string name="add_lyrics">添加歌词</string>
|
||||||
|
<string name="paste_lyrics_here">将您的歌词粘贴在这里</string>
|
||||||
|
<string name="not_listed_in_media_store"><![CDATA[<b>%s</b> 未在 MediaStore 中列出]]></string>
|
||||||
<string name="nothing_to_scan">检索不到任何东西</string>
|
<string name="nothing_to_scan">检索不到任何东西</string>
|
||||||
<string name="notification">通知烂</string>
|
<string name="notification">通知烂</string>
|
||||||
<string name="notification_settings_summary">自定义通知栏风格</string>
|
<string name="notification_settings_summary">自定义通知栏风格</string>
|
||||||
<string name="now_playing">正在播放</string>
|
<string name="now_playing">正在播放</string>
|
||||||
<string name="now_playing_queue">播放队列</string>
|
<string name="now_playing_queue">播放队列</string>
|
||||||
<string name="only_on_wifi">仅限Wi-Fi</string>
|
<string name="only_on_wifi">仅限 Wi-Fi</string>
|
||||||
<string name="others">其他</string>
|
<string name="others">其他</string>
|
||||||
<string name="past_three_months">前三个月</string>
|
<string name="past_three_months">前三个月</string>
|
||||||
<string name="permission_external_storage_denied">无权访问外部存储</string>
|
<string name="permission_external_storage_denied">无权访问外部存储</string>
|
||||||
<string name="permissions_denied">无权访问</string>
|
<string name="permissions_denied">无权访问</string>
|
||||||
<string name="personalize">个性化</string>
|
<string name="personalize">个性化</string>
|
||||||
<string name="personalize_settings_summary">自定义正在播放控件和UI控件</string>
|
<string name="select_all">全选</string>
|
||||||
|
<string name="buy_retro_music_pro">Retro Music Pro</string>
|
||||||
|
<string name="buy_pro">购买 Retro Music Pro</string>
|
||||||
|
<string name="sort_order">排序</string>
|
||||||
|
<string name="sort_order_a_z">由 A 到 Z</string>
|
||||||
|
<string name="sort_order_album">以专辑</string>
|
||||||
|
<string name="sort_order_artist">以艺术家</string>
|
||||||
|
<string name="sort_order_date">以日期</string>
|
||||||
|
<string name="sort_order_year">以年代</string>
|
||||||
|
<string name="sort_order_z_a">由 Z 到 A</string>
|
||||||
|
<string name="title_dashboard">仪表盘</string>
|
||||||
|
<string name="title_good_afternoon">下午好</string>
|
||||||
|
<string name="title_good_day">祝您万事顺心</string>
|
||||||
|
<string name="title_good_evening">晚上好</string>
|
||||||
|
<string name="track_list">专辑曲目号</string>
|
||||||
|
<string name="song_duration">歌曲时长</string>
|
||||||
|
<string name="title_good_morning">早哇</string>
|
||||||
|
<string name="remove_cover">移除封面</string>
|
||||||
|
<string name="title_good_night">晚安</string>
|
||||||
|
<string name="title_user_info">请问您的名字是…</string>
|
||||||
|
<string name="thank_you">感谢您!</string>
|
||||||
|
<string name="classic">经典</string>
|
||||||
|
<string name="tiny">小图标</string>
|
||||||
|
<string name="simple">素雅</string>
|
||||||
|
<string name="save">保存</string>
|
||||||
|
<string name="speech_prompt">使用语音搜索您的资料库</string>
|
||||||
|
<string name="speech_not_supported">很抱歉,您的设备暂不支持语言输入!</string>
|
||||||
|
<string name="song">歌曲</string>
|
||||||
|
<string name="fit">适应</string>
|
||||||
|
<string name="plain">简约</string>
|
||||||
|
<string name="personalize_settings_summary">自定义播放控件和 UI 控件</string>
|
||||||
<string name="pick_from_local_storage">从本地选取</string>
|
<string name="pick_from_local_storage">从本地选取</string>
|
||||||
<string name="playing_notification_description">播放通知栏提供播放/暂停等操作</string>
|
<string name="playing_notification_description">播放通知栏提供播放/暂停等操作</string>
|
||||||
<string name="playing_notification_name">播放通知栏</string>
|
<string name="playing_notification_name">播放通知栏</string>
|
||||||
|
@ -201,19 +303,21 @@
|
||||||
<string name="pref_header_lockscreen">锁屏</string>
|
<string name="pref_header_lockscreen">锁屏</string>
|
||||||
<string name="pref_header_playlists">播放列表</string>
|
<string name="pref_header_playlists">播放列表</string>
|
||||||
<string name="pref_only_lollipop">"仅在Android 5.x(Lollipop)上可用"</string>
|
<string name="pref_only_lollipop">"仅在Android 5.x(Lollipop)上可用"</string>
|
||||||
<string name="pref_summary_album_art_on_lockscreen">将正在播放的歌曲专辑封面设置为锁屏壁纸</string>
|
<string name="pref_summary_album_art_on_lockscreen">将正在播放的歌曲的专辑封面设置为锁屏壁纸</string>
|
||||||
<string name="pref_summary_audio_ducking">系统音响起或消息提醒时降低音量</string>
|
<string name="pref_summary_audio_ducking">系统音响起或消息提醒时降低音量</string>
|
||||||
<string name="pref_summary_blurred_album_art">在锁屏显示模糊化的专辑封面(可能会影响第三方应用或者小部件的正常运行)</string>
|
<string name="pref_summary_blurred_album_art">在锁屏显示模糊化的专辑封面(可能会影响第三方应用或者小部件的正常运行)</string>
|
||||||
<string name="pref_summary_carousel_effect">在正在播放界面轮播专辑封面,需要注意在卡片模式以及模糊卡片主题下无效</string>
|
<string name="pref_summary_carousel_effect">在播放界面轮播专辑封面。需要注意,在卡片模式以及模糊卡片主题下无效</string>
|
||||||
<string name="pref_summary_classic_notification">使用经典通知栏设计</string>
|
<string name="pref_summary_classic_notification">使用经典通知栏设计</string>
|
||||||
<string name="pref_summary_colored_app">背景色以及控件色跟随正在播放界面的专辑封面变化</string>
|
<string name="pref_summary_home_banner">切换主页横幅样式</string>
|
||||||
|
<string name="grid_style_label"><![CDATA[方格与风格]]></string>
|
||||||
|
<string name="pref_summary_colored_app">背景色以及控件色跟随播放界面的专辑封面变化</string>
|
||||||
<string name="pref_summary_colored_app_shortcuts">将快捷方式颜色更改为强调色,每次颜色更改后需要切换一下该设置才能生效</string>
|
<string name="pref_summary_colored_app_shortcuts">将快捷方式颜色更改为强调色,每次颜色更改后需要切换一下该设置才能生效</string>
|
||||||
<string name="pref_summary_colored_navigation_bar">修改导航栏颜色为主调色</string>
|
<string name="pref_summary_colored_navigation_bar">将主调色应用于导航栏</string>
|
||||||
<string name="pref_summary_colored_notification">"\u4fee\u6539\u901a\u77e5\u680f\u989c\u8272\u4e3a\u4e13\u8f91\u5c01\u9762\u7684\u4e3b\u8272\u8c03"</string>
|
<string name="pref_summary_colored_notification">"\u4fee\u6539\u901a\u77e5\u680f\u989c\u8272\u4e3a\u4e13\u8f91\u5c01\u9762\u7684\u4e3b\u8272\u8c03"</string>
|
||||||
<string name="pref_summary_dominant_color">从专辑封面或艺术家图中选取主色调</string>
|
<string name="pref_summary_dominant_color">从专辑封面或艺术家图中选取主色调</string>
|
||||||
<string name="pref_summary_gapless_playback">"在一些设备上可能会播放异常"</string>
|
<string name="pref_summary_gapless_playback">"在一些设备上可能会播放异常"</string>
|
||||||
<string name="pref_summary_ignore_media_store_artwork">可以提高专辑封面的质量,但是加载时候会较慢。建议只在不满意图片分辨率时开启</string>
|
<string name="pref_summary_ignore_media_store_artwork">可以提高专辑封面的质量,但是加载时候会较慢。建议只在不满意图片分辨率时开启</string>
|
||||||
<string name="pref_summary_lock_screen">使用Retro Music的自定义锁屏</string>
|
<string name="pref_summary_lock_screen">使用 Retro Music 提供的自定义锁屏</string>
|
||||||
<string name="pref_summary_open_source_licences">开源许可详情</string>
|
<string name="pref_summary_open_source_licences">开源许可详情</string>
|
||||||
<string name="pref_summary_round_corners">对应用边缘进行圆角化</string>
|
<string name="pref_summary_round_corners">对应用边缘进行圆角化</string>
|
||||||
<string name="pref_summary_tab_titles">切换底部导航栏的标签标题</string>
|
<string name="pref_summary_tab_titles">切换底部导航栏的标签标题</string>
|
||||||
|
@ -224,9 +328,9 @@
|
||||||
<string name="pref_summary_extra_controls">给迷你播放器添加额外控件</string>
|
<string name="pref_summary_extra_controls">给迷你播放器添加额外控件</string>
|
||||||
<string name="pref_summary_genre_toggle">切换流派标签</string>
|
<string name="pref_summary_genre_toggle">切换流派标签</string>
|
||||||
<string name="pref_title_album_art_on_lockscreen">显示专辑封面</string>
|
<string name="pref_title_album_art_on_lockscreen">显示专辑封面</string>
|
||||||
<string name="pref_title_tab_text_mode">标签标题模式</string>
|
<string name="pref_title_tab_text_mode">底栏文字显示</string>
|
||||||
<string name="pref_title_album_grid_style">专辑方格</string>
|
<string name="pref_title_album_grid_style">专辑方格</string>
|
||||||
<string name="pref_title_app_shortcuts">带颜色的快捷方式</string>
|
<string name="pref_title_app_shortcuts">彩色快捷方式</string>
|
||||||
<string name="pref_title_artist_grid_style">艺术家方格</string>
|
<string name="pref_title_artist_grid_style">艺术家方格</string>
|
||||||
<string name="pref_title_audio_ducking">不显示的时候降低音量</string>
|
<string name="pref_title_audio_ducking">不显示的时候降低音量</string>
|
||||||
<string name="pref_title_auto_download_artist_images">自动下载艺术家图片</string>
|
<string name="pref_title_auto_download_artist_images">自动下载艺术家图片</string>
|
||||||
|
@ -234,16 +338,16 @@
|
||||||
<string name="pref_title_choose_equalizer">选择均衡器</string>
|
<string name="pref_title_choose_equalizer">选择均衡器</string>
|
||||||
<string name="pref_title_classic_notification">经典通知栏设计</string>
|
<string name="pref_title_classic_notification">经典通知栏设计</string>
|
||||||
<string name="pref_title_colored_app">自适应颜色</string>
|
<string name="pref_title_colored_app">自适应颜色</string>
|
||||||
<string name="pref_title_colored_notification">带颜色的通知栏</string>
|
<string name="pref_title_colored_notification">彩色通知栏</string>
|
||||||
<string name="pref_title_gapless_playback">无间隙连续播放</string>
|
<string name="pref_title_gapless_playback">无间隙连续播放</string>
|
||||||
<string name="pref_title_general_theme">应用主题</string>
|
<string name="pref_title_general_theme">应用主题</string>
|
||||||
<string name="pref_title_ignore_media_store_artwork">忽略多媒体商店封面</string>
|
<string name="pref_title_ignore_media_store_artwork">忽略音乐商店提供的封面</string>
|
||||||
<string name="pref_title_last_added_interval">上次添加播放列表到现在的间隔</string>
|
<string name="pref_title_last_added_interval">您认为多久之内才算是最近添加的?</string>
|
||||||
<string name="pref_title_lock_screen">全屏控件</string>
|
<string name="pref_title_lock_screen">全屏控件</string>
|
||||||
<string name="pref_title_navigation_bar">带颜色的导航栏</string>
|
<string name="pref_title_navigation_bar">带颜色的导航栏</string>
|
||||||
<string name="pref_title_now_playing_screen_appearance">播放主题</string>
|
<string name="pref_title_now_playing_screen_appearance">播放主题</string>
|
||||||
<string name="pref_title_open_source_licences">开源许可</string>
|
<string name="pref_title_open_source_licences">开源许可</string>
|
||||||
<string name="pref_title_round_corners">边角</string>
|
<string name="pref_title_round_corners">圆角</string>
|
||||||
<string name="pref_title_toggle_carousel_effect">轮播效果</string>
|
<string name="pref_title_toggle_carousel_effect">轮播效果</string>
|
||||||
<string name="pref_title_toggle_dominant_color">主色调</string>
|
<string name="pref_title_toggle_dominant_color">主色调</string>
|
||||||
<string name="pref_title_toggle_full_screen">全屏应用</string>
|
<string name="pref_title_toggle_full_screen">全屏应用</string>
|
||||||
|
@ -255,31 +359,76 @@
|
||||||
<string name="pref_title_extra_controls">额外控件</string>
|
<string name="pref_title_extra_controls">额外控件</string>
|
||||||
<string name="pref_title_home_banner">主页横幅</string>
|
<string name="pref_title_home_banner">主页横幅</string>
|
||||||
<string name="pref_title_genre_toggle">显示流派标签</string>
|
<string name="pref_title_genre_toggle">显示流派标签</string>
|
||||||
<string name="pref_title_album_cover_transform">正在播放的专辑封面风格</string>
|
<string name="pref_title_album_cover_transform">播放界面专辑封面风格</string>
|
||||||
<string name="primary_color">主颜色</string>
|
<string name="primary_color">主颜色</string>
|
||||||
<string name="rate_app">评价这个应用</string>
|
<string name="rate_app">评价这个应用</string>
|
||||||
|
<string name="pref_keep_pause_on_zero_volume_title">静音时自动暂停</string>
|
||||||
|
<string name="pref_keep_pause_on_zero_volume_summary">当媒体音量降低至 0 时,音乐将自动暂停,而当您把音量提高时,则将会自动开始播放。该选项在此应用外依然可用。</string>
|
||||||
<string name="remove_action">删除</string>
|
<string name="remove_action">删除</string>
|
||||||
<string name="remove_from_blacklist">从黑名单中移除</string>
|
<string name="remove_from_blacklist">从黑名单中移除</string>
|
||||||
<string name="remove_profile_photo">删除简介照片</string>
|
<string name="remove_profile_photo">移除当前头像</string>
|
||||||
<string name="remove_song_from_playlist_title">从播放列表中删除歌曲</string>
|
<string name="remove_song_from_playlist_title">从播放列表中删除歌曲</string>
|
||||||
<string name="remove_songs_from_playlist_title">从播放列表中删除歌曲</string>
|
<string name="remove_songs_from_playlist_title">从播放列表中删除歌曲</string>
|
||||||
<string name="rename_playlist_title">重命名播放列表</string>
|
<string name="rename_playlist_title">重命名播放列表</string>
|
||||||
|
<string name="labeled">始终显示</string>
|
||||||
|
<string name="selected">显示当前页的文字</string>
|
||||||
|
<string name="unlabeled">不显示</string>
|
||||||
<!-- SAF -->
|
<!-- SAF -->
|
||||||
<!-- SAF guide -->
|
<!-- SAF guide -->
|
||||||
<string name="saving_changes">保存修改</string>
|
<string name="saving_changes">保存修改</string>
|
||||||
<string name="scan_media">扫描媒体</string>
|
<string name="scan_media">扫描媒体</string>
|
||||||
<!-- Message displayed when tag editing fails -->
|
<!-- Message displayed when tag editing fails -->
|
||||||
<string name="twitter_page">推特</string>
|
<string name="twitter_page">Twitter</string>
|
||||||
|
<string name="set_photo">设置头像</string>
|
||||||
|
<string name="auto">自动</string>
|
||||||
|
<string name="circular">圆形</string>
|
||||||
<string name="unplayable_file">\u65e0\u6cd5\u64ad\u653e\u8fd9\u9996\u6b4c\u3002</string>
|
<string name="unplayable_file">\u65e0\u6cd5\u64ad\u653e\u8fd9\u9996\u6b4c\u3002</string>
|
||||||
<string name="update_image">更新图片</string>
|
<string name="update_image">更新图片</string>
|
||||||
<string name="updating">更新中...</string>
|
<string name="updating">更新中...</string>
|
||||||
<string name="version">版本</string>
|
<string name="version">版本</string>
|
||||||
<string name="web_search">网络搜索</string>
|
<string name="web_search">网络搜索</string>
|
||||||
<string name="what_do_you_want_to_share">你想分享什么?</string>
|
<string name="other_settings_summary">仍处于测试阶段的高级功能</string>
|
||||||
|
<string name="what_do_you_want_to_share">您希望分享什么?</string>
|
||||||
|
<string name="pref_title_home_artist_grid_style">主页艺术家展示形式</string>
|
||||||
|
<string name="about_settings_summary">了解我们的团队,获取我们的社交账号以及联系方式</string>
|
||||||
<string name="year">年</string>
|
<string name="year">年</string>
|
||||||
|
<string name="keyboard">显示键盘</string>
|
||||||
|
<string name="stack">堆叠</string>
|
||||||
|
<string name="image_gradient">渐变图片</string>
|
||||||
|
<string name="premium">成为高级会员</string>
|
||||||
|
<string name="upgrade_to_premium">升级成为高级会员</string>
|
||||||
|
<string name="purchase_summary">*请在决定购买前再三考虑,如果您购买之后后悔了,恕不提供退款服务。</string>
|
||||||
|
<string name="restore">恢复购买</string>
|
||||||
|
<string name="restored_previous_purchase_please_restart">已恢复先前购买的内容。只需重启播放器,您就能正常使用了!</string>
|
||||||
|
<string name="restored_previous_purchases">已恢复先前购买的内容。</string>
|
||||||
|
<string name="restoring_purchase">正在尝试恢复先前购买的内容…</string>
|
||||||
|
<string name="retro_equalizer">Retro Music 均衡器</string>
|
||||||
|
<string name="virtualizer">虚拟器</string>
|
||||||
|
<string name="depth">深度</string>
|
||||||
|
<string name="vertical_flip">垂直翻转</string>
|
||||||
|
<string name="cascading">传递</string>
|
||||||
|
<string name="horizontal_flip">水平翻转</string>
|
||||||
|
<string name="whats_new">来看看这次更新的亮点吧!</string>
|
||||||
|
<string name="saved_playlist_to">已保存播放列表至 %s.</string>
|
||||||
|
<string name="scanned_files">已扫描出 %1$d 个文件,总共有 %2$d 个</string>
|
||||||
|
<string name="sleep_timer_canceled">睡眠定时器已取消</string>
|
||||||
|
<string name="social">社交媒体</string>
|
||||||
|
<string name="hinge">合页</string>
|
||||||
|
<string name="select_preset">选择一个预设</string>
|
||||||
|
<string name="on">开启</string>
|
||||||
|
<string name="shuffle">随机播放</string> `
|
||||||
|
<string name="add_time_framed_lryics">加入带有时间轴的歌词</string>
|
||||||
|
<string name="dialog_title_set_ringtone">设置铃声</string>
|
||||||
|
<string name="dialog_message_set_ringtone">请允许 Retro Music 更改音频设置</string>
|
||||||
|
<string name="suggestion_songs">推荐</string>
|
||||||
|
<string name="twitter_page_summary">分享出您独一无二的 Retro Music</string>
|
||||||
|
<string name="start_play_music">来点音乐吧</string>
|
||||||
|
<string name="share_app">分享应用到…</string>
|
||||||
|
<string name="pro_summary">更多播放主题,轮播效果,色彩主题,等你解锁!</string>
|
||||||
<string name="clear_app_data">清除应用数据</string>
|
<string name="clear_app_data">清除应用数据</string>
|
||||||
<string name="error">错误</string>
|
<string name="error">错误</string>
|
||||||
<string name="now_playing_themes">9+种播放主题</string>
|
<string name="window">窗口</string>
|
||||||
|
<string name="now_playing_themes">9 种以上播放主题</string>
|
||||||
<string name="carousal_effect_on_now_playing_screen">在播放界面使用轮播效果</string>
|
<string name="carousal_effect_on_now_playing_screen">在播放界面使用轮播效果</string>
|
||||||
<string name="now_playing_summary">自定义播放界面</string>
|
<string name="now_playing_summary">自定义播放界面</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -624,4 +624,5 @@
|
||||||
<string name="pro_summary">Now playing themes, Carousel effect, Color theme and more..</string>
|
<string name="pro_summary">Now playing themes, Carousel effect, Color theme and more..</string>
|
||||||
<string name="action_play_all">Play all</string>
|
<string name="action_play_all">Play all</string>
|
||||||
<string name="start_play_music">Start playing music.</string>
|
<string name="start_play_music">Start playing music.</string>
|
||||||
|
<string name="keyboard">Keyboard</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
|
|
||||||
<item name="cardBackgroundColor">@color/card_dark_color</item>
|
<item name="cardBackgroundColor">@color/card_dark_color</item>
|
||||||
<item name="defaultFooterColor">@color/dark_color</item>
|
<item name="defaultFooterColor">@color/dark_color</item>
|
||||||
<item name="dividerColor">@color/dark_color</item>
|
<item name="dividerColor">@color/md_grey_800</item>
|
||||||
|
|
||||||
<item name="iconColor">@color/ate_secondary_text_dark</item>
|
<item name="iconColor">@color/ate_secondary_text_dark</item>
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory android:title="@string/pref_header_general">
|
<code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory android:title="@string/pref_header_general">
|
||||||
<code.name.monkey.retromusic.preferences.MaterialListPreference
|
<code.name.monkey.appthemehelper.common.prefs.supportv7.ATEListPreference
|
||||||
android:defaultValue="dark"
|
android:defaultValue="dark"
|
||||||
android:entries="@array/pref_general_theme_list_titles"
|
android:entries="@array/pref_general_theme_list_titles"
|
||||||
android:entryValues="@array/pref_general_theme_list_values"
|
android:entryValues="@array/pref_general_theme_list_values"
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue