Exemple #1
0
        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));
            };
        }
Exemple #2
0
        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);
 }
Exemple #4
0
        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));
        }
Exemple #5
0
        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);
                }
            }
        }