oepngl 과 iface 라는엑티비티를 famelaout 에 중첩시켜놓고 iface위에 pinchtozoom기능을 포함하고있는
pinchtozoom(이하 p클레스) 레이아웃을 집어넣었습니다.
여기서 문제가 pinchtozoom 기능을 구현하기위해 p클래스에서 onTouch 이벤트를 이용해서 pinchtozoom기능을 넣고
그후 iface에서 button 객체를통해 onclicklistener 기능을 집어넣으면 아무반응이없습니다.
(원래 main 엑티비티가 있으나 main액티비티에서 하는기능은 그냥 iface로 진입하는 인텐드버튼밖에없어서 생략했습니다)
iface.java
public class iface extends Activity {
FrameLayout viewerContainer;
pinchToZoom pinchToZoom;
public Bundle savedInstanceState;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.iface);
GLSurfaceView glSurfaceView =(GLSurfaceView)
findViewById(R.id.glsurfaceview);
glSurfaceView.setRenderer(new MyRenderer());
//opengl 객체생성및 frame layout 중첩
pinchToZoom = new pinchToZoom(this);
viewerContainer = (FrameLayout) findViewById(R.id.viewerContainer);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT);
viewerContainer.addView(pinchToZoom, params);
//pinchtozoom 기능을 위해 iface 위에 pinchtozoom.java 를 집어넣음
Button btn = (Button) findViewById(R.id.Left_Arrow);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.d("dd", "dd");
}
});
//실험용 버튼객체 생성
}
}
pinchtozoom.java
코드가 너무길어져서 ontouch 내부에있는 pinchtozoom을 위한 코드는 지웠습니다.
public class pinchToZoom extends View implements OnTouchListener {
public pinchToZoom() {
}
@SuppressLint("FloatMath")
protected final float fingerDist(MotionEvent event){
float X = event.getX(0) - event.getX(1);
float Y = event.getY(0) - event.getY(1);
return FloatMath.sqrt(X*X + Y*Y);
}
@Override
public boolean onTouch(View v, MotionEvent ev) {
final int action = ev.getAction();
int pointerCount = ev.getPointerCount();
switch (action) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
return false;
}
return false;
}
}
iface.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<android.opengl.GLSurfaceView
android:id="@+id/glsurfaceview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
<Button
android:id="@+id/Right_Arrow"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="bottom|right"
android:layout_margin="20dp"
android:background="@drawable/ri" />
<Button
android:id="@+id/Left_Arrow"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="bottom|left"
android:layout_margin="20dp"
android:background="@drawable/le" />
<Button
android:id="@+id/Front_Arrow"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="bottom|center"
android:layout_margin="20dp"
android:background="@drawable/fr" />
<FrameLayout
android:id="@+id/viewerContainer"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</FrameLayout>
</FrameLayout>
결론 .그냥 구조가 iface 엑티비티 위에 pinchtozoom 레이아웃을 집어넣었는대 pinchtozoom 기능은 동작하는데
iface에있는 버튼을 인식을못합니다. 어떤식으로 해결해야할지 잘모르겠습니다 ㅎㅎ;