마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

motionevent와 button 을동시에 사용하고싶은데 잘안됩니다.

0 추천

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에있는 버튼을 인식을못합니다. 어떤식으로 해결해야할지 잘모르겠습니다 ㅎㅎ;

naiad (430 포인트) 님이 2014년 2월 10일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...