android.view.GestureDetector.SimpleOnGestureListener#android.view.ScaleGestureDetector源码实例Demo

下面列出了android.view.GestureDetector.SimpleOnGestureListener#android.view.ScaleGestureDetector 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

private void sharedConstructing(Context context) {
	super.setClickable(true);
	this.context = context;
	mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
	mGestureDetector = new GestureDetector(context, new GestureListener());
	matrix = new Matrix();
	prevMatrix = new Matrix();
	m = new float[9];
	normalizedScale = 1;
	if (mScaleType == null) {
		mScaleType = ScaleType.FIT_CENTER;
	}
	minScale = 1;
	maxScale = 3;
	superMinScale = SUPER_MIN_MULTIPLIER * minScale;
	superMaxScale = SUPER_MAX_MULTIPLIER * maxScale;
	setImageMatrix(matrix);
	setScaleType(ScaleType.MATRIX);
	setState(State.NONE);
	onDrawReady = false;
	super.setOnTouchListener(new PrivateOnTouchListener());
}
 
源代码2 项目: PhotoPicker   文件: TouchImageView.java
private void sharedConstructing(Context context) {
  super.setClickable(true);
  this.context = context;
  mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
  mGestureDetector = new GestureDetector(context, new GestureListener());
  matrix = new Matrix();
  prevMatrix = new Matrix();
  m = new float[9];
  normalizedScale = 1;
  if (mScaleType == null) {
    mScaleType = ScaleType.FIT_CENTER;
  }
  minScale = 1;
  maxScale = 3;
  superMinScale = SUPER_MIN_MULTIPLIER * minScale;
  superMaxScale = SUPER_MAX_MULTIPLIER * maxScale;
  setImageMatrix(matrix);
  setScaleType(ScaleType.MATRIX);
  setState(State.NONE);
  onDrawReady = false;
  super.setOnTouchListener(new PrivateOnTouchListener());
}
 
源代码3 项目: chat21-android-sdk   文件: TouchImageView.java
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
    super.onScaleEnd(detector);
    setState(State.NONE);
    boolean animateToZoomBoundary = false;
    float targetZoom = normalizedScale;
    if (normalizedScale > maxScale) {
        targetZoom = maxScale;
        animateToZoomBoundary = true;

    } else if (normalizedScale < minScale) {
        targetZoom = minScale;
        animateToZoomBoundary = true;
    }

    if (animateToZoomBoundary) {
        DoubleTapZoom doubleTap = new DoubleTapZoom(targetZoom, viewWidth / 2, viewHeight / 2, true);
        compatPostOnAnimation(doubleTap);
    }
}
 
源代码4 项目: CodePolitan   文件: TouchImageView.java
@Override
public void onScaleEnd(ScaleGestureDetector detector)
{
    super.onScaleEnd(detector);
    setState(State.NONE);
    boolean animateToZoomBoundary = false;
    float targetZoom = normalizedScale;
    if (normalizedScale > maxScale)
    {
        targetZoom = maxScale;
        animateToZoomBoundary = true;

    } else if (normalizedScale < minScale)
    {
        targetZoom = minScale;
        animateToZoomBoundary = true;
    }

    if (animateToZoomBoundary)
    {
        DoubleTapZoom doubleTap = new DoubleTapZoom(targetZoom,
                                                    viewWidth / 2, viewHeight / 2, true);
        compatPostOnAnimation(doubleTap);
    }
}
 
源代码5 项目: PicturePicker   文件: ZoomImageView.java
private void sharedConstructing(Context context) {
    super.setClickable(true);
    this.context = context;
    mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
    mGestureDetector = new GestureDetector(context, new GestureListener());
    matrix = new Matrix();
    prevMatrix = new Matrix();
    m = new float[9];
    normalizedScale = 1;
    if (mScaleType == null) {
        mScaleType = ScaleType.FIT_CENTER;
    }
    minScale = 1;
    maxScale = 3;
    superMinScale = SUPER_MIN_MULTIPLIER * minScale;
    superMaxScale = SUPER_MAX_MULTIPLIER * maxScale;
    setImageMatrix(matrix);
    setScaleType(ScaleType.MATRIX);
    setState(State.NONE);
    onDrawReady = false;
    super.setOnTouchListener(new PrivateOnTouchListener());
}
 
