示例#1
0
 public void Run()
 {
     try
     {
         if (_scroller.IsFinished)
         {
             _scroller = null;
             return;
         }
         if (_scroller.ComputeScrollOffset())
         {
             var newX   = _scroller.CurrX;
             var newY   = _scroller.CurrY;
             var transX = newX - _currX;
             var transY = newY - _currY;
             _currX = newX;
             _currY = newY;
             _view._matrix.PostTranslate(transX, transY);
             _view.FixTrans();
             _view.ImageMatrix = _view._matrix;
             _view.CompatPostOnAnimation(this);
         }
     }
     catch (System.Exception ex)
     {
         AppSettings.Logger.Warning(ex);
     }
 }
示例#2
0
 public void Run()
 {
     try
     {
         if (_scroller.IsFinished)
         {
             _scroller = null;
             return;
         }
         if (_scroller.ComputeScrollOffset())
         {
             var newX   = _scroller.CurrX;
             var newY   = _scroller.CurrY;
             var transX = newX - _currX;
             var transY = newY - _currY;
             _currX = newX;
             _currY = newY;
             _view._matrix.PostTranslate(transX, transY);
             _view.FixTrans();
             _view.ImageMatrix = _view._matrix;
             _view.CompatPostOnAnimation(this);
         }
     }
     catch
     {
         //todo nothing
     }
 }
示例#3
0
            public bool OnTouch(View v, MotionEvent evt)
            {
                _view._touchListener?.OnTouch(v, evt); // User-defined handler, maybe
                _view._scaleDetector?.OnTouchEvent(evt);
                _view._gestureDetector?.OnTouchEvent(evt);
                var currentX = evt.GetX();
                var currentY = evt.GetY();

                if (_view._state == TouchState.None || _view._state == TouchState.Drag || _view._state == TouchState.Fling)
                {
                    switch (evt.Action)
                    {
                    case MotionEventActions.Down:
                        _lastX = currentX;
                        _lastY = currentY;
                        _view._fling?.CancelFling();
                        _view.SetState(TouchState.Drag);
                        break;

                    case MotionEventActions.Move:
                        if (_view._state == TouchState.Drag)
                        {
                            var deltaX    = currentX - _lastX;
                            var deltaY    = currentY - _lastY;
                            var fixTransX = _view.GetFixDragTrans(deltaX, _view.ViewWidth, _view.GetImageWidth());
                            var fixTransY = _view.GetFixDragTrans(deltaY, _view.ViewHeight, _view.GetImageHeight());
                            _view._matrix.PostTranslate(fixTransX, fixTransY);
                            _view.FixTrans();
                            _lastX = currentX;
                            _lastY = currentY;
                        }
                        break;

                    case MotionEventActions.Up:
                    case MotionEventActions.PointerUp:
                        _view.SetState(TouchState.None);
                        break;
                    }
                }
                _view.ImageMatrix = _view._matrix;
                //
                // indicate event was handled
                //
                return(true);
            }