我使用TouchImageView (https://github.com/MikeOrtiz/TouchImageView)在全屏上显示位图。当我放普通位图时:
touchImageView.setImageBitmap(bm);如果用户双击或2指捏-缩放图片缩放,但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" />请帮帮忙!
发布于 2015-02-05 14:19:44
在调查之后,我发现了以下功能:
/**
* 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中的用户来计算
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,用于编写代码,因为用于计算宽度和高度的函数。
希望有人会觉得这有帮助。
https://stackoverflow.com/questions/28342559
复制相似问题