2012-02-16 5 views
0

나는 탁구 게임을 만들려고하고있다. 화면 하단에 외륜이 있고 그 위에 벽돌이있다. 나는 세 가지보기, 패들 하나, 공 하나와 두 개의 뷰 (공과 패들를) 페인트 기본보기가 또 다른 하나를 사용 : 나는 식별 할 수있는 경우어떤보기가 건드릴지를 아는 법

public void draw(Canvas canvas){ 
    BallView.draw(canvas); 
    PaddleView.draw(canvas); 
} 

내가 알고 싶은 것은 정확히 감동되고있는보기, 나는 주요 활동에 onTouchEvent 그것을 수행하려고 :

@Override 
    public boolean onTouchEvent(MotionEvent event){ 
     Log.d("touched", "touched") 
     return true; 
    } 

을하지만, 문제는 내가 화면에 터치 상관없이, 패들가 움직이고 있다는 것입니다, 내가 원하는, 외륜을 만질 때만 움직일거야. 그래, 가능하다면 어떻게 할 수 있습니까? 감사합니다. .

+0

줄 모두 다른 ID를 볼 .... 개인 OnTouchListener tListener1 = 새로운 OnTouchListener() { 공공 부울 onTouch 단순히 경우 (v.getId == R.id을보다 (보기 V, MotionEvent 이벤트). blue) {} else if (v.getId == R.id.yellow) {}이 방법이 효과가 있기를 바랍니다. –

+0

@pakshaheen 자바 파일에서 ID를 설정할 수 있습니까? 나는 XML 파일이 없기 때문에. –

+0

예, 예 : 할 수 있습니다. ScrollView 뷰 = 새로운 ScrollView (this); \t \t view.setId (2); –

답변

0

Android의 OnTouch 이벤트에 이미 이벤트를 발생시킨보기를 식별 할 수있는보기 유형 매개 변수가 있습니다. 예 : here을 찾을 수 있습니다.

2

다른 방법으로이 작업을 수행 할 수 있습니다. 두 개의 상대 레이아웃을 파란색과 노란색으로 똑같이 그린 다음 클릭으로 상대적 레이아웃을 만듭니다. xml에서 true를 처리하고 onClick : onClickHandler를 처리합니다. 이것이 당신을 위해 일하기를 바랍니다.

   <RelativeLayout 
        android:id="@+id/rl_click_blue" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentRight="true" 
        android:background="#ffffff" 
        android:clickable="true" 
        android:onClick="onClickHandler"> 
       </RelativeLayout> 

       <RelativeLayout 
        android:id="@+id/rl_click_yellow" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentRight="true" 
        android:background="#ffffff" 
        android:clickable="true" 
        android:onClick="onClickHandler"> 
       </RelativeLayout> 

       // Handle your functionality here. 
       public void onClickHandler(View v) 
       { 
        switch (v.getId()) { 
         case R.id.rl_click_blue: 
          break; 

         case R.id.rl_click_yellow: 

          break; 
        } 
       } 
관련 문제