안드로이드 개발 질문/답변
(글 수 45,052)
package org.example.OpenGL;
import android.content.Context; import android.opengl.GLSurfaceView; import android.view.MotionEvent;
class GLView extends GLSurfaceView { Touch cTouch = new Touch(); int TouchPosX; // 터치 X좌표 int TouchPosY; // 터치 Y좌표 private final GLRenderer renderer; GLView(Context context) { super(context); // 오류 확인과 로깅을 하려면 아래 주석을 푼다. //setDebugFlags(DEBUG_CHECK_GL_ERROR | DEBUG_LOG_GL_CALLS); renderer = new GLRenderer(context); setRenderer(renderer); setFocusable(true); // 키 이벤트는 View가 Focus 일경우에만 동작하기때문에 // Focus 시켜주는 부분 }
@Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub TouchPosX = (int)event.getX(); TouchPosY = (int)event.getY(); if(event.getAction() == MotionEvent.ACTION_DOWN) { cTouch.TouchBegan(TouchPosX, TouchPosY); return false; } if(event.getAction() == MotionEvent.ACTION_UP) { cTouch.TouchEnded(TouchPosX, TouchPosY); return false; } return true; } }
개발 환경은
이클립스 -> OpenGL사용 중입니다
OpenGL에서 GLView 로 GLSurfaceView를 만든상황인데요
여기에서 터치가 눌렸을때 띄었을때 좌표값을 b.java에 있는 클레스로 보내 해당 이벤트를 발생시키려 하고 있습니다.
문제는..
Source추가에서 onTouchEvent를 추가시키고 내부에 좌표값을 인자로 해당 함수를 호출하는 형식으로 하는중인데
터치가 실행 자체가 안되고 있습니다...
터치에 관해서 어떤식으로 해야하는지 설명좀 부탁드립니다....ㅠ.ㅠ
2010.12.09 15:47:32
위에 코드만 봤을때는 별로 문제가 없어보입니다.
Touch가 안된다니 하나 의심되는 점은 setContentView 이구요
전반적인 레이아웃의 구성을 알수 가 없기 때문에 딱 집어 말하긴 힘들구요
GLView가 전체 화면을 사용하는 경우라면 setContentView(GLView)가 잘 되어 있는지 확인해야 할 거 같구요.
만약 여러 레이아웃의 한부분으로 Touch를 받는거라면 setFocusableInTouchMode(true)를 사용해서
Touch event intercept가 가능해지는 경우가 있습니다.
보통의 경우 setFocusableInTouchMode는 Touch가 필요한 레이아웃에 설정합니다.
한번 시도해보세요.
설명 해주실 분은 없는건가...ㅠ.ㅠ