Example #1
0
        public virtual Bitmap MakeCircle()
        {
            Bitmap output = Bitmap.CreateBitmap(Width, Height, Bitmap.Config.Argb8888);
            Canvas canvas = new Canvas(output);

            canvas.DrawARGB(0, 0, 0, 0);
            Paint paint = new Paint();

            paint.AntiAlias = true;
            if (rippleColor == null)
            {
                rippleColor = MakePressColor();
            }
            paint.Color = rippleColor;
            x           = (xRippleOrigin == null) ? x : xRippleOrigin;
            y           = (yRippleOrigin == null) ? y : yRippleOrigin;
            canvas.DrawCircle(x, y, radius, paint);
            if (radius > Height / rippleSize)
            {
                radius += rippleSpeed;
            }
            if (radius >= Width)
            {
                x      = -1;
                y      = -1;
                radius = Height / rippleSize;
                if (onClickListener != null)
                {
                    onClickListener.OnClick(this);
                }
            }
            return(output);
        }
Example #2
0
        public override bool OnTouchEvent(MotionEvent @event)
        {
            switch (@event.Action)
            {
            case  MotionEventActions.Down:
                touchTime = (DateTime.Now).Ticks;
                float textX        = @event.RawX;
                float textY        = @event.RawY;
                int   distanceLine = (int)GetDisForTwoSpot(coreX, coreY, textX, textY);   //距离中心点之间的直线距离
                if (distanceLine <= roundRadius)
                {
                    //点击的是中心圆;按下点到中心点的距离小于中心园半径,那就是点击中心园了
                    onClickState = -1;
                }
                else if (distanceLine <= Width / 2)
                {
                    //点击的是某个扇形;按下点到中心点的距离大于中心圆半径小于大圆半径,那就是点击某个扇形了
                    float sweepAngle = 360 / roundMenus.Count;     //每个弧形的角度
                    int   angle      = GetRotationBetweenLines(coreX, coreY, textX, textY);
                    //这个angle的角度是从正Y轴开始,而我们的扇形是从正X轴开始,再加上偏移角度,所以需要计算一下
                    angle        = (angle + 360 - 90 - (int)deviationDegree) % 360;
                    onClickState = (int)(angle / sweepAngle);     //根据角度得出点击的是那个扇形
                }
                else
                {
                    //点击了外面
                    onClickState = -2;
                }
                Invalidate();
                break;

            case  MotionEventActions.Up:
                if (((DateTime.Now).Ticks - touchTime) < 300)
                {
                    //点击小于300毫秒算点击
                    IOnClickListener onClickListener = null;
                    if (onClickState == -1)
                    {
                        onClickListener = onCoreClickListener;
                    }
                    else if (onClickState >= 0 && onClickState < roundMenus.Count)
                    {
                        onClickListener = roundMenus[onClickState].onClickListener;
                    }
                    if (onClickListener != null)
                    {
                        onClickListener.OnClick(this);
                    }
                }
                onClickState = -2;
                Invalidate();
                break;
            }
            return(true);
        }
Example #3
0
        public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            var view = LayoutInflater.From(parent.Context)
                       .Inflate(Resource.Layout.layout_slider_card, parent, false);

            if (listener != null)
            {
                view.Click += (s1, e1) => { listener?.OnClick(view); };
            }
            return(new SliderCard.SliderCard(view));
        }
Example #4
0
            public void OnClick(View view)
            {
                ShineButton btn = view as ShineButton;

                if (!btn.isChecked())
                {
                    btn._isChecked = true;
                    btn.showAnim();
                }
                else
                {
                    btn._isChecked = false;
                    btn.setCancel();
                }

                btn.onListenerUpdate(btn._isChecked);
                if (listener != null)
                {
                    listener.OnClick(view);
                }
            }
Example #5
0
        public void OnClick(View v)
        {
            if (v == _buttonAdd)
            {
                if (_quantity + 1 > _maxQuantity)
                {
                    // Set Listener
                    _onQuantityChangeListener?.OnLimitReached();

                    // Event Handler
                    OnLimitReached();
                }
                else
                {
                    var oldQty = _quantity;
                    _quantity += 1;
                    _textViewQuantity.Text = _quantity.ToString();

                    // Set Listener
                    _onQuantityChangeListener?.OnQuantityChanged(oldQty, _quantity, false);

                    // Event Handler
                    OnQuantityChanged(oldQty, _quantity, false);
                }
            }
            else if (v == _buttonRemove)
            {
                if (_quantity - 1 < _minQuantity)
                {
                    // Set Listener
                    _onQuantityChangeListener?.OnLimitReached();

                    // Event Handler
                    OnLimitReached();
                }
                else
                {
                    var oldQty = _quantity;
                    _quantity -= 1;
                    _textViewQuantity.Text = _quantity.ToString();

                    // Set Listener
                    _onQuantityChangeListener?.OnQuantityChanged(oldQty, _quantity, false);

                    // Event Handler
                    OnQuantityChanged(oldQty, _quantity, false);
                }
            }
            else if (v == _textViewQuantity)
            {
                if (!_quantityDialog)
                {
                    return;
                }

                // Set Listener
                if (_textViewClickListener != null)
                {
                    _textViewClickListener.OnClick(v);
                    return;
                }

                // Event Handler
                if (QuantityClick != null)
                {
                    OnClickHandler(v);
                    return;
                }

                var builder = new AlertDialog.Builder(Context);
                builder.SetTitle(_labelDialogTitle);

                var inflate = LayoutInflater.From(Context).Inflate(R.Layout.qv_dialog_changequantity, null, false);
                var et      = (EditText)inflate.FindViewById(R.Id.qv_et_change_qty);
                et.Text = _quantity.ToString();

                builder.SetView(inflate);
                builder.SetPositiveButton(_labelPositiveButton, (IDialogInterfaceOnClickListener)null);
                var dialog = builder.Show();
                dialog.GetButton((int)DialogButtonType.Positive).Click += (sender, e) =>
                {
                    var newQuantity = et.Text;

                    if (IsValidNumber(newQuantity))
                    {
                        var intNewQuantity = int.Parse(newQuantity);
#if DEBUG
                        Log.Debug(nameof(QuantityView), $"newQuantity {intNewQuantity} max {_maxQuantity}");
#endif
                        if (intNewQuantity > _maxQuantity)
                        {
                            Toast.MakeText(Context, $"{Context.GetString(R.String.qv_max_qty_is)} {_maxQuantity}", ToastLength.Long).Show();
                        }
                        else if (intNewQuantity < _minQuantity)
                        {
                            Toast.MakeText(Context, $"{Context.GetString(R.String.qv_min_qty_is)} {_minQuantity}", ToastLength.Long).Show();
                        }
                        else
                        {
                            Quantity = intNewQuantity;
                            HideKeyboard(et);
                            dialog.Dismiss();
                        }
                    }
                    else
                    {
                        Toast.MakeText(Context, Context.GetString(R.String.qv_enter_valid_number), ToastLength.Long).Show();
                    }
                };
            }
        }