Я работаю с SDK, который предоставляет прямоугольник angular GLSurfaceView
посредством обратного вызова.
Я хочу иметь возможность отображать это представление в круговой схеме. (т.е.) Я хотел бы отобразить вид в виде круга
- Он показывает форму круга при наложении
GLSurfaceView
поверх ImageView
GLSurfaceView
более ImageView
- При наложении отображается квадратная форма
GLSurfaceView
более VideoView
.
GLSurfaceView
более VideoView
Я попробовал приведенный ниже код для создания круга GLSurfaceView
public class SampleGLView extends GLSurfaceView implements View.OnTouchListener {
private Path clippingPath;
public SampleGLView(Context context) {
this(context, null);
}
public SampleGLView(Context context, AttributeSet attrs) {
super(context, attrs);
setOnTouchListener(this);
}
private TouchListener touchListener;
@Override
public boolean onTouch(View v, MotionEvent event) {
final int actionMasked = event.getActionMasked();
if (actionMasked != MotionEvent.ACTION_DOWN) {
return false;
}
if (touchListener != null) {
touchListener.onTouch(event, v.getWidth(), v.getHeight());
}
return false;
}
public interface TouchListener {
void onTouch(MotionEvent event, int width, int height);
}
public void setTouchListener(TouchListener touchListener) {
this.touchListener = touchListener;
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
if (w != oldw || h != oldh) {
int radius = Math.min(w, h)/2;
clippingPath = new Path();
clippingPath.addCircle(w/2, h/2, radius, Path.Direction.CW);
}
}
@Override
protected void dispatchDraw(Canvas canvas) {
int count = canvas.save();
canvas.clipPath(clippingPath);
super.dispatchDraw(canvas);
canvas.restoreToCount(count);
}
}
Вопрос:
Как мне go об обрезке и рендеринге в виде круга?
(Фон постоянно меняется, поэтому я не могу наложить прозрачный вид поверх этого видеоизображения. Цель состоит в том, чтобы иметь прямоугольный вид angular glsurface на сверху которой есть круговой вид поверхности)
Кто-нибудь есть идеи, как решить, пожалуйста, прокомментируйте. Заранее спасибо.