private void initZoomableScrollView(Context context) {
    setWillNotDraw(false);

    setHorizontalScrollBarEnabled(true);
    setVerticalScrollBarEnabled(true);

    setClickable(true);

    mOverScroller = new OverScroller(context);
    mZoomer = new Zoomer(context);
    mScaleDetector = new ScaleGestureDetector(context, this);
    mGestureDetector = new GestureDetector(context, this);

    mEdgeEffectTop = new EdgeEffectCompat(context);
    mEdgeEffectBottom = new EdgeEffectCompat(context);
    mEdgeEffectLeft = new EdgeEffectCompat(context);
    mEdgeEffectRight = new EdgeEffectCompat(context);
}
 
源代码7 项目: MotionViews-Android   文件: MotionView.java
private void init(@NonNull Context context) {
    // I fucking love Android
    setWillNotDraw(false);

    selectedLayerPaint = new Paint();
    selectedLayerPaint.setAlpha((int) (255 * Constants.SELECTED_LAYER_ALPHA));
    selectedLayerPaint.setAntiAlias(true);

    // init listeners
    this.scaleGestureDetector = new ScaleGestureDetector(context, new ScaleListener());
    this.rotateGestureDetector = new RotateGestureDetector(context, new RotateListener());
    this.moveGestureDetector = new MoveGestureDetector(context, new MoveListener());
    this.gestureDetectorCompat = new GestureDetectorCompat(context, new TapsListener());

    setOnTouchListener(onTouchListener);

    updateUI();
}
 
源代码8 项目: MultiView   文件: TouchImageView.java
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
    super.onScaleEnd(detector);
    setState(State.NONE);
    boolean animateToZoomBoundary = false;
    float targetZoom = normalizedScale;
    if (normalizedScale > maxScale) {
        targetZoom = maxScale;
        animateToZoomBoundary = true;

    } else if (normalizedScale < minScale) {
        targetZoom = minScale;
        animateToZoomBoundary = true;
    }

    if (animateToZoomBoundary) {
        DoubleTapZoom doubleTap = new DoubleTapZoom(targetZoom, viewWidth / 2, viewHeight / 2, true);
        compatPostOnAnimation(doubleTap);
    }
}
 
源代码9 项目: ScaleLayout   文件: TouchImageView.java
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
    super.onScaleEnd(detector);
    setState(State.NONE);
    boolean animateToZoomBoundary = false;
    float targetZoom = normalizedScale;
    if (normalizedScale > maxScale) {
        targetZoom = maxScale;
        animateToZoomBoundary = true;

    } else if (normalizedScale < minScale) {
        targetZoom = minScale;
        animateToZoomBoundary = true;
    }

    if (animateToZoomBoundary) {
        DoubleTapZoom doubleTap = new DoubleTapZoom(targetZoom, viewWidth / 2, viewHeight / 2, true);
        compatPostOnAnimation(doubleTap);
    }
}
 
源代码10 项目: kAndroid   文件: BaseRateView.java
private void initView() {
    setWillNotDraw(false);
    mPoints = new ArrayList<>();

    mBackgroundColor = Color.parseColor("#2A2D4F");
    mBackgroundPaint.setColor(mBackgroundColor);

    mGridPaint.setColor(Color.parseColor("#15FFFFFF")); //网格线颜色
    mGridPaint.setStrokeWidth(dp2px(1));

    mDetector = new GestureDetectorCompat(getContext(), this);
    mScaleDetector = new ScaleGestureDetector(getContext(), this);
    mAnimator = ValueAnimator.ofFloat(0f, 1f);
    mAnimator.setDuration(mAnimationDuration);
    mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            invalidate();
        }
    });
}
 
