这个问题看似微不足道,并曾被问过很多次,但我找不到适合我的答案。
我有一个ImageView
和GLSurfaceView
被绘制在上面ImageView
,当我按下一个按钮。
对于我来说,ImageView
我传递aBitmap
并将其缩小以免发生OutOfMemoryError
异常。MyImageView
与UI中的其他元素对齐,因此它拉伸了图像以填充宽度/高度(这就是我想要的)。
当我从改变ImageView
到GLSurfaceView
我得到黑色区域围绕我的形象曾经是我的透明ImageView
,因为GLSurfaceView
使得UI有一个洞,工作方式不同比平时元素它吸引我的形象,以黑色的背景,我并不需要它,因为我有自定义背景。
我来到了一个解决方案,一套LayoutParams
用于GLSurfaceView
编程和我使用的Bitmap
宽度和高度,但我结束了一个更小的图像。我需要显示的图像的确切宽度和高度-不需要,ImageView
因为它具有透明区域。
PS:我不是OpenGL专家,如果您有适用于OpenGL的解决方案,请共享它。
一种)
_______________
| |
| |
|---------------| <-
| 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" />
float widthPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM,
pxToMm(ivImageHolder.getWidth(), context),
getResources().getDisplayMetrics());
float heightPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM,
pxToMm(ivImageHolder.getHeight(), context),
getResources().getDisplayMetrics());
ViewGroup.LayoutParams layoutParams= glsvImageHolder.getLayoutParams();
layoutParams.width= (int) widthPx;
layoutParams.height= (int) heightPx;
glsvImageHolder.setLayoutParams(layoutParams);
像素到毫米
public static float pxToMm(final float px, final Context context)
{
final DisplayMetrics dm = context.getResources().getDisplayMetrics();
return px / TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 1, dm);
}
使GLSurfaceView的宽度和高度为:wrap_content。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句