private void UpdateThumbImages() { ThumbImage = DefaultThumbImage ?? BitmapUtil.DrawableToBitmap(GetThumbDrawable()); ThumbPressedImage = DefaultThumbPressedImage ?? BitmapUtil.DrawableToBitmap(GetPressedThumbDrawable()); ThumbDisabledImage = DefaultThumbDisabledImage ?? BitmapUtil.DrawableToBitmap(GetDisabledThumbDrawable()); UpdateThumbValues(); }
private void Init(Context context, IAttributeSet attrs) { var thumbNormal = Resource.Drawable.seek_thumb_normal; var thumbPressed = Resource.Drawable.seek_thumb_pressed; var thumbDisabled = Resource.Drawable.seek_thumb_disabled; Color thumbShadowColor; var defaultShadowColor = Color.Argb(75, 0, 0, 0); var defaultShadowYOffset = PixelUtil.DpToPx(context, 2); var defaultShadowXOffset = PixelUtil.DpToPx(context, 0); var defaultShadowBlur = PixelUtil.DpToPx(context, 2); _distanceToTop = PixelUtil.DpToPx(context, DefaultTextDistanceToTopInDp); if (attrs == null) { SetRangeToDefaultValues(); _internalPad = PixelUtil.DpToPx(context, InitialPaddingInDp); _barHeight = PixelUtil.DpToPx(context, LineHeightInDp); ActiveColor = DefaultActiveColor; DefaultColor = Color.Gray; AlwaysActive = false; ShowTextAboveThumbs = true; TextAboveThumbsColor = Color.White; thumbShadowColor = defaultShadowColor; ThumbShadowXOffset = defaultShadowXOffset; ThumbShadowYOffset = defaultShadowYOffset; _thumbShadowBlur = defaultShadowBlur; ActivateOnDefaultValues = false; TextSizeInSp = DefaultTextSizeInSp; } else { var a = Context.ObtainStyledAttributes(attrs, Resource.Styleable.RangeSliderControl, 0, 0); try { SetRangeValues(ExtractNumericValueFromAttributes(a, Resource.Styleable.RangeSliderControl_absoluteMinValue, DefaultMinimum), ExtractNumericValueFromAttributes(a, Resource.Styleable.RangeSliderControl_absoluteMaxValue, DefaultMaximum)); ShowTextAboveThumbs = a.GetBoolean(Resource.Styleable.RangeSliderControl_valuesAboveThumbs, true); TextAboveThumbsColor = a.GetColor(Resource.Styleable.RangeSliderControl_textAboveThumbsColor, Color.White); MinThumbHidden = a.GetBoolean(Resource.Styleable.RangeSliderControl_minThumbHidden, false); MaxThumbHidden = a.GetBoolean(Resource.Styleable.RangeSliderControl_maxThumbHidden, false); ShowLabels = a.GetBoolean(Resource.Styleable.RangeSliderControl_showRangeLabels, true); _internalPad = a.GetDimensionPixelSize(Resource.Styleable.RangeSliderControl_internalPadding, InitialPaddingInDp); _barHeight = a.GetDimensionPixelSize(Resource.Styleable.RangeSliderControl_barHeight, LineHeightInDp); ActiveColor = a.GetColor(Resource.Styleable.RangeSliderControl_activeColor, DefaultActiveColor); DefaultColor = a.GetColor(Resource.Styleable.RangeSliderControl_defaultColor, Color.Gray); AlwaysActive = a.GetBoolean(Resource.Styleable.RangeSliderControl_alwaysActive, false); StepValue = ExtractNumericValueFromAttributes(a, Resource.Styleable.RangeSliderControl_stepValue, DefaultStepValue); StepValueContinuously = a.GetBoolean(Resource.Styleable.RangeSliderControl_stepValueContinuously, false); var normalDrawable = a.GetDrawable(Resource.Styleable.RangeSliderControl_thumbNormal); if (normalDrawable != null) { ThumbImage = BitmapUtil.DrawableToBitmap(normalDrawable); } var disabledDrawable = a.GetDrawable(Resource.Styleable.RangeSliderControl_thumbDisabled); if (disabledDrawable != null) { ThumbDisabledImage = BitmapUtil.DrawableToBitmap(disabledDrawable); } var pressedDrawable = a.GetDrawable(Resource.Styleable.RangeSliderControl_thumbPressed); if (pressedDrawable != null) { ThumbPressedImage = BitmapUtil.DrawableToBitmap(pressedDrawable); } ThumbShadow = a.GetBoolean(Resource.Styleable.RangeSliderControl_thumbShadow, false); thumbShadowColor = a.GetColor(Resource.Styleable.RangeSliderControl_thumbShadowColor, defaultShadowColor); ThumbShadowXOffset = a.GetDimensionPixelSize(Resource.Styleable.RangeSliderControl_thumbShadowXOffset, defaultShadowXOffset); ThumbShadowYOffset = a.GetDimensionPixelSize(Resource.Styleable.RangeSliderControl_thumbShadowYOffset, defaultShadowYOffset); _thumbShadowBlur = a.GetDimensionPixelSize(Resource.Styleable.RangeSliderControl_thumbShadowBlur, defaultShadowBlur); ActivateOnDefaultValues = a.GetBoolean(Resource.Styleable.RangeSliderControl_activateOnDefaultValues, false); TextSizeInSp = a.GetInt(Resource.Styleable.RangeSliderControl_textSize, DefaultTextSizeInSp); } finally { a.Recycle(); } } if (ThumbImage == null) { ThumbImage = BitmapFactory.DecodeResource(Resources, thumbNormal); } if (ThumbPressedImage == null) { ThumbPressedImage = BitmapFactory.DecodeResource(Resources, thumbPressed); } if (ThumbDisabledImage == null) { ThumbDisabledImage = BitmapFactory.DecodeResource(Resources, thumbDisabled); } _thumbHalfWidth = 0.5f * ThumbImage.Width; _thumbHalfHeight = 0.5f * ThumbImage.Height; SetBarHeight(_barHeight); // make RangeSliderControl focusable. This solves focus handling issues in case EditText widgets are being used along with the RangeSliderControl within ScrollViews. Focusable = true; FocusableInTouchMode = true; _scaledTouchSlop = ViewConfiguration.Get(Context).ScaledTouchSlop; if (ThumbShadow) { // We need to remove hardware acceleration in order to blur the shadow SetLayerType(LayerType.Software, null); _shadowPaint.Color = thumbShadowColor; _shadowPaint.SetMaskFilter(new BlurMaskFilter(_thumbShadowBlur, BlurMaskFilter.Blur.Normal)); _thumbShadowPath = new Path(); _thumbShadowPath.AddCircle(0, 0, _thumbHalfHeight, Path.Direction.Cw); } }
private void Init(Context context, IAttributeSet attrs) { var defaultShadowColor = Color.Argb(75, 0, 0, 0); var defaultShadowYOffset = PixelUtil.DpToPx(context, 2); var defaultShadowXOffset = PixelUtil.DpToPx(context, 0); var defaultShadowBlur = PixelUtil.DpToPx(context, 2); _distanceToTop = PixelUtil.DpToPx(context, DefaultTextDistanceToTopInDp); if (attrs == null) { SetRangeToDefaultValues(); _internalPad = PixelUtil.DpToPx(context, InitialPaddingInDp); _barHeight = PixelUtil.DpToPx(context, LineHeightInDp); ActiveColor = DefaultDarkBlueColor; DefaultColor = Color.Gray; AlwaysActive = false; ShowTextAboveThumbs = true; TextAboveThumbsColor = Color.White; thumbShadowColor = defaultShadowColor; ThumbShadowXOffset = defaultShadowXOffset; ThumbShadowYOffset = defaultShadowYOffset; _thumbShadowBlur = defaultShadowBlur; ActivateOnDefaultValues = false; TextSizeInSp = DefaultTextSizeInSp; MaterialUI = false; } else { var a = Context.ObtainStyledAttributes(attrs, Resource.Styleable.RangeSliderControl, 0, 0); try { SetRangeValues(ExtractNumericValueFromAttributes(a, Resource.Styleable.RangeSliderControl_absoluteMinValue, DefaultMinimum), ExtractNumericValueFromAttributes(a, Resource.Styleable.RangeSliderControl_absoluteMaxValue, DefaultMaximum)); ShowTextAboveThumbs = a.GetBoolean(Resource.Styleable.RangeSliderControl_valuesAboveThumbs, true); TextAboveThumbsColor = a.GetColor(Resource.Styleable.RangeSliderControl_textAboveThumbsColor, Color.White); MinThumbHidden = a.GetBoolean(Resource.Styleable.RangeSliderControl_minThumbHidden, false); MaxThumbHidden = a.GetBoolean(Resource.Styleable.RangeSliderControl_maxThumbHidden, false); ShowLabels = a.GetBoolean(Resource.Styleable.RangeSliderControl_showRangeLabels, true); _internalPad = a.GetDimensionPixelSize(Resource.Styleable.RangeSliderControl_internalPadding, InitialPaddingInDp); _barHeight = a.GetDimensionPixelSize(Resource.Styleable.RangeSliderControl_barHeight, LineHeightInDp); ActiveColor = a.GetColor(Resource.Styleable.RangeSliderControl_activeColor, DefaultDarkBlueColor); DefaultColor = a.GetColor(Resource.Styleable.RangeSliderControl_defaultColor, Color.Gray); AlwaysActive = a.GetBoolean(Resource.Styleable.RangeSliderControl_alwaysActive, false); StepValue = ExtractNumericValueFromAttributes(a, Resource.Styleable.RangeSliderControl_stepValue, DefaultStepValue); StepValueContinuously = a.GetBoolean(Resource.Styleable.RangeSliderControl_stepValueContinuously, false); var normalDrawable = a.GetDrawable(Resource.Styleable.RangeSliderControl_thumbNormal); if (normalDrawable != null) { DefaultThumbImage = BitmapUtil.DrawableToBitmap(normalDrawable); } var disabledDrawable = a.GetDrawable(Resource.Styleable.RangeSliderControl_thumbDisabled); if (disabledDrawable != null) { DefaultThumbDisabledImage = BitmapUtil.DrawableToBitmap(disabledDrawable); } var pressedDrawable = a.GetDrawable(Resource.Styleable.RangeSliderControl_thumbPressed); if (pressedDrawable != null) { DefaultThumbPressedImage = BitmapUtil.DrawableToBitmap(pressedDrawable); } ThumbShadow = a.GetBoolean(Resource.Styleable.RangeSliderControl_thumbShadow, false); thumbShadowColor = a.GetColor(Resource.Styleable.RangeSliderControl_thumbShadowColor, defaultShadowColor); ThumbShadowXOffset = a.GetDimensionPixelSize(Resource.Styleable.RangeSliderControl_thumbShadowXOffset, defaultShadowXOffset); ThumbShadowYOffset = a.GetDimensionPixelSize(Resource.Styleable.RangeSliderControl_thumbShadowYOffset, defaultShadowYOffset); _thumbShadowBlur = a.GetDimensionPixelSize(Resource.Styleable.RangeSliderControl_thumbShadowBlur, defaultShadowBlur); ActivateOnDefaultValues = a.GetBoolean(Resource.Styleable.RangeSliderControl_activateOnDefaultValues, false); TextSizeInSp = a.GetInt(Resource.Styleable.RangeSliderControl_textSize, DefaultTextSizeInSp); MaterialUI = a.GetBoolean(Resource.Styleable.RangeSliderControl_materialUI, false); } finally { a.Recycle(); } } SetBarHeight(_barHeight); // make RangeSliderControl focusable. This solves focus handling issues in case EditText widgets are being used along with the RangeSliderControl within ScrollViews. Focusable = true; FocusableInTouchMode = true; _scaledTouchSlop = ViewConfiguration.Get(Context).ScaledTouchSlop; UpdateThumbImages(); }