Making the queue in a left drawer in the player.

This commit is contained in:
Tristan Roux
2019-02-12 00:48:29 +01:00
parent e2c1c07dd6
commit 465b265ccd
18 changed files with 868 additions and 908 deletions

View File

@@ -4,6 +4,7 @@ using Android.Content;
using Android.Content.PM;
using Android.Content.Res;
using Android.Database;
using Android.Gms.Auth;
using Android.Gms.Auth.Api;
using Android.Gms.Auth.Api.SignIn;
using Android.Gms.Cast.Framework;
@@ -64,7 +65,7 @@ namespace MusicApp
public bool prepared = false;
public bool SkipStop = false;
public BottomSheetBehavior SheetBehavior;
public PlayerBehavior SheetBehavior;
private const int RequestCode = 8539;
private const int WriteRequestCode = 2659;
@@ -104,7 +105,7 @@ namespace MusicApp
if(savedInstanceState == null)
Navigate(Resource.Id.musicLayout);
SheetBehavior = BottomSheetBehavior.From(FindViewById(Resource.Id.playerSheet));
SheetBehavior = (PlayerBehavior)BottomSheetBehavior.From(FindViewById(Resource.Id.playerSheet));
SheetBehavior.State = BottomSheetBehavior.StateCollapsed;
SheetBehavior.SetBottomSheetCallback(new PlayerCallback(this));
@@ -194,7 +195,6 @@ namespace MusicApp
if (!skipLastSigned)
{
Console.WriteLine("&Checking for last signed in account");
if (account == null)
account = GoogleSignIn.GetLastSignedInAccount(this);
@@ -206,9 +206,11 @@ namespace MusicApp
}
}
//This will be used only when the access has been revoked, when the refresh token has been lost or for the first loggin.
//In each case we want a refresh token so we call RequestServerAuthCode with true as the second parameter.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DefaultSignIn)
.RequestIdToken(GetString(Resource.String.clientID))
.RequestServerAuthCode(GetString(Resource.String.clientID))
.RequestServerAuthCode(GetString(Resource.String.clientID), true)
.RequestScopes(new Scope(YouTubeService.Scope.Youtube))
.Build();
@@ -296,7 +298,7 @@ namespace MusicApp
Console.WriteLine("&Getting refresh-token and creating a youtube service");
Console.WriteLine("&Code = " + account.ServerAuthCode);
if(account.ServerAuthCode == null)
if (account.ServerAuthCode == null)
{
Login(true, false, true);
return;
@@ -339,8 +341,8 @@ namespace MusicApp
using (StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()))
{
response = responseReader.ReadToEnd();
Console.WriteLine("&" + response);
}
Console.WriteLine("&Response: " + response);
JToken json = JObject.Parse(response);
GoogleCredential credential = GoogleCredential.FromAccessToken((string)json.SelectToken("access_token"));
@@ -351,7 +353,7 @@ namespace MusicApp
});
refreshToken = (string)json.SelectToken("refresh_token");
if(refreshToken != null)
if (refreshToken != null)
{
ISharedPreferencesEditor editor = prefManager.Edit();
editor.PutString("refresh-token", refreshToken);
@@ -367,7 +369,7 @@ namespace MusicApp
UnknowError(new Action(() => { CreateYoutube(); }));
}
}
else if(account != null)
else if (account != null)
{
Console.WriteLine("&Getting a new access-token and creating a youtube service");
Dictionary<string, string> fields = new Dictionary<string, string>
@@ -405,8 +407,8 @@ namespace MusicApp
using (StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()))
{
response = responseReader.ReadToEnd();
Console.WriteLine("&" + response);
}
Console.WriteLine("&Response: " + response);
JToken json = JObject.Parse(response);
GoogleCredential credential = GoogleCredential.FromAccessToken((string)json.SelectToken("access_token"));

View File

@@ -339,6 +339,7 @@
<Compile Include="Resources\Portable Class\DownloadQueue.cs" />
<Compile Include="Resources\Portable Class\DownloadQueueAdapter.cs" />
<Compile Include="Resources\Portable Class\FixedLinearLayoutManager.cs" />
<Compile Include="Resources\Portable Class\PlayerBehavior.cs" />
<Compile Include="Resources\Portable Class\PlaylistHolder.cs" />
<Compile Include="Resources\Portable Class\PlaylistLocationAdapter.cs" />
<Compile Include="Resources\Portable Class\PlaylistTrackAdapter.cs" />
@@ -569,9 +570,6 @@
<ItemGroup>
<AndroidResource Include="Resources\layout\SeekbarPreference.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\layout\ListPopupLayout.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\menu\QueueItems.xml" />
</ItemGroup>

View File

@@ -38,7 +38,7 @@ namespace MusicApp.Resources.Portable_Class
public ItemTouchCallback(IItemTouchAdapter adapter)
{
this.adapter = adapter;
drawable = MainActivity.instance.GetDrawable(Resource.Drawable.Delete);
drawable = Android.App.Application.Context.GetDrawable(Resource.Drawable.Delete);
}
public override int GetMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder)

View File

