Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何动态创建具有圆角的SurfaceView_Android_Surfaceview_Rounded Corners_Dynamically Generated - Fatal编程技术网

Android 如何动态创建具有圆角的SurfaceView

Android 如何动态创建具有圆角的SurfaceView,android,surfaceview,rounded-corners,dynamically-generated,Android,Surfaceview,Rounded Corners,Dynamically Generated,我正在从事一个Xamarin.Android项目,该项目涉及动态创建表示控件的视图层次结构。其中一个控件使用AndroidGameView类,该类继承自SurfaceView,并允许使用OpenGL ES进行绘图。我想知道如何给视图圆角。我已经修改过覆盖OnDraw方法或将可绘制背景应用于剪辑,但没有任何成功。这似乎与我的目标相似,但我不知道如何动态地执行此操作,而不是使用axml。是否可以动态提供SurfaceView圆角?在Android上没有直接的支持 我认为最好的方法是用一个大的三角形扇

我正在从事一个Xamarin.Android项目,该项目涉及动态创建表示控件的视图层次结构。其中一个控件使用AndroidGameView类,该类继承自SurfaceView,并允许使用OpenGL ES进行绘图。我想知道如何给视图圆角。我已经修改过覆盖OnDraw方法或将可绘制背景应用于剪辑,但没有任何成功。这似乎与我的目标相似,但我不知道如何动态地执行此操作,而不是使用axml。是否可以动态提供SurfaceView圆角?

在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);