Adding a shuffle all button on the home screen.

This commit is contained in:
Anonymous Raccoon
2018-10-29 02:45:47 +01:00
parent 58506525be
commit 90951dec34
16 changed files with 243 additions and 141 deletions
+40 -35
View File
@@ -1070,41 +1070,7 @@ namespace MusicApp
string shortcut = prefManager.GetString("localPlay", "Shuffle All Audio Files");
if (shortcut == "Shuffle All Audio Files")
{
List<string> paths = new List<string>();
Android.Net.Uri musicUri = MediaStore.Audio.Media.ExternalContentUri;
CursorLoader cursorLoader = new CursorLoader(this, musicUri, null, null, null, null);
ICursor musicCursor = (ICursor)cursorLoader.LoadInBackground();
if (musicCursor != null && musicCursor.MoveToFirst())
{
int pathID = musicCursor.GetColumnIndex(MediaStore.Audio.Media.InterfaceConsts.Data);
do
{
paths.Add(musicCursor.GetString(pathID));
}
while (musicCursor.MoveToNext());
musicCursor.Close();
}
if(paths.Count == 0)
{
Snackbar snackBar = Snackbar.Make(FindViewById<CoordinatorLayout>(Resource.Id.snackBar), "No music file found on this device. Can't create a mix.", Snackbar.LengthLong);
snackBar.View.FindViewById<TextView>(Resource.Id.snackbar_text).SetTextColor(Color.White);
snackBar.Show();
return;
}
Intent intent = new Intent(this, typeof(MusicPlayer));
intent.PutStringArrayListExtra("files", paths);
if (sender == null)
intent.PutExtra("clearQueue", false);
intent.SetAction("RandomPlay");
StartService(intent);
ShowSmallPlayer();
ShowPlayer();
Player.instance?.UpdateNext();
Home.instance?.RefreshQueue();
ShuffleAll();
}
else
{
@@ -1129,6 +1095,45 @@ namespace MusicApp
}
}
public void ShuffleAll()
{
List<string> paths = new List<string>();
Android.Net.Uri musicUri = MediaStore.Audio.Media.ExternalContentUri;
CursorLoader cursorLoader = new CursorLoader(this, musicUri, null, null, null, null);
ICursor musicCursor = (ICursor)cursorLoader.LoadInBackground();
if (musicCursor != null && musicCursor.MoveToFirst())
{
int pathID = musicCursor.GetColumnIndex(MediaStore.Audio.Media.InterfaceConsts.Data);
do
{
paths.Add(musicCursor.GetString(pathID));
}
while (musicCursor.MoveToNext());
musicCursor.Close();
}
if (paths.Count == 0)
{
Snackbar snackBar = Snackbar.Make(FindViewById<CoordinatorLayout>(Resource.Id.snackBar), "No music file found on this device. Can't create a mix.", Snackbar.LengthLong);
snackBar.View.FindViewById<TextView>(Resource.Id.snackbar_text).SetTextColor(Color.White);
snackBar.Show();
return;
}
Intent intent = new Intent(this, typeof(MusicPlayer));
intent.PutStringArrayListExtra("files", paths);
if (sender == null)
intent.PutExtra("clearQueue", false);
intent.SetAction("RandomPlay");
StartService(intent);
ShowSmallPlayer();
ShowPlayer();
Player.instance?.UpdateNext();
Home.instance?.RefreshQueue();
}
private async void YtPlay(object sender, EventArgs e)
{
if (MusicPlayer.CurrentID() == -1 || MusicPlayer.queue[MusicPlayer.CurrentID()].youtubeID == null || MusicPlayer.queue[MusicPlayer.CurrentID()].youtubeID == "")
+9 -6
View File
@@ -570,12 +570,6 @@
<ItemGroup>
<AndroidResource Include="Resources\menu\QueueItems.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\Loop.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\Shuffle.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\color\color_tint.xml" />
</ItemGroup>
@@ -708,6 +702,15 @@
<ItemGroup>
<AndroidResource Include="Resources\layout\NumberPicker.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\Shuffle.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\Repeat.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\layout\HomeShuffle.xml" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<Import Project="..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.25.4.0.2\build\MonoAndroid70\Xamarin.Android.Support.Animated.Vector.Drawable.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.25.4.0.2\build\MonoAndroid70\Xamarin.Android.Support.Animated.Vector.Drawable.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.v7.Preference.25.4.0.2\build\MonoAndroid70\Xamarin.Android.Support.v7.Preference.targets" Condition="Exists('..\packages\Xamarin.Android.Support.v7.Preference.25.4.0.2\build\MonoAndroid70\Xamarin.Android.Support.v7.Preference.targets')" />
+10 -1
View File
@@ -72,6 +72,9 @@ namespace MusicApp.Resources.Portable_Class
adapterItems.Add(queue);
}
HomeSection shuffle = new HomeSection("Shuffle", SectionType.Shuffle, null);
adapterItems.Add(shuffle);
Android.Net.Uri musicUri = MediaStore.Audio.Media.ExternalContentUri;
List<Song> allSongs = new List<Song>();
@@ -449,7 +452,13 @@ namespace MusicApp.Resources.Portable_Class
}
}
private void ListView_ItemClick(object sender, int position) { }
private void ListView_ItemClick(object sender, int position)
{
if(adapterItems[position].contentType == SectionType.Shuffle)
{
MainActivity.instance.ShuffleAll();
}
}
public override void OnResume()
{
@@ -1,6 +1,7 @@
using Android.Content;
using Android.Graphics;
using Android.Graphics.Drawables;
using Android.Support.V4.Content;
using Android.Support.V7.Widget;
using Android.Views;
using MusicApp.Resources.values;
@@ -61,20 +62,25 @@ namespace MusicApp.Resources.Portable_Class
// View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.HomePlaylists, parent, false);
// return new LineSongHolder(itemView, OnClick, OnLongClick);
//}
else
else if(viewType == 3)
{
View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.HomeTopic, parent, false);
return new LineSongHolder(itemView, OnClick, OnLongClick);
}
else
{
View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.HomeShuffle, parent, false);
return new UslessHolder(itemView, OnClick);
}
}
public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position)
{
LineSongHolder holder = (LineSongHolder)viewHolder;
items[position].recycler = holder.recycler;
if (items[position].contentType == SectionType.SinglePlaylist)
{
LineSongHolder holder = (LineSongHolder)viewHolder;
items[position].recycler = holder.recycler;
holder.title.Text = items[position].SectionTitle;
holder.recycler.SetLayoutManager(new LinearLayoutManager(MainActivity.instance, LinearLayoutManager.Horizontal, false));
if (items[position].SectionTitle == "Queue")
@@ -107,6 +113,9 @@ namespace MusicApp.Resources.Portable_Class
}
else if(items[position].contentType == SectionType.ChannelList)
{
LineSongHolder holder = (LineSongHolder)viewHolder;
items[position].recycler = holder.recycler;
holder.title.Text = items[position].SectionTitle;
holder.recycler.SetLayoutManager(new LinearLayoutManager(MainActivity.instance, LinearLayoutManager.Vertical, false));
holder.recycler.SetAdapter(new HomeChannelAdapter(items[position].contentValue.GetRange(0, items[position].contentValue.Count > 4 ? 4 : items[position].contentValue.Count), holder.recycler) { allItems = items[position].contentValue.GetRange(4, items[position].contentValue.Count - 4) });
@@ -147,6 +156,9 @@ namespace MusicApp.Resources.Portable_Class
//}
else if(items[position].contentType == SectionType.TopicSelector)
{
LineSongHolder holder = (LineSongHolder)viewHolder;
items[position].recycler = holder.recycler;
holder.title.Text = items[position].SectionTitle;
holder.recycler.SetLayoutManager(new LinearLayoutManager(MainActivity.instance, LinearLayoutManager.Vertical, false));
holder.recycler.SetAdapter(new HomeChannelAdapter(items[position].contentValue));
@@ -159,6 +171,11 @@ namespace MusicApp.Resources.Portable_Class
if (MainActivity.Theme == 1)
holder.ItemView.SetBackgroundColor(Color.Argb(255, 62, 62, 62));
}
else if (items[position].contentType == SectionType.Shuffle)
{
UslessHolder holder = (UslessHolder)viewHolder;
((GradientDrawable)holder.ItemView.Background).SetStroke(5, Android.Content.Res.ColorStateList.ValueOf(Color.Argb(255, 21, 183, 237)));
}
}
void OnClick(int position)
@@ -189,8 +206,10 @@ namespace MusicApp.Resources.Portable_Class
return 1;
else if (items[position].contentType == SectionType.PlaylistList)
return 2;
else
else if (items[position].contentType == SectionType.TopicSelector)
return 3;
else
return 4;
}
}
}
+1 -1
View File
@@ -101,7 +101,7 @@ namespace MusicApp.Resources.Portable_Class
bar = MainActivity.instance.FindViewById<SeekBar>(Resource.Id.songTimer);
bar.ProgressChanged += (sender, e) =>
{
if(!MusicPlayer.queue[MusicPlayer.CurrentID()].IsLiveStream)
if(MusicPlayer.CurrentID() > 0 && MusicPlayer.CurrentID() < MusicPlayer.queue.Count && !MusicPlayer.queue[MusicPlayer.CurrentID()].IsLiveStream)
timerStart.Text = DurationToTimer(e.Progress);
};
timerStart = MainActivity.instance.FindViewById<TextView>(Resource.Id.timerStart);
+4 -3
View File
@@ -106,8 +106,9 @@ namespace MusicApp.Resources.Portable_Class
{
MenuInflater.Inflate(Resource.Menu.QueueItems, menu);
this.menu = menu;
if(MusicPlayer.repeat)
menu.FindItem(Resource.Id.repeat).Icon.SetColorFilter(Color.Argb(255, 62, 80, 180), PorterDuff.Mode.Multiply);
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);
}
@@ -141,7 +142,7 @@ namespace MusicApp.Resources.Portable_Class
MusicPlayer.repeat = !MusicPlayer.repeat;
if (MusicPlayer.repeat)
item.Icon.SetColorFilter(Color.Argb(255, 62, 80, 180), PorterDuff.Mode.Multiply);
item.Icon.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply);
else
item.Icon.ClearColorFilter();
}
@@ -1,12 +1,17 @@
using Android.Support.V7.Widget;
using Android.Views;
using System;
namespace MusicApp.Resources.Portable_Class
{
public class UslessHolder : RecyclerView.ViewHolder
{
public UslessHolder(View itemView) : base(itemView)
public UslessHolder(View itemView, Action<int> listener = null) : base(itemView)
{
if (listener != null)
{
itemView.Click += (sender, e) => listener(AdapterPosition);
}
}
}
}
+90 -87
View File
@@ -2989,46 +2989,43 @@ namespace MusicApp
public const int launcher_icon = 2130837659;
// aapt resource value: 0x7f02009c
public const int Loop = 2130837660;
public const int More = 2130837660;
// aapt resource value: 0x7f02009d
public const int More = 2130837661;
public const int MusicIcon = 2130837661;
// aapt resource value: 0x7f02009e
public const int MusicIcon = 2130837662;
public const int navigation_empty_icon = 2130837662;
// aapt resource value: 0x7f02009f
public const int navigation_empty_icon = 2130837663;
public const int needProcessing = 2130837663;
// aapt resource value: 0x7f0200a0
public const int needProcessing = 2130837664;
public const int noAlbum = 2130837664;
// aapt resource value: 0x7f0200a1
public const int noAlbum = 2130837665;
public const int notification_action_background = 2130837665;
// aapt resource value: 0x7f0200a2
public const int notification_action_background = 2130837666;
public const int notification_bg = 2130837666;
// aapt resource value: 0x7f0200a3
public const int notification_bg = 2130837667;
public const int notification_bg_low = 2130837667;
// aapt resource value: 0x7f0200a4
public const int notification_bg_low = 2130837668;
public const int notification_bg_low_normal = 2130837668;
// aapt resource value: 0x7f0200a5
public const int notification_bg_low_normal = 2130837669;
public const int notification_bg_low_pressed = 2130837669;
// aapt resource value: 0x7f0200a6
public const int notification_bg_low_pressed = 2130837670;
public const int notification_bg_normal = 2130837670;
// aapt resource value: 0x7f0200a7
public const int notification_bg_normal = 2130837671;
public const int notification_bg_normal_pressed = 2130837671;
// aapt resource value: 0x7f0200a8
public const int notification_bg_normal_pressed = 2130837672;
// aapt resource value: 0x7f0200a9
public const int notification_icon_background = 2130837673;
public const int notification_icon_background = 2130837672;
// aapt resource value: 0x7f0200b9
public const int notification_template_icon_bg = 2130837689;
@@ -3036,20 +3033,20 @@ namespace MusicApp
// aapt resource value: 0x7f0200ba
public const int notification_template_icon_low_bg = 2130837690;
// aapt resource value: 0x7f0200a9
public const int notification_tile_bg = 2130837673;
// aapt resource value: 0x7f0200aa
public const int notification_tile_bg = 2130837674;
public const int notify_panel_notification_icon_bg = 2130837674;
// aapt resource value: 0x7f0200ab
public const int notify_panel_notification_icon_bg = 2130837675;
public const int OpenInYoutube = 2130837675;
// aapt resource value: 0x7f0200ac
public const int OpenInYoutube = 2130837676;
public const int PlaylistPlayIcon = 2130837676;
// aapt resource value: 0x7f0200ad
public const int PlaylistPlayIcon = 2130837677;
// aapt resource value: 0x7f0200ae
public const int PlayToCross = 2130837678;
public const int PlayToCross = 2130837677;
// aapt resource value: 0x7f0200d0
public const int playtocross_1 = 2130837712;
@@ -3057,11 +3054,14 @@ namespace MusicApp
// aapt resource value: 0x7f0200d1
public const int playtocross_2 = 2130837713;
// aapt resource value: 0x7f0200ae
public const int Queue = 2130837678;
// aapt resource value: 0x7f0200af
public const int Queue = 2130837679;
public const int Refine = 2130837679;
// aapt resource value: 0x7f0200b0
public const int Refine = 2130837680;
public const int Repeat = 2130837680;
// aapt resource value: 0x7f0200b1
public const int search = 2130837681;
@@ -4366,190 +4366,193 @@ namespace MusicApp
public const int HomePlaylists = 2130903100;
// aapt resource value: 0x7f03003d
public const int HomeTopic = 2130903101;
public const int HomeShuffle = 2130903101;
// aapt resource value: 0x7f03003e
public const int LineSong = 2130903102;
public const int HomeTopic = 2130903102;
// aapt resource value: 0x7f03003f
public const int LineSongs = 2130903103;
public const int LineSong = 2130903103;
// aapt resource value: 0x7f030040
public const int ListPopupLayout = 2130903104;
public const int LineSongs = 2130903104;
// aapt resource value: 0x7f030041
public const int LogOutButton = 2130903105;
public const int ListPopupLayout = 2130903105;
// aapt resource value: 0x7f030042
public const int Main = 2130903106;
public const int LogOutButton = 2130903106;
// aapt resource value: 0x7f030043
public const int MusicLayout = 2130903107;
public const int Main = 2130903107;
// aapt resource value: 0x7f030044
public const int NoQueue = 2130903108;
public const int MusicLayout = 2130903108;
// aapt resource value: 0x7f030045
public const int NoSong = 2130903109;
public const int NoQueue = 2130903109;
// aapt resource value: 0x7f030046
public const int notification_action = 2130903110;
public const int NoSong = 2130903110;
// aapt resource value: 0x7f030047
public const int notification_action_tombstone = 2130903111;
public const int notification_action = 2130903111;
// aapt resource value: 0x7f030048
public const int notification_media_action = 2130903112;
public const int notification_action_tombstone = 2130903112;
// aapt resource value: 0x7f030049
public const int notification_media_cancel_action = 2130903113;
public const int notification_media_action = 2130903113;
// aapt resource value: 0x7f03004a
public const int notification_template_big_media = 2130903114;
public const int notification_media_cancel_action = 2130903114;
// aapt resource value: 0x7f03004b
public const int notification_template_big_media_custom = 2130903115;
public const int notification_template_big_media = 2130903115;
// aapt resource value: 0x7f03004c
public const int notification_template_big_media_narrow = 2130903116;
public const int notification_template_big_media_custom = 2130903116;
// aapt resource value: 0x7f03004d
public const int notification_template_big_media_narrow_custom = 2130903117;
public const int notification_template_big_media_narrow = 2130903117;
// aapt resource value: 0x7f03004e
public const int notification_template_custom_big = 2130903118;
public const int notification_template_big_media_narrow_custom = 2130903118;
// aapt resource value: 0x7f03004f
public const int notification_template_icon_group = 2130903119;
public const int notification_template_custom_big = 2130903119;
// aapt resource value: 0x7f030050
public const int notification_template_lines_media = 2130903120;
public const int notification_template_icon_group = 2130903120;
// aapt resource value: 0x7f030051
public const int notification_template_media = 2130903121;
public const int notification_template_lines_media = 2130903121;
// aapt resource value: 0x7f030052
public const int notification_template_media_custom = 2130903122;
public const int notification_template_media = 2130903122;
// aapt resource value: 0x7f030053
public const int notification_template_part_chronometer = 2130903123;
public const int notification_template_media_custom = 2130903123;
// aapt resource value: 0x7f030054
public const int notification_template_part_time = 2130903124;
public const int notification_template_part_chronometer = 2130903124;
// aapt resource value: 0x7f030055
public const int NoYtPlaylist = 2130903125;
public const int notification_template_part_time = 2130903125;
// aapt resource value: 0x7f030056
public const int NumberPicker = 2130903126;
public const int NoYtPlaylist = 2130903126;
// aapt resource value: 0x7f030057
public const int player = 2130903127;
public const int NumberPicker = 2130903127;
// aapt resource value: 0x7f030058
public const int playerInfo = 2130903128;
public const int player = 2130903128;
// aapt resource value: 0x7f030059
public const int PlaylistHeader = 2130903129;
public const int playerInfo = 2130903129;
// aapt resource value: 0x7f03005a
public const int PlaylistList = 2130903130;
public const int PlaylistHeader = 2130903130;
// aapt resource value: 0x7f03005b
public const int PlaylistSmallHeader = 2130903131;
public const int PlaylistList = 2130903131;
// aapt resource value: 0x7f03005c
public const int preference = 2130903132;
public const int PlaylistSmallHeader = 2130903132;
// aapt resource value: 0x7f03005d
public const int preference_category = 2130903133;
public const int preference = 2130903133;
// aapt resource value: 0x7f03005e
public const int preference_dialog_edittext = 2130903134;
public const int preference_category = 2130903134;
// aapt resource value: 0x7f03005f
public const int preference_dropdown = 2130903135;
public const int preference_dialog_edittext = 2130903135;
// aapt resource value: 0x7f030060
public const int preference_information = 2130903136;
public const int preference_dropdown = 2130903136;
// aapt resource value: 0x7f030061
public const int preference_list_fragment = 2130903137;
public const int preference_information = 2130903137;
// aapt resource value: 0x7f030062
public const int preference_recyclerview = 2130903138;
public const int preference_list_fragment = 2130903138;
// aapt resource value: 0x7f030063
public const int preference_widget_checkbox = 2130903139;
public const int preference_recyclerview = 2130903139;
// aapt resource value: 0x7f030064
public const int preference_widget_seekbar = 2130903140;
public const int preference_widget_checkbox = 2130903140;
// aapt resource value: 0x7f030065
public const int preference_widget_switch_compat = 2130903141;
public const int preference_widget_seekbar = 2130903141;
// aapt resource value: 0x7f030066
public const int Preferences = 2130903142;
public const int preference_widget_switch_compat = 2130903142;
// aapt resource value: 0x7f030067
public const int PreferenceToolbar = 2130903143;
public const int Preferences = 2130903143;
// aapt resource value: 0x7f030068
public const int QueueFooter = 2130903144;
public const int PreferenceToolbar = 2130903144;
// aapt resource value: 0x7f030069
public const int RecyclerFragment = 2130903145;
public const int QueueFooter = 2130903145;
// aapt resource value: 0x7f03006a
public const int SaveAPlaylist = 2130903146;
public const int RecyclerFragment = 2130903146;
// aapt resource value: 0x7f03006b
public const int search_layout = 2130903147;
public const int SaveAPlaylist = 2130903147;
// aapt resource value: 0x7f03006c
public const int SearchLayout = 2130903148;
public const int search_layout = 2130903148;
// aapt resource value: 0x7f03006d
public const int SeekbarPreference = 2130903149;
public const int SearchLayout = 2130903149;
// aapt resource value: 0x7f03006e
public const int select_dialog_item_material = 2130903150;
public const int SeekbarPreference = 2130903150;
// aapt resource value: 0x7f03006f
public const int select_dialog_multichoice_material = 2130903151;
public const int select_dialog_item_material = 2130903151;
// aapt resource value: 0x7f030070
public const int select_dialog_singlechoice_material = 2130903152;
public const int select_dialog_multichoice_material = 2130903152;
// aapt resource value: 0x7f030071
public const int smallLoading = 2130903153;
public const int select_dialog_singlechoice_material = 2130903153;
// aapt resource value: 0x7f030072
public const int SongList = 2130903154;
public const int smallLoading = 2130903154;
// aapt resource value: 0x7f030073
public const int SuggestionLayout = 2130903155;
public const int SongList = 2130903155;
// aapt resource value: 0x7f030074
public const int support_simple_spinner_dropdown_item = 2130903156;
public const int SuggestionLayout = 2130903156;
// aapt resource value: 0x7f030075
public const int tabs = 2130903157;
public const int support_simple_spinner_dropdown_item = 2130903157;
// aapt resource value: 0x7f030076
public const int TimerLayout = 2130903158;
public const int tabs = 2130903158;
// aapt resource value: 0x7f030077
public const int tooltip = 2130903159;
public const int TimerLayout = 2130903159;
// aapt resource value: 0x7f030078
public const int TwoLineLayout = 2130903160;
public const int tooltip = 2130903160;
// aapt resource value: 0x7f030079
public const int ViewPager = 2130903161;
public const int TwoLineLayout = 2130903161;
// aapt resource value: 0x7f03007a
public const int YtList = 2130903162;
public const int ViewPager = 2130903162;
// aapt resource value: 0x7f03007b
public const int YtList = 2130903163;
static Layout()
{
Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 B

+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M0 0h24v24H0z" />
<path
android:pathData="M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z"
android:fillColor="#ffffff" />
</vector>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 B

+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M0 0h24v24H0z" />
<path
android:pathData="M10.59 9.17L5.41 4 4 5.41l5.17 5.17 1.42-1.41zM14.5 4l2.04 2.04L4 18.59 5.41 20 17.96 7.46 20 9.5V4h-5.5zm.33 9.41l-1.41 1.41 3.13 3.13L14.5 20H20v-5.5l-2.04 2.04-3.13-3.13z"
android:fillColor="#ffffff" />
</vector>
@@ -6,6 +6,7 @@
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="10dp"
android:background="@drawable/FlatButtonBorder"
android:id="@+id/button"
android:text="Add a playlist" />
+31
View File
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="10dp"
android:background="@drawable/FlatButtonBorder"
android:gravity="center"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/shuffle"
android:tint="#15b7ed"
android:paddingRight="5dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SHUFFLE ALL"
android:textColor="#15b7ed"
android:textSize="14sp"
android:textStyle="bold"
android:paddingLeft="5dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"/>
</LinearLayout>
+1 -1
View File
@@ -9,7 +9,7 @@
app:showAsAction="always" />
<item
android:id="@+id/repeat"
android:icon="@drawable/Loop"
android:icon="@drawable/Repeat"
android:title="Repeat"
android:checkable="true"
app:showAsAction="always" />
+2 -1
View File
@@ -25,6 +25,7 @@ namespace MusicApp.Resources.values
ChannelList,
PlaylistList,
SinglePlaylist,
TopicSelector
TopicSelector,
Shuffle
};
}