Java Code Examples for android.widget.ImageView.getImageMatrix()

The following are Jave code examples for showing how to use getImageMatrix() of the android.widget.ImageView class. You can vote up the examples you like. Your votes will be used in our system to get more good examples.
+ Save this method
Example 1
Project: PinchToZoom   File: ScaleAnimatorHandler.java   View Source Code Vote up 8 votes
@Override
public void onAnimationUpdate(ValueAnimator animation) {
    ImageMatrixCorrector corrector = getCorrector();
    ImageView imageView = corrector.getImageView();
    if(imageView.getDrawable() != null) {
        Matrix matrix = imageView.getImageMatrix();
        float[] values = getValues();
        matrix.getValues(values);

        float sx = (float) animation.getAnimatedValue();
        sx = corrector.correctAbsolute(Matrix.MSCALE_X, sx) / values[Matrix.MSCALE_X];

        if (translate) {
            matrix.postScale(sx, sx, px, py);
        } else {
            matrix.postScale(sx, sx);
        }
        corrector.performAbsoluteCorrections();
        imageView.invalidate();
    }
}
 
Example 2
Project: XphotoView   File: ImageMatrixAnimator.java   View Source Code Vote up 7 votes
public Builder(ImageView imageView) {
    viewRef = new WeakReference<>(imageView);
    if (imageView.getScaleType() != ImageView.ScaleType.MATRIX) {
        throw new IllegalStateException("the image scaleType must be ScaleType.MATRIX");
    }

    Drawable d = imageView.getDrawable();
    if (d != null) {
        animCenterX = d.getIntrinsicWidth() / 2;
        animCenterY = d.getIntrinsicHeight() / 2;
    }

    Matrix matrix = new Matrix(imageView.getImageMatrix());
    fromDegrees = toDegrees = MatrixUtils.getMatrixAngle(matrix);
    fromScaleX = toScaleX = getMatrixScaleX(matrix);
    fromScaleY = toScaleY = getMatrixScaleY(matrix);

    float[] txty = calculateTxTy();
    fromTranslateX = toTranslateX = txty[0];
    fromTranslateY = toTranslateY = txty[1];

}
 
Example 3
Project: PinchToZoom   File: FlingAnimatorHandler.java   View Source Code Vote up 7 votes
@Override
public void onAnimationUpdate(ValueAnimator animation) {
    ImageMatrixCorrector corrector = getCorrector();
    ImageView imageView = corrector.getImageView();
    Matrix matrix = imageView.getImageMatrix();
    float[] values = getValues();
    matrix.getValues(values);

    float dx = (float) animation.getAnimatedValue(PROPERTY_TRANSLATE_X);
    dx = corrector.correctAbsolute(Matrix.MTRANS_X, dx) - values[Matrix.MTRANS_X];

    float dy = (float) animation.getAnimatedValue(PROPERTY_TRANSLATE_Y);
    dy = corrector.correctAbsolute(Matrix.MTRANS_Y, dy) - values[Matrix.MTRANS_Y];

    matrix.postTranslate(dx, dy);
    imageView.invalidate();
}
 
Example 4
Project: PinchToZoom   File: ImageViewPager.java   View Source Code Vote up 7 votes
@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
    if(v instanceof ImageView) {
        ImageView iv = (ImageView) v;
        Drawable drawable = iv.getDrawable();
        if(drawable != null) {
            float vw = iv.getWidth();
            float vh = iv.getHeight();
            float dw = drawable.getIntrinsicWidth();
            float dh = drawable.getIntrinsicHeight();

            Matrix matrix = iv.getImageMatrix();
            matrix.getValues(VALUES);
            float tx = VALUES[Matrix.MTRANS_X] + dx;
            float sdw = dw * VALUES[Matrix.MSCALE_X];

            //Log.d(TAG, "sdw: " + sdw + " vw: " + vw);

            return VALUES[Matrix.MSCALE_X] / centerInsideScale(vw, vh, dw, dh) > scaleThreshold && !translationExceedsBoundary(tx, vw, sdw) && sdw > vw && pointerCount == 1; // Assumes x-y scales are equal
        }
    }
    return super.canScroll(v, checkV, dx, x, y);
}
 
Example 5
Project: PinchToZoom   File: ImageViewUtils.java   View Source Code Vote up 7 votes
/**
 *
 * @param imageView
 * @param width
 * @param height
 */
public static final void updateImageViewMatrix(ImageView imageView, float width, float height) {
    Drawable drawable = imageView.getDrawable();
    if(drawable == null) {
        throw new NullPointerException("ImageView drawable is null");
    }
    Matrix matrix = imageView.getImageMatrix();
    if(!matrix.isIdentity()) {
        float[] values = new float[9];
        matrix.getValues(values);

        RectF src = new RectF();
        src.left = 0;
        src.top = 0;
        src.right = width;
        src.bottom = height;

        RectF dst = new RectF();
        dst.left = values[Matrix.MTRANS_X];
        dst.top = values[Matrix.MTRANS_Y];
        dst.right = dst.left + (drawable.getIntrinsicWidth() * values[Matrix.MSCALE_X]);
        dst.bottom = dst.top + (drawable.getIntrinsicHeight() * values[Matrix.MSCALE_Y]);

        matrix.setRectToRect(src, dst, Matrix.ScaleToFit.CENTER);
    }
}
 
Example 6
Project: android-source-codes   File: ImageTransitionActivity.java   View Source Code Vote up 5 votes
@Override
public Matrix get(ImageView object) {
    return object.getImageMatrix();
}