【问题标题】:How to dynamically create a SurfaceView with rounded corners如何动态创建带有圆角的 SurfaceView
【发布时间】:2013-07-24 01:53:37
【问题描述】:
我正在开发一个 Xamarin.Android 项目,该项目涉及动态创建表示控件的视图层次结构。其中一种控件使用 AndroidGameView 类,该类继承自 SurfaceView 并允许使用 OpenGL ES 进行绘图。我试图弄清楚如何给视图圆角。我已经修改了覆盖 OnDraw 方法或将可绘制背景应用于剪辑,但没有任何成功。 This question 似乎与我的目标相似,但我无法弄清楚如何动态地执行此操作而不是使用 axml。是否可以动态给 SurfaceView 圆角?
【问题讨论】:
标签:
android
surfaceview
rounded-corners
dynamically-generated
【解决方案1】:
Android 上没有直接支持。
我认为最好的方法是使用定义圆角的大三角扇创建所需的圆角矩形,并将其放置在场景后面并使其不透明。 SurfaceView 的格式必须是 Bitmap.Config.ARGB_8888 并使用 setOpaque(0) 和 setAlpha(1.0)。
glClearColor() 必须是透明的黑色才能与 Android 画布混合:
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);