示例#1
0
    @Override
    public void run() {

      //
      // OnTouchImageViewListener is set: TouchImageView listener has been flung by user.
      // Listener runnable updated with each frame of fling animation.
      //
      if (touchImageViewListener != null) {
        touchImageViewListener.onMove();
      }

      if (scroller.isFinished()) {
        scroller = null;
        return;
      }

      if (scroller.computeScrollOffset()) {
        int newX = scroller.getCurrX();
        int newY = scroller.getCurrY();
        int transX = newX - currX;
        int transY = newY - currY;
        currX = newX;
        currY = newY;
        matrix.postTranslate(transX, transY);
        fixTrans();
        setImageMatrix(matrix);
        compatPostOnAnimation(this);
      }
    }
示例#2
0
    Fling(int velocityX, int velocityY) {
      setState(State.FLING);
      scroller = new CompatScroller(context);
      matrix.getValues(m);

      int startX = (int) m[Matrix.MTRANS_X];
      int startY = (int) m[Matrix.MTRANS_Y];
      int minX, maxX, minY, maxY;

      if (getImageWidth() > viewWidth) {
        minX = viewWidth - (int) getImageWidth();
        maxX = 0;

      } else {
        minX = maxX = startX;
      }

      if (getImageHeight() > viewHeight) {
        minY = viewHeight - (int) getImageHeight();
        maxY = 0;

      } else {
        minY = maxY = startY;
      }

      scroller.fling(startX, startY, (int) velocityX, (int) velocityY, minX, maxX, minY, maxY);
      currX = startX;
      currY = startY;
    }
示例#3
0
 public void cancelFling() {
   if (scroller != null) {
     setState(State.NONE);
     scroller.forceFinished(true);
   }
 }