diff --git a/app/build.gradle b/app/build.gradle
index 99e9228e..383d8375 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -32,7 +32,7 @@ android {
vectorDrawables.useSupportLibrary = true
applicationId "code.name.monkey.retromusic"
- versionCode 313
+ versionCode 314
versionName '3.1.400'
multiDexEnabled true
@@ -130,7 +130,7 @@ dependencies {
implementation 'androidx.preference:preference:1.1.0-alpha04'
implementation "androidx.legacy:legacy-support-v13:1.0.0"
implementation "androidx.legacy:legacy-preference-v14:1.0.0"
- implementation 'com.google.android.material:material:1.1.0-alpha04'
+ implementation 'com.google.android.material:material:1.1.0-alpha05'
implementation 'androidx.palette:palette-ktx:1.0.0'
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 46057f22..7b935236 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -247,6 +247,8 @@
+
+
diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html
index 7ff6de47..fb553780 100644
--- a/app/src/main/assets/retro-changelog.html
+++ b/app/src/main/assets/retro-changelog.html
@@ -1 +1 @@
-
v3.1.400
- Improved lock-screen behavior and UI
- Fix some crashes
- Fix playlist icon on small devices
v3.1.300
- Fix rename playlist text color
- Fix same album showing in details page
- Fix lyrics text alignment on sync and lyrics reading improved
- Improved home sections loading
- Removed library options which are duplicated (it's available from profile menu)
- Replaced collapsing Fab with Android Floating Extended Fab
- Replaced home with for you
- Fixed profile image not loading in about
- Improved selecting user profile image
- Added bio to enter custom message
- Improved some UI screens
v3.1.240
- Fix Search not showing from home screen
- Fix Volume controls color issue
- Fix Seek bar alignment
- Added tiny theme
- Improved full theme appearances
- Now playing theme preview updated
- Fix composer error
- Bottom Options improved(internal)
v3.1.200
- Added composer sort and editing
- Fix Crash in Album tag editor while selecting options
- Added Filter song length
- Added Favourites playlist icon will be accent color
- Added Colorful settings icons
- Added Corners for dialog
v3.0.570
- Fix Album/Artist square image
- Fix Delete dialog text format
- Fix Profile picture not showing after coming back from folders
- Fix Play button color i Simple and Plain themes
- Fix Sleep timer dialog crashing
- Fix Share song dialog title and text
If you see entire app white or dark or black select same theme in settings to fix
FAQ's
*If you face any UI related issues you clear app data and cache, if its
not working try to
uninstall and install again.
\ No newline at end of file
+
v3.1.400
- Fix setting ringtone
- Fix file sharing crash
- Improved lock-screen behavior and UI
- Fix some crashes
- Fix playlist icon on small devices
- Fix empty lyrics text color
- Fix album cover background purple color in color theme
v3.1.300
- Fix rename playlist text color
- Fix same album showing in details page
- Fix lyrics text alignment on sync and lyrics reading improved
- Improved home sections loading
- Removed library options which are duplicated (it's available from profile menu)
- Replaced collapsing Fab with Android Floating Extended Fab
- Replaced home with for you
- Fixed profile image not loading in about
- Improved selecting user profile image
- Added bio to enter custom message
- Improved some UI screens
v3.1.240
- Fix Search not showing from home screen
- Fix Volume controls color issue
- Fix Seek bar alignment
- Added tiny theme
- Improved full theme appearances
- Now playing theme preview updated
- Fix composer error
- Bottom Options improved(internal)
v3.1.200
- Added composer sort and editing
- Fix Crash in Album tag editor while selecting options
- Added Filter song length
- Added Favourites playlist icon will be accent color
- Added Colorful settings icons
- Added Corners for dialog
v3.0.570
- Fix Album/Artist square image
- Fix Delete dialog text format
- Fix Profile picture not showing after coming back from folders
- Fix Play button color i Simple and Plain themes
- Fix Sleep timer dialog crashing
- Fix Share song dialog title and text
If you see entire app white or dark or black select same theme in settings to fix
FAQ's
*If you face any UI related issues you clear app data and cache, if its
not working try to
uninstall and install again.
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt b/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt
index 4d8775ec..0b33051b 100644
--- a/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt
@@ -32,6 +32,7 @@ import code.name.monkey.retromusic.ui.activities.tageditor.AbsTagEditorActivity
import code.name.monkey.retromusic.ui.activities.tageditor.SongTagEditorActivity
import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.NavigationUtil
+import code.name.monkey.retromusic.util.RingtoneManager
object SongMenuHelper {
@@ -40,7 +41,11 @@ object SongMenuHelper {
fun handleMenuClick(activity: FragmentActivity, song: Song, menuItemId: Int): Boolean {
when (menuItemId) {
R.id.action_set_as_ringtone -> {
- MusicUtil.setRingtone(activity, song.id)
+ if (RingtoneManager.requiresDialog(activity)) {
+ RingtoneManager.getDialog(activity)
+ }
+ val ringtoneManager = RingtoneManager(activity)
+ ringtoneManager.setRingtone(song)
return true
}
R.id.action_share -> {
diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/AlbumDetailsActivity.kt
index 07a63a4c..7c4d47fd 100644
--- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/AlbumDetailsActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/AlbumDetailsActivity.kt
@@ -76,7 +76,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac
setupWindowTransition()
super.onCreate(savedInstanceState)
toggleBottomNavigationView(true)
-
+ collapsingToolbarLayout?.setBackgroundColor(ThemeStore.primaryColor(this))
setLightNavigationBar(true)
setNavigationbarColorAuto()
diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/LyricsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/LyricsActivity.kt
index b06a407f..c5238588 100644
--- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/LyricsActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/LyricsActivity.kt
@@ -56,8 +56,8 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener, ViewPage
override fun onPageSelected(position: Int) {
PreferenceUtil.getInstance().lyricsOptions = position
- if (position == 0) fab.text = "Sync lyrics"
- else if (position == 1) fab.text = "Lyrics"
+ if (position == 0) fab.text = getString(R.string.synced_lyrics)
+ else if (position == 1) fab.text = getString(R.string.lyrics)
}
override fun onClick(v: View?) {
@@ -151,16 +151,23 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener, ViewPage
}
MaterialDialog(this).show {
- title(text = "Add lyrics")
- neutralButton(text = "Search") { RetroUtil.openUrl(this@LyricsActivity, googleSearchLrcUrl) }
- message(text = "Add time frame lyrics")
- negativeButton(text = "Delete") { LyricUtil.deleteLrcFile(song.title, song.artistName) }
- input(hint = "Paste lyrics here",
+ title(R.string.add_time_framed_lryics)
+ negativeButton(R.string.action_search) { RetroUtil.openUrl(this@LyricsActivity, googleSearchLrcUrl) }
+ input(hint = getString(R.string.paste_lyrics_here),
prefill = content,
inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE) { _, input ->
LyricUtil.writeLrcToLoc(song.title, song.artistName, input.toString())
}
- positiveButton(android.R.string.ok)
+ positiveButton(android.R.string.ok) {
+ updateSong()
+ }
+ }
+ }
+
+ private fun updateSong() {
+ val page = supportFragmentManager.findFragmentByTag("android:switcher:" + R.id.viewPager + ":" + viewPager.currentItem)
+ if (viewPager.currentItem == 0 && page != null) {
+ (page as BaseLyricsFragment).upDateSong()
}
}
@@ -172,23 +179,24 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener, ViewPage
}
MaterialDialog(this).show {
- title(text = "Add lyrics")
- neutralButton(text = "Search") { RetroUtil.openUrl(this@LyricsActivity, getGoogleSearchUrl()) }
- negativeButton(text = "Delete") { LyricUtil.deleteLrcFile(song.title, song.artistName) }
- input(hint = "Paste lyrics here",
+ title(R.string.add_lyrics)
+ negativeButton(R.string.action_search) { RetroUtil.openUrl(this@LyricsActivity, getGoogleSearchUrl()) }
+ input(hint = getString(R.string.paste_lyrics_here),
prefill = content,
inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE) { _, input ->
val fieldKeyValueMap = EnumMap(FieldKey::class.java)
fieldKeyValueMap[FieldKey.LYRICS] = input.toString()
WriteTagsAsyncTask(this@LyricsActivity).execute(WriteTagsAsyncTask.LoadingInfo(getSongPaths(song), fieldKeyValueMap, null))
}
- positiveButton(android.R.string.ok)
+ positiveButton(android.R.string.ok) {
+ updateSong()
+ }
}
}
private fun getSongPaths(song: Song): ArrayList {
val paths = ArrayList(1)
- paths.add(song.data!!)
+ paths.add(song.data)
return paths
}
@@ -318,9 +326,11 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener, ViewPage
private fun setupLyricsView() {
lyricsView.apply {
+ val context = activity!!
setCurrentPlayLineColor(ThemeStore.accentColor(context))
setIndicatorTextColor(ThemeStore.accentColor(context))
setCurrentIndicateLineTextColor(ThemeStore.textColorPrimary(context))
+ setNoLrcTextColor(ThemeStore.textColorPrimary(context))
setOnPlayIndicatorLineListener(object : LrcView.OnPlayIndicatorLineListener {
override fun onPlay(time: Long, content: String) {
MusicPlayerRemote.seekTo(time.toInt())
diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/base/AbsPlayerFragment.kt
index 96f3e393..e338a317 100644
--- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/base/AbsPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/base/AbsPlayerFragment.kt
@@ -119,7 +119,11 @@ abstract class AbsPlayerFragment : AbsMusicServiceFragment(), Toolbar.OnMenuItem
return true
}
R.id.action_set_as_ringtone -> {
- MusicUtil.setRingtone(activity!!, song.id)
+ if (RingtoneManager.requiresDialog(activity!!)) {
+ RingtoneManager.getDialog(activity!!)
+ }
+ val ringtoneManager = RingtoneManager(activity!!)
+ ringtoneManager.setRingtone(song)
return true
}
R.id.action_settings -> {
diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/settings/MainSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/settings/MainSettingsFragment.kt
index 98e34e7b..9f04218e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/settings/MainSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/settings/MainSettingsFragment.kt
@@ -54,12 +54,6 @@ class MainSettingsFragment : Fragment(), View.OnClickListener {
imageSettings.setOnClickListener(this)
notificationSettings.setOnClickListener(this)
otherSettings.setOnClickListener(this)
-
- text.setTextColor(ThemeStore.textColorSecondary(context!!));
- titleWelcome.setTextColor(ThemeStore.textColorPrimary(context!!));
- titleWelcome.text = String.format("%s %s!", getTimeOfTheDay(), PreferenceUtil.getInstance().userName);
- loadImageFromStorage();
- userInfoContainer.setOnClickListener { NavigationUtil.goToUserInfo(activity!!) }
}
private fun inflateFragment(fragment: Fragment, @StringRes title: Int) {
@@ -82,27 +76,4 @@ class MainSettingsFragment : Fragment(), View.OnClickListener {
}
return message
}
-
- override fun onDestroyView() {
- super.onDestroyView()
- disposable.clear()
- }
-
- private val disposable = CompositeDisposable()
-
- private fun loadImageFromStorage() {
-
- disposable.add(Compressor(context!!)
- .setMaxHeight(300)
- .setMaxWidth(300)
- .setQuality(75)
- .setCompressFormat(Bitmap.CompressFormat.WEBP)
- .compressToBitmapAsFlowable(
- File(PreferenceUtil.getInstance().profileImage, USER_PROFILE))
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ userImage.setImageBitmap(it) }, {
- userImage.setImageDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_person_flat))
- }))
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java
index 9be4c912..90c89202 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java
+++ b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java
@@ -25,11 +25,14 @@ import android.net.Uri;
import android.os.Environment;
import android.provider.BaseColumns;
import android.provider.MediaStore;
-import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.FileProvider;
+
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.tag.FieldKey;
@@ -40,9 +43,6 @@ import java.util.List;
import java.util.Locale;
import java.util.regex.Pattern;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.core.content.FileProvider;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
import code.name.monkey.retromusic.loaders.PlaylistLoader;
@@ -72,9 +72,9 @@ public class MusicUtil {
@NonNull
public static Intent createShareSongFileIntent(@NonNull final Song song, @NonNull Context context) {
+ Uri file = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", new File(song.getData()));
try {
- return new Intent().setAction(Intent.ACTION_SEND).putExtra(Intent.EXTRA_STREAM,
- FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName(), new File(song.getData())))
+ return new Intent().setAction(Intent.ACTION_SEND).putExtra(Intent.EXTRA_STREAM, file)
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
.setType("audio/*");
} catch (IllegalArgumentException e) {
@@ -84,41 +84,6 @@ public class MusicUtil {
}
}
- public static void setRingtone(@NonNull final Context context, final int id) {
- final ContentResolver resolver = context.getContentResolver();
- final Uri uri = getSongFileUri(id);
- try {
- final ContentValues values = new ContentValues(2);
- values.put(MediaStore.Audio.AudioColumns.IS_RINGTONE, "1");
- values.put(MediaStore.Audio.AudioColumns.IS_ALARM, "1");
- resolver.update(uri, values, null, null);
- } catch (@NonNull final UnsupportedOperationException ignored) {
- return;
- }
-
- try {
- Cursor cursor = resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
- new String[]{MediaStore.MediaColumns.TITLE},
- BaseColumns._ID + "=?",
- new String[]{String.valueOf(id)},
- null);
- try {
- if (cursor != null && cursor.getCount() == 1) {
- cursor.moveToFirst();
- Settings.System.putString(resolver, Settings.System.RINGTONE, uri.toString());
- final String message = context
- .getString(R.string.x_has_been_set_as_ringtone, cursor.getString(0));
- Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
- }
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
- } catch (SecurityException ignored) {
- }
- }
-
@NonNull
public static String getSongInfoString(@NonNull Song song) {
return MusicUtil.buildInfoString(
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt b/app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt
new file mode 100644
index 00000000..4a0c6dbb
--- /dev/null
+++ b/app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt
@@ -0,0 +1,89 @@
+/*
+ * 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.util
+
+import android.content.ContentValues
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.provider.BaseColumns
+import android.provider.MediaStore
+import android.provider.Settings
+import android.widget.Toast
+import code.name.monkey.retromusic.R
+import code.name.monkey.retromusic.model.Song
+import code.name.monkey.retromusic.util.MusicUtil.getSongFileUri
+import com.afollestad.materialdialogs.MaterialDialog
+
+class RingtoneManager(val context: Context) {
+ fun setRingtone(song: Song) {
+ val resolver = context.contentResolver
+ val uri = getSongFileUri(song.id)
+ try {
+ val values = ContentValues(2)
+ values.put(MediaStore.Audio.AudioColumns.IS_RINGTONE, "1")
+ values.put(MediaStore.Audio.AudioColumns.IS_ALARM, "1")
+ resolver.update(uri, values, null, null)
+ } catch (ignored: UnsupportedOperationException) {
+ return
+ }
+
+
+ try {
+ val cursor = resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
+ arrayOf(MediaStore.MediaColumns.TITLE),
+ BaseColumns._ID + "=?",
+ arrayOf(song.id.toString()), null)
+ cursor.use { cursorSong ->
+ if (cursorSong != null && cursorSong.count == 1) {
+ cursorSong.moveToFirst()
+ Settings.System.putString(resolver, Settings.System.RINGTONE, uri.toString())
+ val message = context
+ .getString(R.string.x_has_been_set_as_ringtone, cursorSong.getString(0))
+ Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
+ }
+ }
+ } catch (ignored: SecurityException) {
+ }
+ }
+
+ companion object {
+ private const val TAG = "RingtoneManager"
+
+ fun requiresDialog(context: Context): Boolean {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ if (!Settings.System.canWrite(context)) {
+ return true
+ }
+ }
+ return false
+ }
+
+ fun getDialog(context: Context): MaterialDialog {
+ return MaterialDialog(context).show {
+ title(R.string.dialog_title_set_ringtone)
+ message(R.string.dialog_message_set_ringtone)
+ positiveButton(android.R.string.ok) {
+ val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
+ intent.data = Uri.parse("package:" + context.applicationContext.packageName)
+ context.startActivity(intent)
+ }
+ negativeButton(android.R.string.cancel)
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_account_white_24dp.xml b/app/src/main/res/drawable/ic_account_white_24dp.xml
new file mode 100644
index 00000000..57af742f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_account_white_24dp.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_delete_white_24dp.xml b/app/src/main/res/drawable/ic_delete_white_24dp.xml
index 16ab5789..d0d191df 100644
--- a/app/src/main/res/drawable/ic_delete_white_24dp.xml
+++ b/app/src/main/res/drawable/ic_delete_white_24dp.xml
@@ -6,5 +6,8 @@
android:viewportHeight="24">
+ android:pathData="M15 4V3H9v1H4v2h1v13c0 1.1 0.9 2 2 2h10c1.1 0 2-0.9 2-2V6h1V4h-5zm2 15H7V6h10v13z" />
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_settings_white_24dp.xml b/app/src/main/res/drawable/ic_settings_white_24dp.xml
index 667dd58b..da3e202a 100644
--- a/app/src/main/res/drawable/ic_settings_white_24dp.xml
+++ b/app/src/main/res/drawable/ic_settings_white_24dp.xml
@@ -7,5 +7,8 @@
+ android:pathData="M13.85 22.25h-3.7c-0.74 0-1.36-0.54-1.45-1.27l-0.27-1.89c-0.27-0.14-0.53-0.29-0.79-0.46l-1.8 0.72 c-0.7 0.26 -1.47-0.03-1.81-0.65L2.2 15.53c-0.35-0.66-0.2-1.44 0.36 -1.88l1.53-1.19c-0.01-0.15-0.02-0.3-0.02-0.46 0-0.15 0.01 -0.31 0.02 -0.46l-1.52-1.19c-0.59-0.45-0.74-1.26-0.37-1.88l1.85-3.19c0.34-0.62 1.11-0.9 1.79-0.63l1.81 0.73 c0.26-0.17 0.52 -0.32 0.78 -0.46l0.27-1.91c0.09-0.7 0.71 -1.25 1.44-1.25h3.7c0.74 0 1.36 0.54 1.45 1.27l0.27 1.89c0.27 0.14 0.53 0.29 0.79 0.46 l1.8-0.72c0.71-0.26 1.48 0.03 1.82 0.65 l1.84 3.18c0.36 0.66 0.2 1.44-0.36 1.88l-1.52 1.19c0.01 0.15 0.02 0.3 0.02 0.46 s-0.01 0.31 -0.02 0.46 l1.52 1.19c0.56 0.45 0.72 1.23 0.37 1.86l-1.86 3.22c-0.34 0.62 -1.11 0.9 -1.8 0.63 l-1.8-0.72c-0.26 0.17 -0.52 0.32 -0.78 0.46 l-0.27 1.91c-0.1 0.68 -0.72 1.22-1.46 1.22zm-3.23-2h2.76l0.37-2.55 0.53 -0.22c0.44-0.18 0.88 -0.44 1.34-0.78l0.45-0.34 2.38 0.96 1.38-2.4-2.03-1.58 0.07 -0.56c0.03-0.26 0.06 -0.51 0.06 -0.78s-0.03-0.53-0.06-0.78l-0.07-0.56 2.03-1.58-1.39-2.4-2.39 0.96 -0.45-0.35c-0.42-0.32-0.87-0.58-1.33-0.77l-0.52-0.22-0.37-2.55h-2.76l-0.37 2.55-0.53 0.21 c-0.44 0.19 -0.88 0.44 -1.34 0.79 l-0.45 0.33 -2.38-0.95-1.39 2.39 2.03 1.58-0.07 0.56 a7 7 0 0 0-0.06 0.79 c0 0.26 0.02 0.53 0.06 0.78l0.07 0.56 -2.03 1.58 1.38 2.4 2.39-0.96 0.45 0.35c0.43 0.33 0.86 0.58 1.33 0.77 l0.53 0.22 0.38 2.55z" />
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_settings.xml b/app/src/main/res/layout-land/activity_settings.xml
index 62ed7ab7..ba0fb286 100644
--- a/app/src/main/res/layout-land/activity_settings.xml
+++ b/app/src/main/res/layout-land/activity_settings.xml
@@ -4,39 +4,11 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_lyrics.xml b/app/src/main/res/layout/activity_lyrics.xml
index f0755d70..1d7f87a2 100644
--- a/app/src/main/res/layout/activity_lyrics.xml
+++ b/app/src/main/res/layout/activity_lyrics.xml
@@ -1,59 +1,53 @@
-
-
+ app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
-
+
+
+ android:layout_height="wrap_content"
+ android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
+ app:contentInsetLeft="0dp"
+ app:contentInsetStart="0dp"
+ app:contentInsetStartWithNavigation="0dp"
+ app:layout_scrollFlags="scroll|enterAlways"
+ app:subtitleTextAppearance="@style/TextAppearance.MaterialComponents.Caption"
+ app:titleMargin="0dp"
+ app:titleMarginStart="0dp"
+ app:titleTextAppearance="@style/TextAppearance.MaterialComponents.Subtitle1" />
-
+
+
+ android:text="@string/synced_lyrics" />
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index f48a9162..3e84c2d4 100755
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -4,6 +4,14 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
+
+
+
+
-
-
+
-
+
+
+
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/fragment_banner_home.xml b/app/src/main/res/layout/fragment_banner_home.xml
index 6c28536e..c4b35108 100644
--- a/app/src/main/res/layout/fragment_banner_home.xml
+++ b/app/src/main/res/layout/fragment_banner_home.xml
@@ -85,7 +85,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:behavior_overlapTop="24dp"
- app:layout_behavior="@string/appbar_scrolling_view_behavior">
+ app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
+ app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
Support development
- Synced lyrics
-
System Equalizer
@@ -608,5 +606,11 @@
Set a profile photo
Edit
Swipe to unlock
+ Add lyrics
+ Paste lyrics here
+ Add time frame lyrics
+ Synced lyrics
+ Set ringtone
+ Allow Retro Music to modify audio settings
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 914917ed..f4bdeacd 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -60,7 +60,7 @@