源代码11 项目: ImageGallery   文件: TouchImageView.java
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
    super.onScaleEnd(detector);
    setState(State.NONE);
    boolean animateToZoomBoundary = false;
    float targetZoom = normalizedScale;
    if (normalizedScale > maxScale) {
        targetZoom = maxScale;
        animateToZoomBoundary = true;

    } else if (normalizedScale < minScale) {
        targetZoom = minScale;
        animateToZoomBoundary = true;
    }

    if (animateToZoomBoundary) {
        DoubleTapZoom doubleTap = new DoubleTapZoom(targetZoom, viewWidth / 2, viewHeight / 2, true);
        compatPostOnAnimation(doubleTap);
    }
}
 
源代码12 项目: Document-Scanner   文件: TouchImageView.java
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
    super.onScaleEnd(detector);
    setState(State.NONE);
    boolean animateToZoomBoundary = false;
    float targetZoom = normalizedScale;
    if (normalizedScale > maxScale) {
        targetZoom = maxScale;
        animateToZoomBoundary = true;

    } else if (normalizedScale < minScale) {
        targetZoom = minScale;
        animateToZoomBoundary = true;
    }

    if (animateToZoomBoundary) {
        DoubleTapZoom doubleTap = new DoubleTapZoom(targetZoom, viewWidth / 2, viewHeight / 2, true);
        compatPostOnAnimation(doubleTap);
    }
}
 
源代码13 项目: SmartChart   文件: PreviewChartTouchHandler.java
public PreviewChartTouchHandler(Context context, Chart chart) {
    super(context, chart);
    gestureDetector = new GestureDetector(context, new PreviewChartGestureListener());
    scaleGestureDetector = new ScaleGestureDetector(context, new ChartScaleGestureListener());

    // Disable value touch and selection mode, by default not needed for preview chart.
    isValueTouchEnabled = false;
    isValueSelectionEnabled = false;
}
 
源代码14 项目: PicKing   文件: ScaleDragDetector.java
@Override public boolean onScale(ScaleGestureDetector detector) {
    float scaleFactor = detector.getScaleFactor();

    if (Float.isNaN(scaleFactor) || Float.isInfinite(scaleFactor)) {
        return false;
    }

    mScaleDragGestureListener.onScale(scaleFactor, detector.getFocusX(), detector.getFocusY());
    return true;
}
 
源代码15 项目: Slide   文件: PinchZoomVideoView.java
public PinchZoomVideoView(Context context) {
    super(context);
    mScaleGestureDetector = new ScaleGestureDetector(getContext(), new MyScaleGestureListener());
    setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            mGestureDetector.onTouchEvent(event);
            mScaleGestureDetector.onTouchEvent(event);
            return true;
        }
    });
}
 
源代码16 项目: UltimateAndroid   文件: GestureTouchActivity.java
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.gesture_activity);

	// Determine the center of the screen to center 'gesture_earth'
	Display display = getWindowManager().getDefaultDisplay();
	mFocusX = display.getWidth()/2f;
	mFocusY = display.getHeight()/2f;
	
	// Set this class as touchListener to the ImageView
	ImageView view = (ImageView) findViewById(R.id.imageView);
	view.setOnTouchListener(this);
	
	// Determine dimensions of 'gesture_earth' image
	Drawable d 		= this.getResources().getDrawable(R.drawable.gesture_earth);
	mImageHeight 	= d.getIntrinsicHeight();
	mImageWidth 	= d.getIntrinsicWidth();

	// View is scaled and translated by matrix, so scale and translate initially
       float scaledImageCenterX = (mImageWidth*mScaleFactor)/2; 
       float scaledImageCenterY = (mImageHeight*mScaleFactor)/2;
       
	mMatrix.postScale(mScaleFactor, mScaleFactor);
	mMatrix.postTranslate(mFocusX - scaledImageCenterX, mFocusY - scaledImageCenterY);
	view.setImageMatrix(mMatrix);

	// Setup Gesture Detectors
	mScaleDetector 	= new ScaleGestureDetector(getApplicationContext(), new ScaleListener());
	mRotateDetector = new RotateGestureDetector(getApplicationContext(), new RotateListener());
	mMoveDetector 	= new MoveGestureDetector(getApplicationContext(), new MoveListener());
	mShoveDetector 	= new ShoveGestureDetector(getApplicationContext(), new ShoveListener());
}
 
