/** * Note: if the scaleType is FitToScreen then min_zoom must be <= 1 and max_zoom must be >= 1 * * @param drawable the new drawable * @param initialMatrix the optional initial display matrix * @param minZoom the optional minimum scale, pass {@link #ZOOM_INVALID} to use the default min_zoom * @param maxZoom the optional maximum scale, pass {@link #ZOOM_INVALID} to use the default max_zoom */ public void setImageDrawable(final Drawable drawable, final Matrix initialMatrix, final float minZoom, final float maxZoom) { final int viewWidth = getWidth(); if (viewWidth <= 0) { mLayoutRunnable = new Runnable() { @Override public void run() { setImageDrawable(drawable, initialMatrix, minZoom, maxZoom); } }; return; } setImageDrawableInternal(drawable, initialMatrix, minZoom, maxZoom); }
protected float getDefaultScale(DisplayType type) { if (type == DisplayType.FIT_TO_SCREEN) { // always fit to screen return 1f; } else if (type == DisplayType.FIT_IF_BIGGER) { // normal scale if smaller, fit to screen otherwise return Math.min(1f, 1f / getScale(mBaseMatrix)); } else if (type == DisplayType.FIT_HEIGHT) { // scale to match the device height return getHeight() / (getYScale(mBaseMatrix) * mBitmapRect.height()); } else if (type == DisplayType.FIT_WIDTH) { // scale to match the device width return getWidth() / (getXScale(mBaseMatrix) * mBitmapRect.width()); } else { // no scale return 1f / getScale(mBaseMatrix); } }
/** * Note: if the scaleType is FitToScreen then min_zoom must be <= 1 and * max_zoom must be >= 1 * * @param drawable the new drawable * @param initial_matrix the optional initial display matrix * @param min_zoom the optional minimum scale, pass {@link #ZOOM_INVALID} to use * the default min_zoom * @param max_zoom the optional maximum scale, pass {@link #ZOOM_INVALID} to use * the default max_zoom */ public void setImageDrawable(final Drawable drawable, final Matrix initial_matrix, final float min_zoom, final float max_zoom) { final int viewWidth = getWidth(); if (viewWidth <= 0) { mLayoutRunnable = new Runnable() { @Override public void run() { setImageDrawable(drawable, initial_matrix, min_zoom, max_zoom); } }; return; } _setImageDrawable(drawable, initial_matrix, min_zoom, max_zoom); }
if (getWidth() != 0 && getHeight() != 0 && getDrawable() != null) { float mImageOriginalWidth = getDrawable().getIntrinsicWidth(); float mImageOriginalHeight = getDrawable().getMinimumHeight(); if ((mImageOriginalWidth - getWidth()) * mImageOriginalWidth / getWidth() > (mImageOriginalHeight - getHeight()) * mImageOriginalHeight / getHeight()) { return 1f; } else { return 1f / ((mImageOriginalWidth * (((float) getHeight()) / mImageOriginalHeight)) / getWidth()); if (getWidth() != 0 && getHeight() != 0 && getDrawable() != null) { float mImageOriginalWidth = getDrawable().getIntrinsicWidth(); float mImageOriginalHeight = getDrawable().getMinimumHeight(); if ((mImageOriginalWidth - getWidth()) * mImageOriginalWidth / getWidth() < (mImageOriginalHeight - getHeight()) * mImageOriginalHeight / getHeight()) { return 1f; } else { return 1f / ((mImageOriginalHeight * (((float) getWidth()) / mImageOriginalWidth)) / getHeight());