这个问题可能看起来很琐碎,也被问得很多次,但我找不到适合我的答案。
我有一个ImageView
和GLSurfaceView
,当我按下按钮时,它们会绘制在ImageView
的顶部。
对于我的ImageView
,我传递了一个Bitmap
并将其缩小,以避免OutOfMemoryError
异常。我的ImageView
与UI中的其他元素对齐,因此它会拉伸图像以填充宽度/高度(这就是我想要的)。
当我从ImageView
切换到GLSurfaceView
时,我会得到黑色区域,这些区域曾经在我的ImageView
中是透明的,因为GLSurfaceView
在UI中开了一个洞,与通常的绘图元素不同,它将我的图像背景画成黑色,而我不需要它,因为我有自定义背景。
我想到了一种解决方案,即以编程方式为GLSurfaceView
设置LayoutParams
,并使用Bitmap
的宽度和高度,但最终我得到的是一个较小的图像。我需要显示的确切宽度和高度 - 不是ImageView
,因为它具有透明区域。
PS:我不是OpenGL专家,如果您有适用于OpenGL的解决方案,请共享。
a)
_______________
| |
| |
|---------------| <-
| transparent |
|---------------| <- Entire
| | ImageView
| Image | need
| | only this
|---------------| <-
| transparent |
|---------------| <-
| |
---------------
b)
_______________
| |
| |
|---------------| <-
| black |
|---------------|
| |
| Image | GLSurfaceView
| |
|---------------|
| black |
|---------------| <-
| |
---------------
我的ImageView
和GLSurfaceView
:
<android.opengl.GLSurfaceView
android:id="@+id/glsvImageHolder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/horScrollImage"
android:layout_marginBottom="5dp"
android:layout_marginTop="50dp"
android:visibility="invisible" />
<ImageView
android:id="@+id/ivImageHolder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/horScrollImage"
android:layout_marginBottom="5dp"
android:layout_marginTop="50dp"
android:visibility="visible" />