protected override void OnAttached() { SeekBar nativeSeekBar = Control as SeekBar; Slider formsSlider = Element as Slider; // make the thumb image invisible if the user hasn't previously changed the slider's value if (!_userHasChangedSliderValue) { _visibleThumbDrawable = nativeSeekBar.Thumb; nativeSeekBar.SetThumb(new ColorDrawable(global::Android.Graphics.Color.Transparent)); } nativeSeekBar.ProgressChanged += (sender, e) => { // make the thumb image visible if we haven't already if (!_userHasChangedSliderValue) { nativeSeekBar.SetThumb(_visibleThumbDrawable); _userHasChangedSliderValue = true; } // set the value on the forms slider control. note that SeekBars have a fixed minimum (0) and // a variable maximum. rescale the SeekBar's value to be in the range desired for the forms control. double percent = nativeSeekBar.Progress / (double)nativeSeekBar.Max; formsSlider.Value = formsSlider.Minimum + (percent * (formsSlider.Maximum - formsSlider.Minimum)); }; }
protected override void OnElementChanged(ElementChangedEventArgs <Xamarin.Forms.Slider> e) { base.OnElementChanged(e); if (e.OldElement == null) { _model = e.NewElement; var seekbarLayout = LayoutInflater.From(Context).Inflate(Resource.Layout.Seekbar, null); _seekbar = (SeekBar)seekbarLayout.FindViewById(Resource.Id.seekbar); _seekbar.Max = (int)_model.Maximum; _seekbar.Progress = (int)_model.Value; _seekbar.SetThumb(new ColorDrawable { Alpha = 0 }); SetNativeControl(_seekbar); e.NewElement.SizeChanged += OnSizeChanged; } }
public void OnDetachedIfNotDisposed() { if (notSupported) { return; } _seekbar.ProgressDrawable = _orgProgress; _seekbar.SetThumb(_orgThumb); }
public override void InitTheme() { lblEventsMax.SetTextColor(rootActivity.GetTextColorByTheme()); lblEventsDuration.SetTextColor(rootActivity.GetTextColorByTheme()); lblDiskStatus.SetTextColor(rootActivity.GetTextColorByTheme()); lblTheme.SetTextColor(rootActivity.GetTextColorByTheme()); lblServerConnection.SetTextColor(rootActivity.GetTextColorByTheme()); lblEventsMaxValue.SetTextColor(rootActivity.GetToggleTextColorByTheme(true)); lblEventsDurationValue.SetTextColor(rootActivity.GetToggleTextColorByTheme(true)); lblDiskUsageValue.SetTextColor(rootActivity.GetToggleTextColorByTheme(true)); lblServerIP.SetTextColor(rootActivity.GetTextColorByTheme(false)); lblPort.SetTextColor(rootActivity.GetTextColorByTheme(false)); lblPassword.SetTextColor(rootActivity.GetTextColorByTheme(false)); bgEditEventsMax.SetImageResource(rootActivity.GetImageByTheme(FN_BG_TEXT_SLIDER)); bgEditEventsDuration.SetImageResource(rootActivity.GetImageByTheme(FN_BG_TEXT_SLIDER)); bgEditDiskUsage.SetImageResource(rootActivity.GetImageByTheme(FN_BG_TEXT_SLIDER)); bgEditServerIP.SetImageResource(rootActivity.GetImageByTheme(FN_BG_TEXT_SETTINGS)); bgEditPort.SetImageResource(rootActivity.GetImageByTheme(FN_BG_TEXT_SETTINGS)); bgEditPassword.SetImageResource(rootActivity.GetImageByTheme(FN_BG_TEXT_SETTINGS)); txtServerIP.SetTextColor(rootActivity.GetToggleTextColorByTheme(true)); txtPort.SetTextColor(rootActivity.GetToggleTextColorByTheme(true)); txtPassword.SetTextColor(rootActivity.GetToggleTextColorByTheme(true)); btnScanQR.SetImageResource(rootActivity.GetImageByTheme(FN_BG_BTN_SCAN_QR_SETTINGS)); viewLineSeperator1.SetBackgroundColor(rootActivity.GetLineSeperatorColorByTheme()); viewLineSeperator2.SetBackgroundColor(rootActivity.GetLineSeperatorColorByTheme()); viewLineSeperator3.SetBackgroundColor(rootActivity.GetLineSeperatorColorByTheme()); viewLineSeperator4.SetBackgroundColor(rootActivity.GetLineSeperatorColorByTheme()); var progressResource = AppSettings.CurrentTheme == TYPE_THEME.DARK ? Resource.Drawable.item_seekBar_dark : Resource.Drawable.item_seekBar_light; sliderEventsMax.ProgressDrawable = Resources.GetDrawable(progressResource); sliderEventsDuration.ProgressDrawable = Resources.GetDrawable(progressResource); sliderDiskStatus.ProgressDrawable = Resources.GetDrawable(progressResource); var thumbResource = AppSettings.CurrentTheme == TYPE_THEME.DARK ? Resource.Drawable.item_seekBarThumb_dark : Resource.Drawable.item_seekBarThumb_light; sliderEventsMax.SetThumb(Resources.GetDrawable(thumbResource)); sliderEventsDuration.SetThumb(Resources.GetDrawable(thumbResource)); }
public static async Task UpdateThumbImageSourceAsync(this SeekBar seekBar, ISlider slider, IImageSourceServiceProvider provider, Drawable?defaultThumb) { var context = seekBar.Context; if (context == null) { return; } var thumbImageSource = slider.ThumbImageSource; if (thumbImageSource != null) { var service = provider.GetRequiredImageSourceService(thumbImageSource); var result = await service.GetDrawableAsync(thumbImageSource, context); Drawable?thumbDrawable = result?.Value; seekBar.SetThumb(thumbDrawable ?? defaultThumb); } }
public static void SetTheme(SeekBar seekBar, FlatTheme theme) { // setting thumb var thumb = new PaintDrawable(theme.DarkAccentColor); thumb.SetCornerRadius(15); thumb.SetIntrinsicWidth(30); thumb.SetIntrinsicHeight(30); seekBar.SetThumb(thumb); // progress var progress = new PaintDrawable(theme.BackgroundColor); progress.SetCornerRadius(10); progress.SetIntrinsicHeight(10); progress.SetIntrinsicWidth(5); progress.SetDither(true); var progressClip = new ClipDrawable(progress, GravityFlags.Left, ClipDrawableOrientation.Horizontal); // secondary progress var secondary = new PaintDrawable(theme.LightAccentColor); secondary.SetCornerRadius(10); secondary.SetIntrinsicHeight(10); var secondaryProgressClip = new ClipDrawable(secondary, GravityFlags.Left, ClipDrawableOrientation.Horizontal); // background PaintDrawable background = new PaintDrawable(theme.VeryLightAccentColor); background.SetCornerRadius(10); background.SetIntrinsicHeight(10); // applying drawable LayerDrawable ld = (LayerDrawable)seekBar.ProgressDrawable; ld.SetDrawableByLayerId(Android.Resource.Id.Background, background); ld.SetDrawableByLayerId(Android.Resource.Id.Progress, progressClip); ld.SetDrawableByLayerId(Android.Resource.Id.SecondaryProgress, secondaryProgressClip); }
public AlterColorSlider(SeekBar seekbar, Element element) { _seekbar = seekbar; _element = element; _orgProgress = _seekbar.ProgressDrawable.Current as LayerDrawable; if (_orgProgress == null) { notSupported = true; return; } _progress = (LayerDrawable)(_seekbar.ProgressDrawable.Current.GetConstantState().NewDrawable()); _orgProgressBackground = _seekbar.ProgressBackgroundTintList; _orgThumb = _seekbar.Thumb; _thumb = _seekbar.Thumb.GetConstantState().NewDrawable(); _seekbar.ProgressDrawable = _progress; _seekbar.SetThumb(_thumb); }
public static void SetTint(SeekBar seekBar, Color color) { ColorStateList s1 = ColorStateList.ValueOf(color); if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) { seekBar.ThumbTintList = s1; seekBar.ProgressTintList = s1; } else if (Build.VERSION.SdkInt > BuildVersionCodes.GingerbreadMr1) { Drawable progressDrawable = DrawableCompat.Wrap(seekBar.ProgressDrawable); seekBar.ProgressDrawable = progressDrawable; DrawableCompat.SetTintList(progressDrawable, s1); if (Build.VERSION.SdkInt >= BuildVersionCodes.JellyBean) { Drawable thumbDrawable = DrawableCompat.Wrap(seekBar.Thumb); DrawableCompat.SetTintList(thumbDrawable, s1); seekBar.SetThumb(thumbDrawable); } } else { PorterDuff.Mode mode = PorterDuff.Mode.SrcIn; if (Build.VERSION.SdkInt <= BuildVersionCodes.GingerbreadMr1) { mode = PorterDuff.Mode.Multiply; } if (seekBar.IndeterminateDrawable != null) { seekBar.IndeterminateDrawable.SetColorFilter(color, mode); } if (seekBar.ProgressDrawable != null) { seekBar.ProgressDrawable.SetColorFilter(color, mode); } } }