android TouchImageView 高度不改变

标签 android bitmap height zooming touchimageview

我正在使用 TouchImageView ( https://github.com/MikeOrtiz/TouchImageView ) 全屏显示位图。当我放置普通位图时:

touchImageView.setImageBitmap(bm);

如果用户双击或双指捏合缩放图片会缩放,但 TouchImageView 宽度/高度保持不变。

当我放置大于屏幕宽度/高度的位图时,一切都按预期工作:

Bitmap new_bm = Bitmap.createScaledBitmap(bm, 
            more_px_then_screen_width, more_px_then_screen_height, false);
touchImageView.setImageBitmap(bm);

这是 xml:

    <TouchImageView 
    android:id="@+id/picture_full_screen"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true" />

请帮忙!

最佳答案

经过调查我发现了这个函数:

/**
 * Set view dimensions based on layout params
 * 
 * @param mode 
 * @param size
 * @param drawableWidth
 * @return
 */
private int setViewSize(int mode, int size, int drawableWidth) {
    int viewSize;
    switch (mode) {
    case MeasureSpec.EXACTLY:
        viewSize = size;
        break;

    case MeasureSpec.AT_MOST:
        viewSize = Math.min(drawableWidth, size);
        break;

    case MeasureSpec.UNSPECIFIED:
        viewSize = drawableWidth;
        break;

    default:
        viewSize = size;
        break;
    }
    return viewSize;
}

稍后将由用户在 onMeasure 中计算 viewWidth, viewHeight 用于

setMeasuredDimension(viewWidth, viewHeight);

setViewSize 更改为此得到了我想要的效果:

/**
 * Set view dimensions based on layout params
 * 
 * @param mode 
 * @param size
 * @param drawableSize
 * @return
 */
private int setViewSize(int mode, int size, int drawableSize) {
    int viewSize;
    switch (mode) {
    case MeasureSpec.EXACTLY:
        viewSize = (int) (size*Math.max(normalizedScale, 1.0));
        break;

    case MeasureSpec.AT_MOST:
        viewSize = (int) (size*Math.max(normalizedScale, 1.0));
        break;

    case MeasureSpec.UNSPECIFIED:
        viewSize = drawableSize;
        break;

    default:
        viewSize = (int) (size*Math.max(normalizedScale, 1.0));
        break;
    }
    return viewSize;
}

我将drawableWidth 的名称更改为drawableSize 以进行代码排版,因为该函数也用于计算宽度和高度。

希望有人会觉得这有帮助。

关于android TouchImageView 高度不改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28342559/

相关文章:

html - 相同高度的框(div)

android - 我什么时候应该取消/杀死一个线程?

Android:如何绘制位图的单一颜色?

android - 禁用标题侧栏滚动

C++ 改变位图中的值

c# - 在 WPF 中不断绘制大量位图的最佳方法?

html - 按高度百分比设置多个 div 以填充父 div

c - 在c中读取JPEG头文件

android - 滚动和缩放 ImageView

java - 强制停止 Android 应用程序