Я попробовал другой подход, чтобы реализовать мою функциональность, состоящую из надписей над glSurfaceView, и одновременно иметь возможность увеличивать и уменьшать масштаб.Я сделал все наброски поверх обычного андроида при условии холста.На заднем плане у меня есть GLSurfaceView.Вдобавок к этому у меня есть представление scribbble (http://www.java2s.com/Code/Android/2D-Graphics/Classforthescribblememopad.htm). Я установил фон ScribbleView как ПРОЗРАЧНЫЙ. Когда я закончил Scribbling, я отключил scribbling, используя onClickListener of Button (когда scribbling выключен, пользователь может увеличивать и уменьшать масштаб)Я могу увеличивать или уменьшать масштаб, используя ScaleGestureDetector.SimpleOnScaleGestureListener. В его onScale()
я использую mScaleFactor=(mScaleFactor * detector.getScaleFactor());
, где mScaleFactor инициализируется в 1f, а mScaleFactor используется для отслеживания текущего ScalingFactor. Для масштабирования glSurface я использую glScalef(mScaleFactor,mScaleFactor)
и дляЯ использую масштабирование холста canvas.scale(mScaleFactor,mScaleFactor,getWidth()/2,getHeight()/2)
. Я установил точку поворота на середину вида, поскольку координаты холста таковы, что его начало находится слева вверху. После того, как я увеличил или уменьшил холст, Затем для правильной пометкив onTouchEvent (Событие) представления Scribble я сделал приведенное ниже отображение для
event.getX() and event.getY(). <br>
x=(event.getX()- getWidth() / 2) / getmScaleFactor() + getWidth() / 2;<br>
y=(event.getX()- getWidth() / 2) / getmScaleFactor() + getWidth() / 2;<br>
<br>
Теперь, когда я делаю каракули на увеличенном или уменьшенном холсте, я могу писать в точке, где я правильно касаюсь экрана.
Надеюсь, я смог дать вам немногоПроницательность моего подхода.
Спасибо, Кришна.