源代码17 项目: ZoomImageView   文件: ZoomImageView.java
@Override
public boolean onScale(ScaleGestureDetector detector) {

    float scaleFactor = detector.getScaleFactor();//获取用户手势判断出来的缩放值
    float scale = getScale();

    /**
     * 没有图片
     */
    if (getDrawable() == null) return true;

    //缩放范围控制
    if ((scale < mMaxScale && scaleFactor > 1.0f) || (scale > mMinScale && scaleFactor < 1.0f)) {
        if (scaleFactor * scale < mMinScale) {
            scaleFactor = mMinScale / scale;
        }

        if (scale * scaleFactor > mMaxScale) {
            scaleFactor = mMaxScale / scale;
        }

        mMatrix.postScale(scaleFactor, scaleFactor, detector.getFocusX(), detector.getFocusY());
        checkBorderAndCenterWhenScale();
        setImageMatrix(mMatrix);
    }
    return true;
}
 
源代码18 项目: PhotoDraweeView   文件: ScaleDragDetector.java
public ScaleDragDetector(Context context, OnScaleDragGestureListener scaleDragGestureListener) {
    mScaleDetector = new ScaleGestureDetector(context, this);
    mScaleDragGestureListener = scaleDragGestureListener;

    final ViewConfiguration configuration = ViewConfiguration.get(context);
    mMinimumVelocity = configuration.getScaledMinimumFlingVelocity();
    mTouchSlop = configuration.getScaledTouchSlop();
}
 
源代码19 项目: TestChat   文件: ZoomImageView.java
@SuppressLint("NewApi")
@Override
public boolean onScale(ScaleGestureDetector detector) {
        float scale = getScale();
        float scaleFactor = detector.getScaleFactor();

        if (getDrawable() == null)
                return true;

        /**
         * 缩放的范围控制
         */
        if ((scale < SCALE_MAX && scaleFactor > 1.0f)
                || (scale > initScale && scaleFactor < 1.0f)) {
                /**
                 * 最大值最小值判断
                 */
                if (scaleFactor * scale < initScale) {
                        scaleFactor = initScale / scale;
                }
                if (scaleFactor * scale > SCALE_MAX) {
                        scaleFactor = SCALE_MAX / scale;
                }
                /**
                 * 设置缩放比例
                 */
                mScaleMatrix.postScale(scaleFactor, scaleFactor,
                        detector.getFocusX(), detector.getFocusY());
                checkBorderAndCenterWhenScale();
                setImageMatrix(mScaleMatrix);
        }
        return true;

}
 
源代码20 项目: XImageView   文件: GestureManager.java
@Override
public void onScaleEnd(ScaleGestureDetector detector)
{
    /**
     * 当缩放结束后,计算最新的的SampleSize, 如果SampleSize改变了,则重新解码最新的bitmap
     */
    if (mBM != null) {
        mBM.updateSampleSize();
    }
}
 
源代码21 项目: XImageView   文件: GestureManager.java
/*************************************缩放**************************************/

    @Override
    public boolean onScale(ScaleGestureDetector detector)
    {
        if (mBM == null) {
            return false;
        }

        float factor = detector.getScaleFactor();
        mBM.scale(detector.getFocusX(), detector.getFocusY(), factor);

        return true;
    }
 
