From fce012aaf36c2a86e681dbb4c84e23f258c407a2 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Fri, 5 Apr 2019 11:19:40 +0530 Subject: [PATCH] Fix ringtone, file sharing --- app/build.gradle | 4 +- app/src/main/AndroidManifest.xml | 2 + app/src/main/assets/retro-changelog.html | 2 +- .../retromusic/helper/menu/SongMenuHelper.kt | 7 +- .../ui/activities/AlbumDetailsActivity.kt | 2 +- .../ui/activities/LyricsActivity.kt | 38 +++++--- .../ui/fragments/base/AbsPlayerFragment.kt | 6 +- .../settings/MainSettingsFragment.kt | 29 ------ .../monkey/retromusic/util/MusicUtil.java | 47 ++-------- .../monkey/retromusic/util/RingtoneManager.kt | 89 +++++++++++++++++++ .../res/drawable/ic_account_white_24dp.xml | 24 +++++ .../res/drawable/ic_delete_white_24dp.xml | 5 +- .../res/drawable/ic_settings_white_24dp.xml | 5 +- .../res/layout-land/activity_settings.xml | 54 ++++++----- app/src/main/res/layout/activity_lyrics.xml | 84 ++++++++--------- app/src/main/res/layout/activity_settings.xml | 45 +++++----- .../main/res/layout/fragment_banner_home.xml | 2 +- app/src/main/res/layout/fragment_home.xml | 2 +- app/src/main/res/values/strings.xml | 8 +- app/src/main/res/values/styles.xml | 2 +- 20 files changed, 261 insertions(+), 196 deletions(-) create mode 100644 app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt create mode 100644 app/src/main/res/drawable/ic_account_white_24dp.xml 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 @@