我有不止一个问题,但我将从更重要、更有问题的问题开始:
我有一个里面有ImageView的FrameLayout。我需要获取活动正在发生的屏幕的“可用区域”的大小,所以我在视图上设置了onSizeChanged (我扩展了ImageView类)。这里一切都很好。现在我有了一个1000x1000的图像,我想要在屏幕上显示,但不能缩放。我想把它剪短,真的。如果我使用viewObject.setLayoutParams(new Gallery.LayoutParams(1000, 1000)); )设置ImageView尺寸,我会得到正确显示的图像,但是onSizeChanged事件总是返回"1000 x 1000“自定义尺寸,而不是实际的屏幕大小值。有没有什么想法可以用图片的真实大小来显示图片(没有比例!)并且仍然获得报告屏幕可用空间的视图?当然,我也可以根据需要更改布局。
。Amplexos。
发布于 2010-03-23 21:14:33
你是想知道ImageView的尺寸吗?如果是这样的话,你可以使用getLocalVisibleRect来获取。下面是它的大致实现方式:
ImageView yourImageView;
public void onCreate(...){
setContentView(...)
yourImageView = (ImageView) findViewById(...);
(...)
}
getImageViewSize(){
Rect imageViewSize = new Rect();
yourImageView.getLocalVisibleRect(imageViewSize);
// imageViewSize now has all the values you need
Log.d("Your log tag", "ImageView width = " + (imageViewSize.right -
imageViewSize.left));
}然而,这里有一个陷阱。您必须确保在视图在屏幕上完成布局之前,您不会尝试获取视图的大小。换句话说,如果您尝试以onCreate为单位获取它的大小,那么它的大小将为0。你必须在之后获得它,例如,在你调整图像大小的同时,假设这是通过一个按钮完成的。(如果您正在使用SurfaceHolder,您也可以在surfaceCreated回调期间调用它,但我怀疑您是否在使用其中的一个...)
https://stackoverflow.com/questions/2497959
复制相似问题