我正在实现一个自定义视图,我希望能够在运行时更改它的大小。
简化问题:我需要在此视图中显示位图,但由于它经常刷新,我想扩展SurfaceView。
问题是我失去了ImageView的自动调整大小功能。
因此,我想声明一个方法setCustomBitmap(Bitmap bmp),并根据位图的宽度和高度(保持纵横比)调整视图尺寸(在当前或下一次显示视图时)。
我应该使用什么方法?我认为setWidth()和setHeight()不是的最佳想法
由于您正在扩展SurfaceView,您可能能够覆盖onMeasure()
方法。传递给超类(通过super.onMeasure()
)的MeasureSpecifi实例将决定SurfaceView的大小。您可以使用位图的尺寸来制作每个MeasureSpecifi。
例如:
protected void onMeasure( int widthMeasureSpec, int heightMeasureSpec ) {
int parentViewWidth = MeasureSpec.getSize( widthMeasureSpec );
int parentViewHeight = MeasureSpec.getSize( heightMeasureSpec );
// ... take into account the parent's size as needed ...
super.onMeasure(
MeasureSpec.makeMeasureSpec( bitmap.width(), MeasureSpec.EXACTLY ),
MeasureSpec.makeMeasureSpec( bitmap.height(), MeasureSpec.EXACTLY ) );
}