@@ -5,12 +5,12 @@ using Android.Content.PM;
using Android.Content.Res;
using Android.Gms.Cast.Framework;
using Android.Graphics;
using Android.Graphics.Drawables;
using Android.OS;
using Android.Runtime;
using Android.Support.Design.Widget;
using Android.Support.V4.Widget;
using Android.Support.V7.Graphics;
using Android.Support.V7.Widget;
using Android.Text;
using Android.Text.Style;
using Android.Util;
@@ -40,6 +40,7 @@ namespace MusicApp
private ProgressBar spBar;
private TextView timer;
private ImageView imgView;
private DrawerLayout DrawerLayout;
private bool prepared = false;
private readonly int[] timers = new int[] { 0, 2, 10, 30, 60, 120 };
private int checkedItem = 0;
@@ -64,9 +65,6 @@ namespace MusicApp
CastButtonFactory.SetUpMediaRouteButton(MainActivity.instance, MainActivity.instance.FindViewById<MediaRouteButton>(Resource.Id.castButton));
MainActivity.instance.PrepareSmallPlayer();
TextView title = MainActivity.instance.FindViewById<TextView>(Resource.Id.playerTitle);
TextView artist = MainActivity.instance.FindViewById<TextView>(Resource.Id.playerArtist);
imgView = MainActivity.instance.FindViewById<ImageView>(Resource.Id.playerAlbum);
if (!MainActivity.instance.FindViewById<ImageButton>(Resource.Id.playButton).HasOnClickListeners)
{
@@ -78,11 +76,7 @@ namespace MusicApp
MainActivity.instance.FindViewById<ImageButton>(Resource.Id.moreButton).Click += More;
}
title.Selected = true;
title.SetMarqueeRepeatLimit(3);
artist.Selected = true;
artist.SetMarqueeRepeatLimit(3);
imgView = MainActivity.instance.FindViewById<ImageView>(Resource.Id.playerAlbum);
timer = MainActivity.instance.FindViewById<TextView>(Resource.Id.timer);
bar = MainActivity.instance.FindViewById<SeekBar>(Resource.Id.songTimer);
bar.ProgressChanged += (sender, e) =>
@@ -92,6 +86,10 @@ namespace MusicApp
};
spBar = MainActivity.instance.FindViewById<ProgressBar>(Resource.Id.spProgress);
DrawerLayout = (DrawerLayout)MainActivity.instance.FindViewById(Resource.Id.playerView).Parent;
MainActivity.instance.FindViewById(Resource.Id.queueParent).LayoutParameters.Width = (int)(DrawerLayout.Width * 0.75f);
((FrameLayout.LayoutParams)MainActivity.instance.FindViewById(Resource.Id.queue).LayoutParameters).TopMargin = Resources.GetDimensionPixelSize(Resources.GetIdentifier("status_bar_height", "dimen", "android"));
}
public async void RefreshPlayer()
@@ -386,8 +384,8 @@ namespace MusicApp
private void ShowQueue_Click(object sender, EventArgs e)
{
Intent intent = new Intent(MainActivity.instance, typeof(Queue));
MainActivity.instance.StartActivity(intent);
Queue.instance.Refresh();
DrawerLayout.OpenDrawer((int)GravityFlags.Start);
}
private void Last_Click(object sender, EventArgs e)
@@ -541,61 +539,8 @@ namespace MusicApp
Color text = Color.Argb(Color.GetAlphaComponent(swatch.BodyTextColor), Color.GetRedComponent(swatch.BodyTextColor), Color.GetGreenComponent(swatch.BodyTextColor), Color.GetBlueComponent(swatch.BodyTextColor));
Color background = Color.Argb(Color.GetAlphaComponent(swatch.Rgb), Color.GetRedComponent(swatch.Rgb), Color.GetGreenComponent(swatch.Rgb), Color.GetBlueComponent(swatch.Rgb));
Color accentColor = Color.Argb(Color.GetAlphaComponent(accent.Rgb), Color.GetRedComponent(accent.Rgb), Color.GetGreenComponent(accent.Rgb), Color.GetBlueComponent(accent.Rgb));
//MainActivity.instance.FindViewById<TextView>(Resource.Id.playerTitle).SetTextColor(text);
//MainActivity.instance.FindViewById<TextView>(Resource.Id.playerArtist).SetTextColor(text);
MainActivity.instance.FindViewById<TextView>(Resource.Id.spTitle).SetTextColor(text);
MainActivity.instance.FindViewById<TextView>(Resource.Id.spArtist).SetTextColor(text);
//MainActivity.instance.FindViewById<FloatingActionButton>(Resource.Id.downFAB).BackgroundTintList = ColorStateList.ValueOf(accentColor);
//MainActivity.instance.FindViewById<FloatingActionButton>(Resource.Id.downFAB).RippleColor = accent.Rgb;
////float multiplier = 0.4f;
//////if(Build.VERSION.SdkInt >= BuildVersionCodes.M && IsColorDark(accentColor))
////// multiplier = 1.6f;
////int red = (int)(Color.GetRedComponent(accentColor.ToArgb()) * multiplier);
////int green = (int)(Color.GetGreenComponent(accentColor.ToArgb()) * multiplier);
////int blue = (int)(Color.GetBlueComponent(accentColor.ToArgb()) * multiplier);
////Color toolbar = Color.Rgb(red, green, blue);
////MainActivity.instance.FindViewById(Resource.Id.playerStatus).SetBackgroundColor(toolbar);
//////if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
//////{
////// int statusBar = (int)MainActivity.instance.Window.DecorView.SystemUiVisibility;
////// if (!IsColorDark(toolbar))
////// statusBar |= (int)SystemUiFlags.LightStatusBar;
////// else
////// statusBar ^= (int)SystemUiFlags.LightStatusBar;
////// MainActivity.instance.Window.DecorView.SystemUiVisibility = (StatusBarVisibility)statusBar;
//////}
////Reveal for the player
//View reveal = MainActivity.instance.FindViewById<View>(Resource.Id.reveal);
//int centerX, centerY;
//float endRadius;
//if (playNext == true)
//{
// centerX = 0;
// centerY = reveal.Height / 2;
// endRadius = reveal.Width * 1.3f;
//}
//else if(playNext == null)
//{
// centerX = reveal.Width / 2;
// centerY = reveal.Height;
// endRadius = reveal.Width / 1.5f;
//}
//else
//{
// centerX = reveal.Width;
// centerY = reveal.Height / 2;
// endRadius = reveal.Width * 1.3f;
//}
//Animator anim = ViewAnimationUtils.CreateCircularReveal(reveal, centerX, centerY, 0, endRadius);
//anim.AnimationStart += (sender, e) => { reveal.SetBackgroundColor(background); };
//anim.AnimationEnd += (sender, e) => { MainActivity.instance?.FindViewById<RelativeLayout>(Resource.Id.infoPanel).SetBackgroundColor(background); };
//anim.SetDuration(500);
//anim.StartDelay = 200;
//anim.Start();
//Reveal for the smallPlayer
if (prepared)
@@ -629,7 +574,6 @@ namespace MusicApp
if (IsColorDark(accent.Rgb))
{
//MainActivity.instance.FindViewById<FloatingActionButton>(Resource.Id.downFAB).ImageTintList = ColorStateList.ValueOf(Color.White);
MainActivity.instance.FindViewById<ImageButton>(Resource.Id.spNext).ImageTintList = ColorStateList.ValueOf(Color.White);
MainActivity.instance.FindViewById<ImageButton>(Resource.Id.spPlay).ImageTintList = ColorStateList.ValueOf(Color.White);
MainActivity.instance.FindViewById<ImageButton>(Resource.Id.spLast).ImageTintList = ColorStateList.ValueOf(Color.White);
@@ -637,7 +581,6 @@ namespace MusicApp
}
else
{
//MainActivity.instance.FindViewById<FloatingActionButton>(Resource.Id.downFAB).ImageTintList = ColorStateList.ValueOf(Color.Black);
MainActivity.instance.FindViewById<ImageButton>(Resource.Id.spNext).ImageTintList = ColorStateList.ValueOf(Color.Black);
MainActivity.instance.FindViewById<ImageButton>(Resource.Id.spPlay).ImageTintList = ColorStateList.ValueOf(Color.Black);
MainActivity.instance.FindViewById<ImageButton>(Resource.Id.spLast).ImageTintList = ColorStateList.ValueOf(Color.Black);
@@ -666,7 +609,6 @@ namespace MusicApp
private BottomNavigationView bottomView;
private FrameLayout smallPlayer;
private View playerContainer;
//private View playerStatusBar;
private CoordinatorLayout snackBar;
private bool Refreshed = false;
private SheetMovement movement = SheetMovement.Unknow;
@@ -678,12 +620,13 @@ namespace MusicApp
bottomView = context.FindViewById<BottomNavigationView>(Resource.Id.bottomView);
smallPlayer = context.FindViewById<FrameLayout>(Resource.Id.smallPlayer);
playerContainer = context.FindViewById(Resource.Id.playerContainer);
//playerStatusBar = context.FindViewById(Resource.Id.playerStatus);
snackBar = context.FindViewById<CoordinatorLayout>(Resource.Id.snackBar);
}
public override void OnSlide(View bottomSheet, float slideOffset)
{
smallPlayer.Visibility = ViewStates.Visible;
if (movement == SheetMovement.Unknow)
{
if (slideOffset > 0)
@@ -699,7 +642,6 @@ namespace MusicApp
sheet.TranslationY = -(int)((56 * context.Resources.DisplayMetrics.Density + 0.5f) * (1 - slideOffset));
playerContainer.Alpha = Math.Max(0, (slideOffset - 0.5f) * 2.5f);
//playerStatusBar.ScaleY = slideOffset;
smallPlayer.Alpha = Math.Max(0, 1 - slideOffset * 2);
snackBar.TranslationY = (int)((50 * context.Resources.DisplayMetrics.Density + 0.5f) * slideOffset);
@@ -725,6 +667,7 @@ namespace MusicApp
sheet.Alpha = 1;
playerContainer.Alpha = 1;
smallPlayer.Alpha = 0;
smallPlayer.Visibility = ViewStates.Gone;
bottomSheet.TranslationY = (int)(56 * context.Resources.DisplayMetrics.Density + 0.5f);
sheet.TranslationY = 0;
snackBar.TranslationY = (int)(50 * context.Resources.DisplayMetrics.Density + 0.5f);

View File

@@ -0,0 +1,66 @@
using Android.Content;
using Android.Runtime;
using Android.Support.Design.Widget;
using Android.Util;
using Android.Views;
using System;
[Register("MusicApp/PlayerBehavior")]
public class PlayerBehavior : BottomSheetBehavior
{
public bool PreventSlide = true;
public PlayerBehavior() { }
public PlayerBehavior(Context context, IAttributeSet attrs) : base(context, attrs) { }
protected PlayerBehavior(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer) { }
public override bool OnInterceptTouchEvent(CoordinatorLayout parent, Java.Lang.Object child, MotionEvent ev)
{
if (PreventSlide)
return false;
return base.OnInterceptTouchEvent(parent, child, ev);
}
public override bool OnTouchEvent(CoordinatorLayout parent, Java.Lang.Object child, MotionEvent ev)
{
if (PreventSlide)
return false;
return base.OnTouchEvent(parent, child, ev);
}
public override bool OnStartNestedScroll(CoordinatorLayout coordinatorLayout, Java.Lang.Object child, View directTargetChild, View target, int axes, int type)
{
if (PreventSlide)
return false;
return base.OnStartNestedScroll(coordinatorLayout, child, directTargetChild, target, axes, type);
}
public override bool OnNestedPreFling(CoordinatorLayout coordinatorLayout, Java.Lang.Object child, View target, float velocityX, float velocityY)
{
if (PreventSlide)
return false;
return base.OnNestedPreFling(coordinatorLayout, child, target, velocityX, velocityY);
}
public override void OnNestedPreScroll(CoordinatorLayout coordinatorLayout, Java.Lang.Object child, View target, int dx, int dy, int[] consumed, int type)
{
if (PreventSlide)
return;
base.OnNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed, type);
}
public override void OnStopNestedScroll(CoordinatorLayout coordinatorLayout, Java.Lang.Object child, View target, int type)
{
if (PreventSlide)
return;
base.OnStopNestedScroll(coordinatorLayout, child, target, type);
}
}

View File

@@ -37,7 +37,6 @@ namespace MusicApp.Resources.Portable_Class
SetSupportActionBar(toolbar);
instance = this;
Window.SetStatusBarColor(Android.Graphics.Color.Argb(255, 33, 33, 33));
toolbar.NavigationClick += (sender, e) =>
{
if (DownloadFragment.instance == null && TopicSelector.instance == null)
@@ -93,7 +92,6 @@ namespace MusicApp.Resources.Portable_Class
{
base.OnStop();
instance = null;
Window.SetStatusBarColor(Android.Graphics.Color.Transparent);
}
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
@@ -118,7 +116,6 @@ namespace MusicApp.Resources.Portable_Class
protected override void OnResume()
{
base.OnResume();
Window.SetStatusBarColor(Android.Graphics.Color.Argb(255, 33, 33, 33));
}
}

View File

@@ -3,279 +3,266 @@ using Android.Content;
using Android.Content.PM;
using Android.Graphics;
using Android.OS;
using Android.Runtime;
using Android.Support.Design.Widget;
using Android.Support.V7.App;
using Android.Support.V7.Widget;
using Android.Support.V7.Widget.Helper;
using Android.Views;
using Android.Widget;
using MusicApp;
using MusicApp.Resources.Portable_Class;
using MusicApp.Resources.values;
using Square.Picasso;
using System.Collections.Generic;
using Fragment = Android.Support.V4.App.Fragment;
using Toolbar = Android.Support.V7.Widget.Toolbar;
namespace MusicApp.Resources.Portable_Class
[Activity(Label = "Queue", Theme = "@style/Theme", ScreenOrientation = ScreenOrientation.Portrait)]
[Register("MusicApp/Queue")]
public class Queue : Fragment
{
[Activity(Label = "Queue", Theme = "@style/Theme", ScreenOrientation = ScreenOrientation.Portrait)]
public class Queue : AppCompatActivity
public static Queue instance;
public RecyclerView ListView;
public QueueAdapter adapter;
public ItemTouchHelper itemTouchHelper;
public IMenu menu;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
public static Queue instance;
public RecyclerView ListView;
public QueueAdapter adapter;
public ItemTouchHelper itemTouchHelper;
public IMenu menu;
View view = inflater.Inflate(Resource.Layout.RecyclerFragment, container, false);
instance = this;
ListView = view.FindViewById<RecyclerView>(Resource.Id.recycler);
ListView.SetLayoutManager(new LinearLayoutManager(Application.Context));
adapter = new QueueAdapter(MusicPlayer.queue);
ListView.SetAdapter(adapter);
adapter.ItemClick += ListView_ItemClick;
adapter.ItemLongCLick += ListView_ItemLongCLick;
ListView.SetItemAnimator(new DefaultItemAnimator());
ListView.ScrollChange += Scroll;
protected override void OnCreate(Bundle savedInstanceState)
ItemTouchHelper.Callback callback = new ItemTouchCallback(adapter);
itemTouchHelper = new ItemTouchHelper(callback);
itemTouchHelper.AttachToRecyclerView(ListView);
ListView.ScrollToPosition(MusicPlayer.CurrentID());
if (MusicPlayer.UseCastPlayer)
{
base.OnCreate(savedInstanceState);
Snackbar snackBar = Snackbar.Make(ListView, "Queue management with chromecast is currently in beta, expect some bugs.", (int)ToastLength.Short);
snackBar.View.FindViewById<TextView>(Resource.Id.snackbar_text).SetTextColor(Color.White);
snackBar.Show();
}
return view;
}
if (MainActivity.Theme == 1)
SetTheme(Resource.Style.DarkTheme);
private void Scroll(object sender, View.ScrollChangeEventArgs e) { }
SetContentView(Resource.Layout.ListPopupLayout);
instance = this;
//protected override void OnStop()
//{
// Home.instance?.RefreshQueue();
// MusicPlayer.ParseNextSong();
// base.OnStop();
// instance = null;
//}
SetSupportActionBar(FindViewById<Toolbar>(Resource.Id.toolbar));
SupportActionBar.SetHomeAsUpIndicator(Resource.Drawable.Close);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
FindViewById<Toolbar>(Resource.Id.toolbar).NavigationIcon.SetColorFilter(Color.White, PorterDuff.Mode.SrcAtop);
Window.SetStatusBarColor(Color.Argb(255, 33, 33, 33));
public void Refresh()
{
adapter.UpdateList(MusicPlayer.queue);
}
ListView = FindViewById<RecyclerView>(Resource.Id.recycler);
ListView.SetLayoutManager(new LinearLayoutManager(Application.Context));
adapter = new QueueAdapter(MusicPlayer.queue);
ListView.SetAdapter(adapter);
adapter.ItemClick += ListView_ItemClick;
adapter.ItemLongCLick += ListView_ItemLongCLick;
ListView.SetItemAnimator(new DefaultItemAnimator());
ListView.ScrollChange += Scroll;
ItemTouchHelper.Callback callback = new ItemTouchCallback(adapter);
itemTouchHelper = new ItemTouchHelper(callback);
itemTouchHelper.AttachToRecyclerView(ListView);
ListView.ScrollToPosition(MusicPlayer.CurrentID());
if (MusicPlayer.UseCastPlayer)
public void RefreshCurrent()
{
int first = ((LinearLayoutManager)ListView.GetLayoutManager()).FindFirstVisibleItemPosition();
int last = ((LinearLayoutManager)ListView.GetLayoutManager()).FindLastVisibleItemPosition() - 1;
for (int i = first; i <= last; i++)
{
Song song = MusicPlayer.queue[i];
RecyclerHolder holder = (RecyclerHolder)ListView.GetChildViewHolder(((LinearLayoutManager)ListView.GetLayoutManager()).FindViewByPosition(i));
if (MusicPlayer.queue[MusicPlayer.CurrentID()] == song)
{
Snackbar snackBar = Snackbar.Make(FindViewById(Resource.Id.recycler), "Queue management with chromecast is currently in beta, expect some bugs.", (int)ToastLength.Short);
snackBar.View.FindViewById<TextView>(Resource.Id.snackbar_text).SetTextColor(Color.White);
snackBar.Show();
}
}
private void Scroll(object sender, View.ScrollChangeEventArgs e) { }
protected override void OnStop()
{
Player.instance?.UpdateNext();
Home.instance?.RefreshQueue();
MusicPlayer.ParseNextSong();
Window.SetStatusBarColor(Color.Transparent);
base.OnStop();
instance = null;
}
public void Refresh()
{
adapter.UpdateList(MusicPlayer.queue);
}
public void RefreshCurrent()
{
int first = ((LinearLayoutManager)ListView.GetLayoutManager()).FindFirstVisibleItemPosition();
int last = ((LinearLayoutManager)ListView.GetLayoutManager()).FindLastVisibleItemPosition() - 1;
for (int i = first; i <= last; i++)
{
Song song = MusicPlayer.queue[i];
RecyclerHolder holder = (RecyclerHolder)ListView.GetChildViewHolder(((LinearLayoutManager)ListView.GetLayoutManager()).FindViewByPosition(i));
if (MusicPlayer.queue[MusicPlayer.CurrentID()] == song)
{
holder.status.Text = MusicPlayer.isRunning ? GetString(Resource.String.playing) : GetString(Resource.String.paused);
holder.status.SetTextColor(MusicPlayer.isRunning ? Color.Argb(255, 244, 81, 30) : Color.Argb(255, 66, 165, 245));
holder.status.Visibility = ViewStates.Visible;
}
else
holder.status.Visibility = ViewStates.Gone;
}
}
public void RefreshAP()
{
adapter.NotifyItemChanged(MusicPlayer.queue.Count);
}
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.QueueItems, menu);
this.menu = menu;
menu.FindItem(Resource.Id.shuffle).Icon.SetColorFilter(Color.White, PorterDuff.Mode.Multiply);
if (MusicPlayer.repeat)
menu.FindItem(Resource.Id.repeat).Icon.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply);
return base.OnCreateOptionsMenu(menu);
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
if (item.ItemId == Android.Resource.Id.Home)
{
Finish();
}
else if(item.ItemId == Resource.Id.shuffle)
{
ShuffleQueue();
}
else if(item.ItemId == Resource.Id.repeat)
{
Repeat(item);
}
return base.OnOptionsItemSelected(item);
}
void ShuffleQueue()
{
Intent intent = new Intent(this, typeof(MusicPlayer));
intent.SetAction("RandomizeQueue");
StartService(intent);
}
void Repeat(IMenuItem item)
{
MusicPlayer.repeat = !MusicPlayer.repeat;
if (MusicPlayer.UseCastPlayer)
MusicPlayer.RemotePlayer.QueueSetRepeatMode(MusicPlayer.repeat ? 1 : 0, null);
if (MusicPlayer.repeat)
{
item.Icon.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply);
MusicPlayer.useAutoPlay = false;
adapter.NotifyItemChanged(adapter.ItemCount - 1, "UseAutoplay");
holder.status.Text = MusicPlayer.isRunning ? GetString(Resource.String.playing) : GetString(Resource.String.paused);
holder.status.SetTextColor(MusicPlayer.isRunning ? Color.Argb(255, 244, 81, 30) : Color.Argb(255, 66, 165, 245));
holder.status.Visibility = ViewStates.Visible;
}
else
{
item.Icon.ClearColorFilter();
MusicPlayer.useAutoPlay = true;
adapter.NotifyItemChanged(adapter.ItemCount - 1, "UseAutoplay");
}
}
private void ListView_ItemClick(object sender, int Position)
{
Song item = MusicPlayer.queue[Position];
if (Position == MusicPlayer.CurrentID())
{
Intent intent = new Intent(this, typeof(MusicPlayer));
intent.SetAction("Pause");
StartService(intent);
}
else if(MusicPlayer.instance != null)
MusicPlayer.instance.SwitchQueue(Position);
else
{
Intent intent = new Intent(this, typeof(MusicPlayer));
intent.SetAction("SwitchQueue");
intent.PutExtra("queueSlot", Position);
StartService(intent);
}
}
private void ListView_ItemLongCLick(object sender, int e)
{
MainActivity.instance.contentRefresh.Enabled = false;
}
public void More(int position)
{
Song item = MusicPlayer.queue[position];
BottomSheetDialog bottomSheet = new BottomSheetDialog(this);
View bottomView = LayoutInflater.Inflate(Resource.Layout.BottomSheet, null);
bottomView.FindViewById<TextView>(Resource.Id.bsTitle).Text = item.Title;
bottomView.FindViewById<TextView>(Resource.Id.bsArtist).Text = item.Artist;
if (item.Album == null)
{
var songCover = Android.Net.Uri.Parse("content://media/external/audio/albumart");
var nextAlbumArtUri = ContentUris.WithAppendedId(songCover, item.AlbumArt);
Picasso.With(MainActivity.instance).Load(nextAlbumArtUri).Placeholder(Resource.Drawable.noAlbum).Resize(400, 400).CenterCrop().Into(bottomView.FindViewById<ImageView>(Resource.Id.bsArt));
}
else
{
Picasso.With(MainActivity.instance).Load(item.Album).Placeholder(Resource.Drawable.noAlbum).Transform(new RemoveBlackBorder(true)).Into(bottomView.FindViewById<ImageView>(Resource.Id.bsArt));
}
bottomSheet.SetContentView(bottomView);
List<BottomSheetAction> actions = new List<BottomSheetAction>
{
new BottomSheetAction(Resource.Drawable.Play, Resources.GetString(Resource.String.play), (sender, eventArg) => { ListView_ItemClick(null, position); bottomSheet.Dismiss(); }),
new BottomSheetAction(Resource.Drawable.Close, Resources.GetString(Resource.String.remove_from_queue), (sender, eventArg) => { RemoveFromQueue(position); bottomSheet.Dismiss(); }),
new BottomSheetAction(Resource.Drawable.PlaylistAdd, Resources.GetString(Resource.String.add_to_playlist), (sender, eventArg) => { Browse.GetPlaylist(item); bottomSheet.Dismiss(); })
};
if (item.IsYt)
{
actions.AddRange(new BottomSheetAction[]
{
new BottomSheetAction(Resource.Drawable.PlayCircle, Resources.GetString(Resource.String.create_mix_from_song), (sender, eventArg) =>
{
YoutubeEngine.CreateMix(item);
bottomSheet.Dismiss();
}),
new BottomSheetAction(Resource.Drawable.Download, Resources.GetString(Resource.String.download), (sender, eventArg) =>
{
YoutubeEngine.Download(item.Title, item.YoutubeID);
bottomSheet.Dismiss();
})
});
}
else
{
actions.Add(new BottomSheetAction(Resource.Drawable.Edit, Resources.GetString(Resource.String.edit_metadata), (sender, eventArg) =>
{
Browse.EditMetadata(item);
bottomSheet.Dismiss();
}));
}
bottomSheet.FindViewById<ListView>(Resource.Id.bsItems).Adapter = new BottomSheetAdapter(MainActivity.instance, Resource.Layout.BottomSheetText, actions);
bottomSheet.Show();
}
public static void InsertToQueue(int position, Song item)
{
if (MusicPlayer.CurrentID() >= position)
{
MusicPlayer.currentID++;
MusicPlayer.SaveQueueSlot();
}
MusicPlayer.InsertToQueue(position, item);
}
public static void RemoveFromQueue(int position)
{
if (MusicPlayer.CurrentID() > position)
{
MusicPlayer.currentID--;
MusicPlayer.SaveQueueSlot();
}
MusicPlayer.RemoveFromQueue(position);
if (instance != null)
instance.adapter.NotifyItemRemoved(position);
}
protected override void OnResume()
{
base.OnResume();
Window.SetStatusBarColor(Color.Argb(255, 33, 33, 33));
instance = this;
RefreshCurrent();
holder.status.Visibility = ViewStates.Gone;
}
}
public void RefreshAP()
{
adapter.NotifyItemChanged(MusicPlayer.queue.Count);
}
//public override bool OnCreateOptionsMenu(IMenu menu)
//{
// MenuInflater.Inflate(Resource.Menu.QueueItems, menu);
// this.menu = menu;
// menu.FindItem(Resource.Id.shuffle).Icon.SetColorFilter(Color.White, PorterDuff.Mode.Multiply);
// if (MusicPlayer.repeat)
// menu.FindItem(Resource.Id.repeat).Icon.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply);
// return base.OnCreateOptionsMenu(menu);
//}
//public override bool OnOptionsItemSelected(IMenuItem item)
//{
// if (item.ItemId == Android.Resource.Id.Home)
// {
// Finish();
// }
// else if(item.ItemId == Resource.Id.shuffle)
// {
// ShuffleQueue();
// }
// else if(item.ItemId == Resource.Id.repeat)
// {
// Repeat(item);
// }
// return base.OnOptionsItemSelected(item);
//}
void ShuffleQueue()
{
Intent intent = new Intent(Activity, typeof(MusicPlayer));
intent.SetAction("RandomizeQueue");
Activity.StartService(intent);
}
void Repeat(IMenuItem item)
{
MusicPlayer.repeat = !MusicPlayer.repeat;
if (MusicPlayer.UseCastPlayer)
MusicPlayer.RemotePlayer.QueueSetRepeatMode(MusicPlayer.repeat ? 1 : 0, null);
if (MusicPlayer.repeat)
{
item.Icon.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply);
MusicPlayer.useAutoPlay = false;
adapter.NotifyItemChanged(adapter.ItemCount - 1, "UseAutoplay");
}
else
{
item.Icon.ClearColorFilter();
MusicPlayer.useAutoPlay = true;
adapter.NotifyItemChanged(adapter.ItemCount - 1, "UseAutoplay");
}
}
private void ListView_ItemClick(object sender, int Position)
{
Song item = MusicPlayer.queue[Position];
if (Position == MusicPlayer.CurrentID())
{
Intent intent = new Intent(Activity, typeof(MusicPlayer));
intent.SetAction("Pause");
Activity.StartService(intent);
}
else if(MusicPlayer.instance != null)
MusicPlayer.instance.SwitchQueue(Position);
else
{
Intent intent = new Intent(Activity, typeof(MusicPlayer));
intent.SetAction("SwitchQueue");
intent.PutExtra("queueSlot", Position);
Activity.StartService(intent);
}
}
private void ListView_ItemLongCLick(object sender, int e)
{
MainActivity.instance.contentRefresh.Enabled = false;
}
public void More(int position)
{
Song item = MusicPlayer.queue[position];
BottomSheetDialog bottomSheet = new BottomSheetDialog(MainActivity.instance);
View bottomView = LayoutInflater.Inflate(Resource.Layout.BottomSheet, null);
bottomView.FindViewById<TextView>(Resource.Id.bsTitle).Text = item.Title;
bottomView.FindViewById<TextView>(Resource.Id.bsArtist).Text = item.Artist;
if (item.Album == null)
{
var songCover = Android.Net.Uri.Parse("content://media/external/audio/albumart");
var nextAlbumArtUri = ContentUris.WithAppendedId(songCover, item.AlbumArt);
Picasso.With(MainActivity.instance).Load(nextAlbumArtUri).Placeholder(Resource.Drawable.noAlbum).Resize(400, 400).CenterCrop().Into(bottomView.FindViewById<ImageView>(Resource.Id.bsArt));
}
else
{
Picasso.With(MainActivity.instance).Load(item.Album).Placeholder(Resource.Drawable.noAlbum).Transform(new RemoveBlackBorder(true)).Into(bottomView.FindViewById<ImageView>(Resource.Id.bsArt));
}
bottomSheet.SetContentView(bottomView);
List<BottomSheetAction> actions = new List<BottomSheetAction>
{
new BottomSheetAction(Resource.Drawable.Play, Resources.GetString(Resource.String.play), (sender, eventArg) => { ListView_ItemClick(null, position); bottomSheet.Dismiss(); }),
new BottomSheetAction(Resource.Drawable.Close, Resources.GetString(Resource.String.remove_from_queue), (sender, eventArg) => { RemoveFromQueue(position); bottomSheet.Dismiss(); }),
new BottomSheetAction(Resource.Drawable.PlaylistAdd, Resources.GetString(Resource.String.add_to_playlist), (sender, eventArg) => { Browse.GetPlaylist(item); bottomSheet.Dismiss(); })
};
if (item.IsYt)
{
actions.AddRange(new BottomSheetAction[]
{
new BottomSheetAction(Resource.Drawable.PlayCircle, Resources.GetString(Resource.String.create_mix_from_song), (sender, eventArg) =>
{
YoutubeEngine.CreateMix(item);
bottomSheet.Dismiss();
}),
new BottomSheetAction(Resource.Drawable.Download, Resources.GetString(Resource.String.download), (sender, eventArg) =>
{
YoutubeEngine.Download(item.Title, item.YoutubeID);
bottomSheet.Dismiss();
})
});
}
else
{
actions.Add(new BottomSheetAction(Resource.Drawable.Edit, Resources.GetString(Resource.String.edit_metadata), (sender, eventArg) =>
{
Browse.EditMetadata(item);
bottomSheet.Dismiss();
}));
}
bottomSheet.FindViewById<ListView>(Resource.Id.bsItems).Adapter = new BottomSheetAdapter(MainActivity.instance, Resource.Layout.BottomSheetText, actions);
bottomSheet.Show();
}
public static void InsertToQueue(int position, Song item)
{
if (MusicPlayer.CurrentID() >= position)
{
MusicPlayer.currentID++;
MusicPlayer.SaveQueueSlot();
}
MusicPlayer.InsertToQueue(position, item);
}
public static void RemoveFromQueue(int position)
{
if (MusicPlayer.CurrentID() > position)
{
MusicPlayer.currentID--;
MusicPlayer.SaveQueueSlot();
}
MusicPlayer.RemoveFromQueue(position);
if (instance != null)
instance.adapter.NotifyItemRemoved(position);
}
public override void OnResume()
{
base.OnResume();
instance = this;
RefreshCurrent();
}
}