源代码22 项目: UCDLive_Android   文件: FloatingWindow.java
@Override
public boolean onScale(ScaleGestureDetector detector) {
    scaleFactor *= detector.getScaleFactor();
    scaleFactor = Math.max(MIN_SCALE_FACTOR, Math.min(scaleFactor, MAX_SCALE_FACTOR));
    int newWidth = (int) (origWidth * scaleFactor);
    int newHeight = (int) (origHeight * scaleFactor);
    updateWindowSize(newWidth, newHeight);
    return true;
}
 
源代码23 项目: AndroidPdfViewerV1   文件: DragPinchManager.java
public DragPinchManager(PDFView pdfView, AnimationManager animationManager) {
    this.pdfView = pdfView;
    this.animationManager = animationManager;
    this.isSwipeEnabled = false;
    this.swipeVertical = pdfView.isSwipeVertical();
    gestureDetector = new GestureDetector(pdfView.getContext(), this);
    scaleGestureDetector = new ScaleGestureDetector(pdfView.getContext(), this);
    maxFlingVelocity = ViewConfiguration.get(pdfView.getContext()).getScaledMaximumFlingVelocity();
    pdfView.setOnTouchListener(this);
}
 
源代码24 项目: Slide   文件: PinchZoomVideoView.java
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
    mW = getWidth();
    mH = getHeight();
    Log.d("onScaleBegin", "scale=" + detector.getScaleFactor() + ", w=" + mW + ", h=" + mH);
    return true;
}
 
源代码25 项目: YiBo   文件: TouchImageView.java
@Override
public boolean onScale(ScaleGestureDetector detector) {
     mScaleFactor *= detector.getScaleFactor();
     // Don't let the object get too small or too large.
     mScaleFactor = Math.max(1.0F, Math.min(mScaleFactor, maxZoom()));
     if (Logger.isDebug()) {
    	 Log.d(TAG, "Zoom To : " + mScaleFactor);
     }
     zoomTo(mScaleFactor);
     return true;
}
 
源代码26 项目: Chimee   文件: MainActivity.java
@Override
public boolean onScale(ScaleGestureDetector detector) {

    mScaleFactor *= detector.getScaleFactor();
    mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 5.0f));
    if (isVerticalScaling(detector)) {
        resizeInputWindow(initialHeight);
    } else {
        resizeText(initialTextSize);
    }
    return true;
}
 
源代码27 项目: Dashchan   文件: PhotoView.java
@Override
public boolean onScale(ScaleGestureDetector detector) {
	float factor = detector.getScaleFactor();
	// If factor <= 0, the image will be rotated, so let's apply only positive values
	if (factor > 0f) {
		onScale(factor, detector.getFocusX(), detector.getFocusY());
	}
	return true;
}
 
源代码28 项目: RelaxFinger   文件: ClipImageView.java
public MultiGestureDetector(Context context) {
	scaleGestureDetector = new ScaleGestureDetector(context, this);

	gestureDetector = new GestureDetector(context, this);
	gestureDetector.setOnDoubleTapListener(this);

	final ViewConfiguration configuration = ViewConfiguration
			.get(context);
	scaledTouchSlop = configuration.getScaledTouchSlop();
}
 
源代码29 项目: MoeQuest   文件: PhotoImageView.java
@Override
public boolean onScale(ScaleGestureDetector detector) {

  scaleImage(detector.getScaleFactor(), detector.getFocusX(), detector.getFocusY(), true);

  //
  // OnTouchImageViewListener is set: TouchImageView pinch zoomed by user.
  //
  if (touchImageViewListener != null) {
    touchImageViewListener.onMove();
  }
  return true;
}
 
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
    lastFocusX = detector.getFocusX();
    lastFocusY = detector.getFocusY();
    firstSpan = detector.getCurrentSpan();
    currentScale = 1.0f;
    if (!this.mapView.isAnimating()) {
        this.mapView.setIsAnimating(true);
        this.mapView.getController().aboutToStartAnimation(lastFocusX, lastFocusY);
        scaling = true;
    }
    return true;
}