View File

@@ -53,9 +53,9 @@ namespace MusicApp.Resources.Portable_Class
if (!holder.ItemView.HasOnClickListeners)
holder.ItemView.Click += (sender, eventArg) =>
{
Intent intent = new Intent(Queue.instance, typeof(MusicPlayer));
Intent intent = new Intent(MainActivity.instance, typeof(MusicPlayer));
intent.SetAction("Next");
Queue.instance.StartService(intent);
MainActivity.instance.StartService(intent);
};
if(MusicPlayer.autoPlay.Count > 0)
@@ -116,10 +116,10 @@ namespace MusicApp.Resources.Portable_Class
}
};
holder.MixButton.Click += async (sender, e) =>
{
YoutubeEngine.CreateMix(await MusicPlayer.GetItem());
};
//holder.MixButton.Click += async (sender, e) =>
//{
// YoutubeEngine.CreateMix(await MusicPlayer.GetItem());
//};
}
}
else
@@ -134,12 +134,12 @@ namespace MusicApp.Resources.Portable_Class
holder.Artist.SetTextColor(Color.White);
holder.Artist.Alpha = 0.7f;
holder.youtubeIcon.SetColorFilter(Color.White);
holder.ItemView.SetBackgroundColor(Color.ParseColor("#424242"));
//holder.ItemView.SetBackgroundColor(Color.ParseColor("#424242"));
}
else
holder.ItemView.SetBackgroundColor(Color.White);
//else
// holder.ItemView.SetBackgroundColor(Color.White);
holder.reorder.Visibility = ViewStates.Visible;
holder.reorder.Visibility = ViewStates.Gone;
if (position == MusicPlayer.CurrentID())
{
holder.status.Visibility = ViewStates.Visible;
@@ -213,10 +213,10 @@ namespace MusicApp.Resources.Portable_Class
};
}
if (position == MusicPlayer.CurrentID())
holder.Title.SetTextSize(Android.Util.ComplexUnitType.Dip, 18);
else
holder.Title.SetTextSize(Android.Util.ComplexUnitType.Dip, 14);
//if (position == MusicPlayer.CurrentID())
// holder.Title.SetTextSize(Android.Util.ComplexUnitType.Dip, 18);
//else
// holder.Title.SetTextSize(Android.Util.ComplexUnitType.Dip, 14);
if (song.IsParsed != true && song.IsYt)
{
@@ -251,9 +251,9 @@ namespace MusicApp.Resources.Portable_Class
if (!holder.ItemView.HasOnClickListeners)
holder.ItemView.Click += (sender, eventArg) =>
{
Intent intent = new Intent(Queue.instance, typeof(MusicPlayer));
Intent intent = new Intent(MainActivity.instance, typeof(MusicPlayer));
intent.SetAction("Next");
Queue.instance.StartService(intent);
MainActivity.instance.StartService(intent);
};
if (MusicPlayer.autoPlay.Count > 0)
@@ -415,7 +415,7 @@ namespace MusicApp.Resources.Portable_Class
{
Song song = songList[position];
Queue.RemoveFromQueue(position);
Snackbar snackbar = Snackbar.Make(Queue.instance.FindViewById(Resource.Id.recycler), (song.Title.Length > 20 ? song.Title.Substring(0, 17) + "..." : song.Title) + Queue.instance.GetString(Resource.String.removed_from_queue), Snackbar.LengthShort)
Snackbar snackbar = Snackbar.Make(MainActivity.instance.FindViewById(Resource.Id.recycler), (song.Title.Length > 20 ? song.Title.Substring(0, 17) + "..." : song.Title) + Queue.instance.GetString(Resource.String.removed_from_queue), Snackbar.LengthShort)
.SetAction(Queue.instance.GetString(Resource.String.undo), (view) =>
{
Queue.InsertToQueue(position, song);

View File

@@ -8,7 +8,7 @@ namespace MusicApp.Resources.Portable_Class
public class QueueFooter : RecyclerView.ViewHolder
{
public Switch SwitchButton;
public Button MixButton;
//public Button MixButton;
public CardView Autoplay;
public TextView NextTitle;
public ImageView NextAlbum;
@@ -17,7 +17,7 @@ namespace MusicApp.Resources.Portable_Class
public QueueFooter(View itemView) : base(itemView)
{
SwitchButton = itemView.FindViewById<Switch>(Resource.Id.queueSwitch);
MixButton = itemView.FindViewById<Button>(Resource.Id.createMix);
//MixButton = itemView.FindViewById<Button>(Resource.Id.createMix);
Autoplay = itemView.FindViewById<CardView>(Resource.Id.autoplay);
NextTitle = itemView.FindViewById<TextView>(Resource.Id.apTitle);
NextAlbum = itemView.FindViewById<ImageView>(Resource.Id.apAlbum);

View File

@@ -4973,11 +4973,11 @@ namespace MusicApp
// aapt resource value: 0x7f0a0065
public const int META = 2131361893;
// aapt resource value: 0x7f0a01ac
public const int PreferenceFragment = 2131362220;
// aapt resource value: 0x7f0a01af
public const int PreferenceFragment = 2131362223;
// aapt resource value: 0x7f0a01ad
public const int PreferenceScreen = 2131362221;
// aapt resource value: 0x7f0a01b0
public const int PreferenceScreen = 2131362224;
// aapt resource value: 0x7f0a0066
public const int SHIFT = 2131361894;
@@ -4985,8 +4985,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0067
public const int SYM = 2131361895;
// aapt resource value: 0x7f0a01af
public const int accountPreference = 2131362223;
// aapt resource value: 0x7f0a01b2
public const int accountPreference = 2131362226;
// aapt resource value: 0x7f0a00fe
public const int action = 2131362046;
@@ -5072,8 +5072,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0057
public const int add = 2131361879;
// aapt resource value: 0x7f0a01cb
public const int addToQueue = 2131362251;
// aapt resource value: 0x7f0a01cd
public const int addToQueue = 2131362253;
// aapt resource value: 0x7f0a00cc
public const int added = 2131361996;
@@ -5096,11 +5096,11 @@ namespace MusicApp
// aapt resource value: 0x7f0a0068
public const int always = 2131361896;
// aapt resource value: 0x7f0a01b3
public const int apAlbum = 2131362227;
// aapt resource value: 0x7f0a01b5
public const int apTitle = 2131362229;
public const int apAlbum = 2131362229;
// aapt resource value: 0x7f0a01b7
public const int apTitle = 2131362231;
// aapt resource value: 0x7f0a011c
public const int appbar = 2131362076;
@@ -5117,8 +5117,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a004b
public const int auto = 2131361867;
// aapt resource value: 0x7f0a01b2
public const int autoplay = 2131362226;
// aapt resource value: 0x7f0a01b4
public const int autoplay = 2131362228;
// aapt resource value: 0x7f0a0120
public const int backToolbar = 2131362080;
@@ -5132,8 +5132,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a005f
public const int beginning = 2131361887;
// aapt resource value: 0x7f0a01ae
public const int behavior = 2131362222;
// aapt resource value: 0x7f0a01b1
public const int behavior = 2131362225;
// aapt resource value: 0x7f0a008e
public const int blocking = 2131361934;
@@ -5147,8 +5147,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0137
public const int bottomView = 2131362103;
// aapt resource value: 0x7f0a01c6
public const int browseLayout = 2131362246;
// aapt resource value: 0x7f0a01c8
public const int browseLayout = 2131362248;
// aapt resource value: 0x7f0a00d8
public const int browseList = 2131362008;
@@ -5186,14 +5186,14 @@ namespace MusicApp
// aapt resource value: 0x7f0a00ef
public const int button_play_pause_toggle = 2131362031;
// aapt resource value: 0x7f0a018e
public const int buttonsRight = 2131362190;
// aapt resource value: 0x7f0a018f
public const int buttonsRight = 2131362191;
// aapt resource value: 0x7f0a017c
public const int cancel_action = 2131362172;
// aapt resource value: 0x7f0a018f
public const int castButton = 2131362191;
// aapt resource value: 0x7f0a0190
public const int castButton = 2131362192;
// aapt resource value: 0x7f0a0000
public const int cast_button_type_closed_caption = 2131361792;
@@ -5282,8 +5282,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a00b1
public const int content = 2131361969;
// aapt resource value: 0x7f0a0132
public const int contentLayout = 2131362098;
// aapt resource value: 0x7f0a0131
public const int contentLayout = 2131362097;
// aapt resource value: 0x7f0a00a4
public const int contentPanel = 2131361956;
@@ -5300,9 +5300,6 @@ namespace MusicApp
// aapt resource value: 0x7f0a010f
public const int coordinator = 2131362063;
// aapt resource value: 0x7f0a01b1
public const int createMix = 2131362225;
// aapt resource value: 0x7f0a00ab
public const int custom = 2131361963;
@@ -5318,8 +5315,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a009e
public const int default_activity_button = 2131361950;
// aapt resource value: 0x7f0a01c8
public const int delete = 2131362248;
// aapt resource value: 0x7f0a01ca
public const int delete = 2131362250;
// aapt resource value: 0x7f0a0111
public const int design_bottom_sheet = 2131362065;
@@ -5342,20 +5339,23 @@ namespace MusicApp
// aapt resource value: 0x7f0a00d0
public const int divider = 2131362000;
// aapt resource value: 0x7f0a0190
public const int downButton = 2131362192;
// aapt resource value: 0x7f0a0191
public const int downButton = 2131362193;
// aapt resource value: 0x7f0a01d2
public const int download = 2131362258;
// aapt resource value: 0x7f0a01d4
public const int download = 2131362260;
// aapt resource value: 0x7f0a01c9
public const int downloadMDfromYT = 2131362249;
// aapt resource value: 0x7f0a01cb
public const int downloadMDfromYT = 2131362251;
// aapt resource value: 0x7f0a0119
public const int downloadStatus = 2131362073;
// aapt resource value: 0x7f0a01a5
public const int edit = 2131362213;
// aapt resource value: 0x7f0a018c
public const int drawer = 2131362188;
// aapt resource value: 0x7f0a01a8
public const int edit = 2131362216;
// aapt resource value: 0x7f0a00be
public const int edit_query = 2131361982;
@@ -5474,8 +5474,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0087
public const int filled = 2131361927;
// aapt resource value: 0x7f0a01cf
public const int filter = 2131362255;
// aapt resource value: 0x7f0a01d1
public const int filter = 2131362257;
// aapt resource value: 0x7f0a0092
public const int fit = 2131361938;
@@ -5501,8 +5501,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a008f
public const int forever = 2131361935;
// aapt resource value: 0x7f0a01d3
public const int fork = 2131362259;
// aapt resource value: 0x7f0a01d5
public const int fork = 2131362261;
// aapt resource value: 0x7f0a0017
public const int ghost_view = 2131361815;
@@ -5510,26 +5510,26 @@ namespace MusicApp
// aapt resource value: 0x7f0a00b0
public const int group_divider = 2131361968;
// aapt resource value: 0x7f0a019c
public const int headerArt = 2131362204;
// aapt resource value: 0x7f0a019f
public const int headerAuthor = 2131362207;
// aapt resource value: 0x7f0a01a3
public const int headerMore = 2131362211;
// aapt resource value: 0x7f0a01a0
public const int headerNumber = 2131362208;
// aapt resource value: 0x7f0a01a1
public const int headerPlay = 2131362209;
public const int headerArt = 2131362207;
// aapt resource value: 0x7f0a01a2
public const int headerShuffle = 2131362210;
public const int headerAuthor = 2131362210;
// aapt resource value: 0x7f0a019e
public const int headerTitle = 2131362206;
// aapt resource value: 0x7f0a01a6
public const int headerMore = 2131362214;
// aapt resource value: 0x7f0a01a3
public const int headerNumber = 2131362211;
// aapt resource value: 0x7f0a01a4
public const int headerPlay = 2131362212;
// aapt resource value: 0x7f0a01a5
public const int headerShuffle = 2131362213;
// aapt resource value: 0x7f0a01a1
public const int headerTitle = 2131362209;
// aapt resource value: 0x7f0a0012
public const int home = 2131361810;
@@ -5540,8 +5540,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a00a0
public const int icon = 2131361952;
// aapt resource value: 0x7f0a01bf
public const int icon1 = 2131362239;
// aapt resource value: 0x7f0a01c1
public const int icon1 = 2131362241;
// aapt resource value: 0x7f0a0129
public const int icon_frame = 2131362089;
@@ -5564,11 +5564,11 @@ namespace MusicApp
// aapt resource value: 0x7f0a0185
public const int info = 2131362181;
// aapt resource value: 0x7f0a019b
public const int infoPanel = 2131362203;
// aapt resource value: 0x7f0a019e
public const int infoPanel = 2131362206;
// aapt resource value: 0x7f0a01bd
public const int isLive = 2131362237;
// aapt resource value: 0x7f0a01bf
public const int isLive = 2131362239;
// aapt resource value: 0x7f0a0090
public const int italic = 2131361936;
@@ -5582,14 +5582,14 @@ namespace MusicApp
// aapt resource value: 0x7f0a010d
public const int largeLabel = 2131362061;
// aapt resource value: 0x7f0a0196
public const int lastButton = 2131362198;
// aapt resource value: 0x7f0a0197
public const int lastButton = 2131362199;
// aapt resource value: 0x7f0a007c
public const int left = 2131361916;
// aapt resource value: 0x7f0a01bb
public const int leftButtons = 2131362235;
// aapt resource value: 0x7f0a01bd
public const int leftButtons = 2131362237;
// aapt resource value: 0x7f0a00d2
public const int leftIcon = 2131362002;
@@ -5600,8 +5600,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0029
public const int line1 = 2131361833;
// aapt resource value: 0x7f0a01c2
public const int line2 = 2131362242;
// aapt resource value: 0x7f0a01c4
public const int line2 = 2131362244;
// aapt resource value: 0x7f0a002a
public const int line3 = 2131361834;
@@ -5630,23 +5630,23 @@ namespace MusicApp
// aapt resource value: 0x7f0a00e5
public const int loading_indicator = 2131362021;
// aapt resource value: 0x7f0a0131
public const int logButton = 2131362097;
// aapt resource value: 0x7f0a0130
public const int logButton = 2131362096;
// aapt resource value: 0x7f0a0103
public const int logo = 2131362051;
// aapt resource value: 0x7f0a01c4
public const int masked = 2131362244;
// aapt resource value: 0x7f0a01c6
public const int masked = 2131362246;
// aapt resource value: 0x7f0a01ba
public const int maxValue = 2131362234;
// aapt resource value: 0x7f0a01bc
public const int maxValue = 2131362236;
// aapt resource value: 0x7f0a017e
public const int media_actions = 2131362174;
// aapt resource value: 0x7f0a01d0
public const int media_route_menu_item = 2131362256;
// aapt resource value: 0x7f0a01d2
public const int media_route_menu_item = 2131362258;
// aapt resource value: 0x7f0a00cb
public const int message = 2131361995;
@@ -5675,8 +5675,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0061
public const int middle = 2131361889;
// aapt resource value: 0x7f0a01b9
public const int minValue = 2131362233;
// aapt resource value: 0x7f0a01bb
public const int minValue = 2131362235;
// aapt resource value: 0x7f0a0081
public const int mini = 2131361921;
@@ -5693,8 +5693,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0118
public const int more = 2131362072;
// aapt resource value: 0x7f0a019a
public const int moreButton = 2131362202;
// aapt resource value: 0x7f0a019b
public const int moreButton = 2131362203;
// aapt resource value: 0x7f0a0163
public const int mr_art = 2131362147;
@@ -5843,8 +5843,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0058
public const int multiply = 2131361880;
// aapt resource value: 0x7f0a01c5
public const int musicLayout = 2131362245;
// aapt resource value: 0x7f0a01c7
public const int musicLayout = 2131362247;
// aapt resource value: 0x7f0a0102
public const int name = 2131362050;
@@ -5855,8 +5855,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a006b
public const int never = 2131361899;
// aapt resource value: 0x7f0a0199
public const int nextButton = 2131362201;
// aapt resource value: 0x7f0a019a
public const int nextButton = 2131362202;
// aapt resource value: 0x7f0a0177
public const int noPlaylist = 2131362167;
@@ -5885,8 +5885,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0088
public const int outline = 2131361928;
// aapt resource value: 0x7f0a01c1
public const int pager = 2131362241;
// aapt resource value: 0x7f0a01c3
public const int pager = 2131362243;
// aapt resource value: 0x7f0a007f
public const int parallax = 2131361919;
@@ -5900,17 +5900,17 @@ namespace MusicApp
// aapt resource value: 0x7f0a0080
public const int pin = 2131361920;
// aapt resource value: 0x7f0a0197
public const int playButton = 2131362199;
// aapt resource value: 0x7f0a018d
public const int playerAlbum = 2131362189;
// aapt resource value: 0x7f0a0192
public const int playerArtist = 2131362194;
// aapt resource value: 0x7f0a0198
public const int playerBuffer = 2131362200;
public const int playButton = 2131362200;
// aapt resource value: 0x7f0a018e
public const int playerAlbum = 2131362190;
// aapt resource value: 0x7f0a0193
public const int playerArtist = 2131362195;
// aapt resource value: 0x7f0a0199
public const int playerBuffer = 2131362201;
// aapt resource value: 0x7f0a0145
public const int playerContainer = 2131362117;
@@ -5918,23 +5918,23 @@ namespace MusicApp
// aapt resource value: 0x7f0a0138
public const int playerSheet = 2131362104;
// aapt resource value: 0x7f0a0191
public const int playerTitle = 2131362193;
// aapt resource value: 0x7f0a0192
public const int playerTitle = 2131362194;
// aapt resource value: 0x7f0a018c
public const int playerView = 2131362188;
// aapt resource value: 0x7f0a018d
public const int playerView = 2131362189;
// aapt resource value: 0x7f0a0139
public const int playersHolder = 2131362105;
// aapt resource value: 0x7f0a019d
public const int playlistDark = 2131362205;
// aapt resource value: 0x7f0a01a0
public const int playlistDark = 2131362208;
// aapt resource value: 0x7f0a0133
public const int playlistHeader = 2131362099;
// aapt resource value: 0x7f0a0132
public const int playlistHeader = 2131362098;
// aapt resource value: 0x7f0a01c7
public const int playlistLayout = 2131362247;
// aapt resource value: 0x7f0a01c9
public const int playlistLayout = 2131362249;
// aapt resource value: 0x7f0a010b
public const int playlistLocation = 2131362059;
@@ -5942,8 +5942,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a010a
public const int playlistName = 2131362058;
// aapt resource value: 0x7f0a01b6
public const int playlistURL = 2131362230;
// aapt resource value: 0x7f0a01b8
public const int playlistURL = 2131362232;
// aapt resource value: 0x7f0a011b
public const int progress = 2131362075;
@@ -5957,8 +5957,14 @@ namespace MusicApp
// aapt resource value: 0x7f0a0014
public const int progress_horizontal = 2131361812;
// aapt resource value: 0x7f0a01b0
public const int queueSwitch = 2131362224;
// aapt resource value: 0x7f0a019d
public const int queue = 2131362205;
// aapt resource value: 0x7f0a019c
public const int queueParent = 2131362204;
// aapt resource value: 0x7f0a01b3
public const int queueSwitch = 2131362227;
// aapt resource value: 0x7f0a00b6
public const int radio = 2131361974;
@@ -5966,29 +5972,29 @@ namespace MusicApp
// aapt resource value: 0x7f0a00cf
public const int recycler = 2131361999;
// aapt resource value: 0x7f0a01a8
public const int recycler_view = 2131362216;
// aapt resource value: 0x7f0a01ab
public const int recycler_view = 2131362219;
// aapt resource value: 0x7f0a01c0
public const int refine = 2131362240;
// aapt resource value: 0x7f0a01cc
public const int rename = 2131362252;
// aapt resource value: 0x7f0a01bc
public const int reorder = 2131362236;
// aapt resource value: 0x7f0a01c2
public const int refine = 2131362242;
// aapt resource value: 0x7f0a01ce
public const int repeat = 2131362254;
public const int rename = 2131362254;
// aapt resource value: 0x7f0a01be
public const int reorder = 2131362238;
// aapt resource value: 0x7f0a01d0
public const int repeat = 2131362256;
// aapt resource value: 0x7f0a007d
public const int right = 2131361917;
// aapt resource value: 0x7f0a01a4
public const int rightButtons = 2131362212;
// aapt resource value: 0x7f0a01a7
public const int rightButtons = 2131362215;
// aapt resource value: 0x7f0a01b4
public const int rightIcon = 2131362228;
// aapt resource value: 0x7f0a01b6
public const int rightIcon = 2131362230;
// aapt resource value: 0x7f0a0186
public const int right_icon = 2131362182;
@@ -6023,11 +6029,11 @@ namespace MusicApp
// aapt resource value: 0x7f0a0085
public const int scrollable = 2131361925;
// aapt resource value: 0x7f0a01b7
public const int search = 2131362231;
// aapt resource value: 0x7f0a01b9
public const int search = 2131362233;
// aapt resource value: 0x7f0a01b8
public const int searchSuggestions = 2131362232;
// aapt resource value: 0x7f0a01ba
public const int searchSuggestions = 2131362234;
// aapt resource value: 0x7f0a00c0
public const int search_badge = 2131361984;
@@ -6065,11 +6071,11 @@ namespace MusicApp
// aapt resource value: 0x7f0a00e7
public const int seek_bar_controls = 2131362023;
// aapt resource value: 0x7f0a01a9
public const int seekbar = 2131362217;
// aapt resource value: 0x7f0a01ac
public const int seekbar = 2131362220;
// aapt resource value: 0x7f0a01aa
public const int seekbar_value = 2131362218;
// aapt resource value: 0x7f0a01ad
public const int seekbar_value = 2131362221;
// aapt resource value: 0x7f0a00ca
public const int select_dialog_listview = 2131361994;
@@ -6077,8 +6083,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0077
public const int selected = 2131361911;
// aapt resource value: 0x7f0a01d1
public const int settings = 2131362257;
// aapt resource value: 0x7f0a01d3
public const int settings = 2131362259;
// aapt resource value: 0x7f0a00b2
public const int shortcut = 2131361970;
@@ -6089,14 +6095,14 @@ namespace MusicApp
// aapt resource value: 0x7f0a0054
public const int showHome = 2131361876;
// aapt resource value: 0x7f0a0195
public const int showQueue = 2131362197;
// aapt resource value: 0x7f0a0196
public const int showQueue = 2131362198;
// aapt resource value: 0x7f0a0055
public const int showTitle = 2131361877;
// aapt resource value: 0x7f0a01cd
public const int shuffle = 2131362253;
// aapt resource value: 0x7f0a01cf
public const int shuffle = 2131362255;
// aapt resource value: 0x7f0a010c
public const int smallLabel = 2131362060;
@@ -6119,8 +6125,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0074
public const int snapMargins = 2131361908;
// aapt resource value: 0x7f0a0193
public const int songTimer = 2131362195;
// aapt resource value: 0x7f0a0194
public const int songTimer = 2131362196;
// aapt resource value: 0x7f0a013d
public const int spArt = 2131362109;
@@ -6155,8 +6161,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a00a2
public const int spacer = 2131361954;
// aapt resource value: 0x7f0a01a7
public const int spinner = 2131362215;
// aapt resource value: 0x7f0a01aa
public const int spinner = 2131362218;
// aapt resource value: 0x7f0a0015
public const int split_action_bar = 2131361813;
@@ -6203,11 +6209,11 @@ namespace MusicApp
// aapt resource value: 0x7f0a0096
public const int surface_view = 2131361942;
// aapt resource value: 0x7f0a01ab
public const int switchWidget = 2131362219;
// aapt resource value: 0x7f0a01ae
public const int switchWidget = 2131362222;
// aapt resource value: 0x7f0a01a6
public const int sync = 2131362214;
// aapt resource value: 0x7f0a01a9
public const int sync = 2131362217;
// aapt resource value: 0x7f0a00ce
public const int syncLoading = 2131361998;
@@ -6218,8 +6224,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a00f9
public const int tab_host = 2131362041;
// aapt resource value: 0x7f0a0134
public const int tabs = 2131362100;
// aapt resource value: 0x7f0a0133
public const int tabs = 2131362099;
// aapt resource value: 0x7f0a002b
public const int tag_transition_group = 2131361835;
@@ -6275,8 +6281,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0183
public const int time = 2131362179;
// aapt resource value: 0x7f0a0194
public const int timer = 2131362196;
// aapt resource value: 0x7f0a0195
public const int timer = 2131362197;
// aapt resource value: 0x7f0a0030
public const int title = 2131361840;
@@ -6317,8 +6323,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0020
public const int transition_transform = 2131361824;
// aapt resource value: 0x7f0a01ca
public const int undoChange = 2131362250;
// aapt resource value: 0x7f0a01cc
public const int undoChange = 2131362252;
// aapt resource value: 0x7f0a005d
public const int uniform = 2131361885;
@@ -6338,8 +6344,8 @@ namespace MusicApp
// aapt resource value: 0x7f0a0028
public const int view_offset_helper = 2131361832;
// aapt resource value: 0x7f0a01c3
public const int visible = 2131362243;
// aapt resource value: 0x7f0a01c5
public const int visible = 2131362245;
// aapt resource value: 0x7f0a0169
public const int volume_item_container = 2131362153;
@@ -6353,11 +6359,11 @@ namespace MusicApp
// aapt resource value: 0x7f0a005e
public const int wrap_content = 2131361886;
// aapt resource value: 0x7f0a01be
public const int youtubeIcon = 2131362238;
// aapt resource value: 0x7f0a01c0
public const int youtubeIcon = 2131362240;
// aapt resource value: 0x7f0a0130
public const int ytProgress = 2131362096;
// aapt resource value: 0x7f0a0134
public const int ytProgress = 2131362100;
// aapt resource value: 0x7f0a0095
public const int zoom = 2131361941;
@@ -6723,250 +6729,247 @@ namespace MusicApp
public const int LineSongs = 2130903119;
// aapt resource value: 0x7f030050
public const int ListPopupLayout = 2130903120;
public const int LogOutButton = 2130903120;
// aapt resource value: 0x7f030051
public const int LogOutButton = 2130903121;
public const int Main = 2130903121;
// aapt resource value: 0x7f030052
public const int Main = 2130903122;
public const int mr_cast_dialog = 2130903122;
// aapt resource value: 0x7f030053
public const int mr_cast_dialog = 2130903123;
public const int mr_cast_group_item = 2130903123;
// aapt resource value: 0x7f030054
public const int mr_cast_group_item = 2130903124;
public const int mr_cast_group_volume_item = 2130903124;
// aapt resource value: 0x7f030055
public const int mr_cast_group_volume_item = 2130903125;
public const int mr_cast_media_metadata = 2130903125;
// aapt resource value: 0x7f030056
public const int mr_cast_media_metadata = 2130903126;
public const int mr_cast_route_item = 2130903126;
// aapt resource value: 0x7f030057
public const int mr_cast_route_item = 2130903127;
public const int mr_chooser_dialog = 2130903127;
// aapt resource value: 0x7f030058
public const int mr_chooser_dialog = 2130903128;
public const int mr_chooser_list_item = 2130903128;
// aapt resource value: 0x7f030059
public const int mr_chooser_list_item = 2130903129;
public const int mr_controller_material_dialog_b = 2130903129;
// aapt resource value: 0x7f03005a
public const int mr_controller_material_dialog_b = 2130903130;
public const int mr_controller_volume_item = 2130903130;
// aapt resource value: 0x7f03005b
public const int mr_controller_volume_item = 2130903131;
public const int mr_dialog_header_item = 2130903131;
// aapt resource value: 0x7f03005c
public const int mr_dialog_header_item = 2130903132;
public const int mr_picker_dialog = 2130903132;
// aapt resource value: 0x7f03005d
public const int mr_picker_dialog = 2130903133;
public const int mr_picker_route_item = 2130903133;
// aapt resource value: 0x7f03005e
public const int mr_picker_route_item = 2130903134;
public const int mr_playback_control = 2130903134;
// aapt resource value: 0x7f03005f
public const int mr_playback_control = 2130903135;
public const int mr_volume_control = 2130903135;
// aapt resource value: 0x7f030060
public const int mr_volume_control = 2130903136;
public const int mtrl_layout_snackbar = 2130903136;
// aapt resource value: 0x7f030061
public const int mtrl_layout_snackbar = 2130903137;
public const int mtrl_layout_snackbar_include = 2130903137;
// aapt resource value: 0x7f030062
public const int mtrl_layout_snackbar_include = 2130903138;
public const int MusicLayout = 2130903138;
// aapt resource value: 0x7f030063
public const int MusicLayout = 2130903139;
public const int NoSong = 2130903139;
// aapt resource value: 0x7f030064
public const int NoSong = 2130903140;
public const int notification_action = 2130903140;
// aapt resource value: 0x7f030065
public const int notification_action = 2130903141;
public const int notification_action_tombstone = 2130903141;
// aapt resource value: 0x7f030066
public const int notification_action_tombstone = 2130903142;
public const int notification_media_action = 2130903142;
// aapt resource value: 0x7f030067
public const int notification_media_action = 2130903143;
public const int notification_media_cancel_action = 2130903143;
// aapt resource value: 0x7f030068
public const int notification_media_cancel_action = 2130903144;
public const int notification_template_big_media = 2130903144;
// aapt resource value: 0x7f030069
public const int notification_template_big_media = 2130903145;
public const int notification_template_big_media_custom = 2130903145;
// aapt resource value: 0x7f03006a
public const int notification_template_big_media_custom = 2130903146;
public const int notification_template_big_media_narrow = 2130903146;
// aapt resource value: 0x7f03006b
public const int notification_template_big_media_narrow = 2130903147;
public const int notification_template_big_media_narrow_custom = 2130903147;
// aapt resource value: 0x7f03006c
public const int notification_template_big_media_narrow_custom = 2130903148;
public const int notification_template_custom_big = 2130903148;
// aapt resource value: 0x7f03006d
public const int notification_template_custom_big = 2130903149;
public const int notification_template_icon_group = 2130903149;
// aapt resource value: 0x7f03006e
public const int notification_template_icon_group = 2130903150;
public const int notification_template_lines_media = 2130903150;
// aapt resource value: 0x7f03006f
public const int notification_template_lines_media = 2130903151;
public const int notification_template_media = 2130903151;
// aapt resource value: 0x7f030070
public const int notification_template_media = 2130903152;
public const int notification_template_media_custom = 2130903152;
// aapt resource value: 0x7f030071
public const int notification_template_media_custom = 2130903153;
public const int notification_template_part_chronometer = 2130903153;
// aapt resource value: 0x7f030072
public const int notification_template_part_chronometer = 2130903154;
public const int notification_template_part_time = 2130903154;
// aapt resource value: 0x7f030073
public const int notification_template_part_time = 2130903155;
public const int NoYtPlaylist = 2130903155;
// aapt resource value: 0x7f030074
public const int NoYtPlaylist = 2130903156;
public const int NumberPicker = 2130903156;
// aapt resource value: 0x7f030075
public const int NumberPicker = 2130903157;
public const int player = 2130903157;
// aapt resource value: 0x7f030076
public const int player = 2130903158;
public const int playerInfo = 2130903158;
// aapt resource value: 0x7f030077
public const int playerInfo = 2130903159;
public const int PlaylistHeader = 2130903159;
// aapt resource value: 0x7f030078
public const int PlaylistHeader = 2130903160;
public const int PlaylistItem = 2130903160;
// aapt resource value: 0x7f030079
public const int PlaylistItem = 2130903161;
public const int PlaylistList = 2130903161;
// aapt resource value: 0x7f03007a
public const int PlaylistList = 2130903162;
public const int PlaylistSmallHeader = 2130903162;
// aapt resource value: 0x7f03007b
public const int PlaylistSmallHeader = 2130903163;
public const int preference = 2130903163;
// aapt resource value: 0x7f03007c
public const int preference = 2130903164;
public const int preference_category = 2130903164;
// aapt resource value: 0x7f03007d
public const int preference_category = 2130903165;
public const int preference_category_material = 2130903165;
// aapt resource value: 0x7f03007e
public const int preference_category_material = 2130903166;
public const int preference_dialog_edittext = 2130903166;
// aapt resource value: 0x7f03007f
public const int preference_dialog_edittext = 2130903167;
public const int preference_dropdown = 2130903167;
// aapt resource value: 0x7f030080
public const int preference_dropdown = 2130903168;
public const int preference_dropdown_material = 2130903168;
// aapt resource value: 0x7f030081
public const int preference_dropdown_material = 2130903169;
public const int preference_information = 2130903169;
// aapt resource value: 0x7f030082
public const int preference_information = 2130903170;
public const int preference_information_material = 2130903170;
// aapt resource value: 0x7f030083
public const int preference_information_material = 2130903171;
public const int preference_list_fragment = 2130903171;
// aapt resource value: 0x7f030084
public const int preference_list_fragment = 2130903172;
public const int preference_material = 2130903172;
// aapt resource value: 0x7f030085
public const int preference_material = 2130903173;
public const int preference_recyclerview = 2130903173;
// aapt resource value: 0x7f030086
public const int preference_recyclerview = 2130903174;
public const int preference_widget_checkbox = 2130903174;
// aapt resource value: 0x7f030087
public const int preference_widget_checkbox = 2130903175;
public const int preference_widget_seekbar = 2130903175;
// aapt resource value: 0x7f030088
public const int preference_widget_seekbar = 2130903176;
public const int preference_widget_seekbar_material = 2130903176;
// aapt resource value: 0x7f030089
public const int preference_widget_seekbar_material = 2130903177;
public const int preference_widget_switch = 2130903177;
// aapt resource value: 0x7f03008a
public const int preference_widget_switch = 2130903178;
public const int preference_widget_switch_compat = 2130903178;
// aapt resource value: 0x7f03008b
public const int preference_widget_switch_compat = 2130903179;
public const int PreferenceCategory = 2130903179;
// aapt resource value: 0x7f03008c
public const int PreferenceCategory = 2130903180;
public const int PreferenceRoot = 2130903180;
// aapt resource value: 0x7f03008d
public const int PreferenceRoot = 2130903181;
public const int Preferences = 2130903181;
// aapt resource value: 0x7f03008e
public const int Preferences = 2130903182;
public const int QueueFooter = 2130903182;
// aapt resource value: 0x7f03008f
public const int QueueFooter = 2130903183;
public const int RecyclerFragment = 2130903183;
// aapt resource value: 0x7f030090
public const int RecyclerFragment = 2130903184;
public const int SaveAPlaylist = 2130903184;
// aapt resource value: 0x7f030091
public const int SaveAPlaylist = 2130903185;
public const int search_layout = 2130903185;
// aapt resource value: 0x7f030092
public const int search_layout = 2130903186;
public const int SearchLayout = 2130903186;
// aapt resource value: 0x7f030093
public const int SearchLayout = 2130903187;
public const int SeekbarPreference = 2130903187;
// aapt resource value: 0x7f030094
public const int SeekbarPreference = 2130903188;
public const int select_dialog_item_material = 2130903188;
// aapt resource value: 0x7f030095
public const int select_dialog_item_material = 2130903189;
public const int select_dialog_multichoice_material = 2130903189;
// aapt resource value: 0x7f030096
public const int select_dialog_multichoice_material = 2130903190;
public const int select_dialog_singlechoice_material = 2130903190;
// aapt resource value: 0x7f030097
public const int select_dialog_singlechoice_material = 2130903191;
public const int SmallEmptyView = 2130903191;
// aapt resource value: 0x7f030098
public const int SmallEmptyView = 2130903192;
public const int smallLoading = 2130903192;
// aapt resource value: 0x7f030099
public const int smallLoading = 2130903193;
public const int SongList = 2130903193;
// aapt resource value: 0x7f03009a
public const int SongList = 2130903194;
public const int SuggestionLayout = 2130903194;
// aapt resource value: 0x7f03009b
public const int SuggestionLayout = 2130903195;
public const int support_simple_spinner_dropdown_item = 2130903195;
// aapt resource value: 0x7f03009c
public const int support_simple_spinner_dropdown_item = 2130903196;
public const int tabs = 2130903196;
// aapt resource value: 0x7f03009d
public const int tabs = 2130903197;
public const int TimerLayout = 2130903197;
// aapt resource value: 0x7f03009e
public const int TimerLayout = 2130903198;
public const int TwoLineLayout = 2130903198;
// aapt resource value: 0x7f03009f
public const int TwoLineLayout = 2130903199;
public const int ViewPager = 2130903199;
// aapt resource value: 0x7f0300a0
public const int ViewPager = 2130903200;
// aapt resource value: 0x7f0300a1
public const int YtList = 2130903201;
public const int YtList = 2130903200;
static Layout()
{

View File

@@ -1,13 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="56dp"
android:shape="rectangle">
<solid
android:color="#BF000000" />
<corners
<corners
android:radius="40dp"/>
<size
android:width="116dp"
android:height="56dp" />
</shape>

View File

@@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.AppBarLayout>
<ProgressBar
android:layout_height="4dp"
android:layout_width="match_parent"
android:id="@+id/ytProgress"
android:indeterminate="true"
style="?android:attr/progressBarStyleHorizontal"
android:visibility="gone" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler"
android:scrollbars="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>

View File

@@ -92,127 +92,115 @@
android:translationY="-56dp"
app:behavior_hideable="true"
app:behavior_peekHeight="70dp"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior" >
<!--<LinearLayout
app:layout_behavior="MusicApp.PlayerBehavior" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >-->
<!--<View
android:layout_width="fill_parent"
android:layout_height="@*android:dimen/status_bar_height"
android:transformPivotY="@*android:dimen/status_bar_height"
android:background="#2b5568"
android:fitsSystemWindows="true"
android:id="@+id/playerStatus" />-->
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/playersHolder"
android:background="#2b5568"
android:fitsSystemWindows="true" >
<FrameLayout
android:id="@+id/playersHolder"
android:background="#2b5568"
android:fitsSystemWindows="true" >
<FrameLayout
android:layout_width="wrap_content"
android:id="@+id/smallPlayer"
android:elevation="6dp"
android:layout_height="70dp" >
<View
android:layout_width="fill_parent"
android:layout_height="70dp"
android:layout_marginLeft="70dp"
android:id="@+id/spReveal" />
<LinearLayout
android:orientation="horizontal"
android:clickable="true"
android:id="@+id/spContainer"
android:layout_width="wrap_content"
android:id="@+id/smallPlayer"
android:elevation="6dp"
android:layout_height="70dp" >
<View
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/spArt"
android:layout_width="70dp"
android:clickable="false"
android:layout_height="70dp"
android:layout_marginLeft="70dp"
android:id="@+id/spReveal" />
android:layout_gravity="left"
android:layout_alignParentBottom="true"/>
<LinearLayout
android:orientation="horizontal"
android:clickable="true"
android:id="@+id/spContainer"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="130dp"
android:clickable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/spArt"
android:layout_width="70dp"
android:clickable="false"
android:layout_height="70dp"
android:layout_gravity="left"
android:layout_alignParentBottom="true"/>
<LinearLayout
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="130dp"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/spTitle"
android:text="Title"
android:clickable="false"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/spTitle"
android:text="Title"
android:clickable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textSize="18dip" />
<TextView
android:id="@+id/spArtist"
android:text="Artist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:clickable="false"
android:alpha="0.7"
android:textSize="14dip" />
</LinearLayout>
android:layout_height="wrap_content"
android:singleLine="true"
android:textSize="18dip" />
<TextView
android:id="@+id/spArtist"
android:text="Artist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:clickable="false"
android:alpha="0.7"
android:textSize="14dip" />
</LinearLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical">
<ImageButton
android:id="@+id/spNext"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@null"
android:layout_alignParentRight="true"
android:src="@drawable/SkipNext"/>
<ImageButton
android:id="@+id/spPlay"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="3dp"
android:layout_toLeftOf="@id/spNext"
android:background="@null"
android:layout_marginRight="3dp"
android:src="@drawable/Pause"/>
<ProgressBar
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="3dp"
android:layout_toLeftOf="@id/spNext"
android:layout_marginRight="3dp"
android:layout_gravity="center"
android:visibility="gone"
android:id="@+id/spBuffer" />
<ImageButton
android:id="@+id/spLast"
android:background="@null"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_toLeftOf="@id/spPlay"
android:src="@drawable/SkipPrevious"/>
</RelativeLayout>
</LinearLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical">
<ImageButton
android:id="@+id/spNext"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@null"
android:layout_alignParentRight="true"
android:src="@drawable/SkipNext"/>
<ImageButton
android:id="@+id/spPlay"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="3dp"
android:layout_toLeftOf="@id/spNext"
android:background="@null"
android:layout_marginRight="3dp"
android:src="@drawable/Pause"/>
<ProgressBar
android:id="@+id/spProgress"
style="@android:style/Widget.ProgressBar.Horizontal"
android:paddingLeft="70dp"
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_alignParentTop="true"
android:progress="0"/>
</FrameLayout>
<fragment
android:name="MusicApp.Player"
android:id="@+id/playerContainer"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
<!--</LinearLayout>-->
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="3dp"
android:layout_toLeftOf="@id/spNext"
android:layout_marginRight="3dp"
android:layout_gravity="center"
android:visibility="gone"
android:id="@+id/spBuffer" />
<ImageButton
android:id="@+id/spLast"
android:background="@null"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_toLeftOf="@id/spPlay"
android:src="@drawable/SkipPrevious"/>
</RelativeLayout>
<ProgressBar
android:id="@+id/spProgress"
style="@android:style/Widget.ProgressBar.Horizontal"
android:paddingLeft="70dp"
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_alignParentTop="true"
android:progress="0"/>
</FrameLayout>
<fragment
android:name="MusicApp.Player"
android:id="@+id/playerContainer"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.CoordinatorLayout

View File

@@ -14,8 +14,7 @@
android:background="?attr/colorPrimary"
app:navigationIcon="?attr/homeAsUpIndicator"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:fitsSystemWindows="true" />
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"

View File

@@ -11,7 +11,7 @@
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:orientation="vertical"
android:gravity="center" >
<LinearLayout
android:layout_width="wrap_content"
@@ -43,9 +43,9 @@
android:textSize="14sp"
android:text="@string/autoplay_desc"/>
</LinearLayout>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
<!--<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/darker_gray"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"/>
@@ -54,16 +54,15 @@
android:layout_height="wrap_content"
android:background="@drawable/FlatButtonBorder"
android:id="@+id/createMix"
android:text="@string/create_mix" />
android:text="@string/create_mix" />-->
</LinearLayout>
<android.support.v7.widget.CardView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="8dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_gravity="start"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:id="@+id/autoplay" >
<RelativeLayout
android:layout_width="wrap_content"

View File

@@ -1,11 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler"
android:scrollbars="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recycler"
android:scrollbars="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

View File

@@ -1,150 +1,167 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/playerView" >
<ImageView
android:id="@+id/playerAlbum"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@null"
android:scaleType="centerCrop"
android:src="@drawable/noAlbum" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentRight="true"
android:paddingTop="40dp"
android:paddingRight="5dp"
android:id="@+id/buttonsRight"
android:background="@drawable/darkLinear" >
<android.support.v7.app.MediaRouteButton
android:id="@+id/castButton"
android:layout_width="56dp"
android:layout_height="56dp"
android:background="@null" />
<ImageButton
android:layout_width="56dp"
android:layout_height="56dp"
android:tint="#ffffff"
android:src="@drawable/arrowdown"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/playerView" >
<ImageView
android:id="@+id/playerAlbum"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@null"
android:id="@+id/downButton" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_toLeftOf="@id/buttonsRight"
android:paddingTop="40dp"
android:paddingLeft="15dp" >
<TextView
android:text="Title"
android:id="@+id/playerTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="3dp"
android:maxLines="2"
android:textSize="20sp"
android:textColor="#ffffff" />
<TextView
android:text="Artist"
android:layout_marginTop="7dp"
android:id="@+id/playerArtist"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
android:padding="3dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:alpha=".92"
android:textSize="15sp"
android:textColor="#FFFFFF" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:layout_marginBottom="25dp">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" >
<SeekBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/songTimer"
app:elevation="6dp"
android:padding="0dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00:00 | ??:??"
android:id="@+id/timer"
android:textColor="#ffffff"
android:background="#BF000000"
android:layout_centerHorizontal="true"
android:padding="3dp" />
</RelativeLayout>
android:scaleType="centerCrop"
android:src="@drawable/noAlbum" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center_horizontal" >
android:layout_alignParentRight="true"
android:layout_marginTop="40dp"
android:layout_marginRight="5dp"
android:id="@+id/buttonsRight"
android:background="@drawable/darkLinear" >
<android.support.v7.app.MediaRouteButton
android:id="@+id/castButton"
android:layout_width="56dp"
android:layout_height="56dp"
android:background="@null" />
<ImageButton
android:id="@+id/showQueue"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:tint="#ffffff"
android:background="@drawable/darkCircle"
android:src="@drawable/queue" />
<ImageButton
android:id="@+id/lastButton"
android:tint="#ffffff"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:background="@drawable/darkCircle"
android:src="@drawable/SkipPrevious" />
<ImageButton
android:id="@+id/playButton"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:tint="#ffffff"
android:background="@drawable/darkCircle"
android:src="@drawable/Pause" />
<ProgressBar
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:visibility="gone"
android:id="@+id/playerBuffer"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"/>
<ImageButton
android:id="@+id/nextButton"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:tint="#ffffff"
android:background="@drawable/darkCircle"
android:src="@drawable/SkipNext" />
<ImageButton
android:id="@+id/moreButton"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:tint="#ffffff"
android:background="@drawable/darkCircle"
android:src="@drawable/more" />
android:src="@drawable/arrowdown"
android:background="@null"
android:id="@+id/downButton" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_toLeftOf="@id/buttonsRight"
android:paddingTop="40dp"
android:paddingLeft="15dp" >
<TextView
android:text="Title"
android:id="@+id/playerTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="3dp"
android:maxLines="2"
android:textSize="20sp"
android:textColor="#ffffff" />
<TextView
android:text="Artist"
android:layout_marginTop="7dp"
android:id="@+id/playerArtist"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
android:padding="3dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:alpha=".92"
android:textSize="15sp"
android:textColor="#FFFFFF" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:layout_marginBottom="25dp">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" >
<SeekBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/songTimer"
app:elevation="6dp"
android:padding="0dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00:00 | ??:??"
android:id="@+id/timer"
android:textColor="#ffffff"
android:background="#BF000000"
android:layout_centerHorizontal="true"
android:padding="3dp" />
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center_horizontal" >
<ImageButton
android:id="@+id/showQueue"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:tint="#ffffff"
android:background="@drawable/darkCircle"
android:src="@drawable/queue" />
<ImageButton
android:id="@+id/lastButton"
android:tint="#ffffff"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:background="@drawable/darkCircle"
android:src="@drawable/SkipPrevious" />
<ImageButton
android:id="@+id/playButton"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:tint="#ffffff"
android:background="@drawable/darkCircle"
android:src="@drawable/Pause" />
<ProgressBar
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:visibility="gone"
android:id="@+id/playerBuffer"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"/>
<ImageButton
android:id="@+id/nextButton"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:tint="#ffffff"
android:background="@drawable/darkCircle"
android:src="@drawable/SkipNext" />
<ImageButton
android:id="@+id/moreButton"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="12dp"
android:tint="#ffffff"
android:background="@drawable/darkCircle"
android:src="@drawable/more" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<android.support.v7.widget.CardView
android:layout_width="250dp"
android:layout_height="match_parent"
app:cardCornerRadius="8dp"
android:layout_gravity="start"
android:background="#BF000000"
android:id="@+id/queueParent" >
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="MusicApp.Queue"
android:id="@+id/queue" />
</android.support.v7.widget.CardView>
</android.support.v4.widget.DrawerLayout>

View File

@@ -7,7 +7,7 @@
<item name="windowActionBar">false</item>
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:navigationBarColor">#ffffff</item>
<item name="android:dropDownListViewStyle">@style/LightDropDown</item>
<item name="preferenceTheme">@style/LightPreferences</item>
@@ -22,7 +22,7 @@
<item name="windowActionBar">false</item>
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:navigationBarColor">#212121</item>
<item name="preferenceTheme">@style/DarkPreferences</item>
<item name="colorAccent">#15b7ed</item>
@@ -60,7 +60,7 @@
<item name="android:textColor">#FFFFFF</item>
<item name="android:textColorPrimary">#ffffff</item>
<item name="android:textColorSecondary">#B3FFFFFF</item>
<item name="android:statusBarColor">#212121</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:navigationBarColor">#212121</item>
<item name="preferenceCategoryStyle">@style/PreferenceCategoryStyle</item>
<item name="windowNoTitle">true</item>