2012-08-28 3 views
0

저는 Android 앱을 개발 중이며 UI에 몇 가지 관심사를 추가하고 싶습니다. 거기에 텍스트 필드, 단추 및 갤러리가있는 활동 (MainActivity라고 부름)이 있습니다. 내가 달성하고자하는 바는 : 사용자가이 활동의 ​​어느 곳을 터치하면 터치 한 지점에 시각적 효과가 있어야합니다 (예 : 반짝임 등).액티비티 터치시 Android 시각적 효과

내 질문의 핵심 부분은 다음과 같습니다. a) 사용자가 터치 한 곳을 어떻게 결정할 수 있습니까? b) 화면에 내 효과를 그릴 수있는 방법은 무엇입니까?

모든 도움이되는 답변에 미리 감사드립니다.

은 (내가 this 답을 체크 아웃했지만 내 상황에 적용 될 것 같지 않습니다.)

답변

1

당신은 당신의 활동의 onTouchEvent 메소드를 오버라이드 (override)합니다. 그런 다음 터치 이벤트의 좌표를 얻을 수 있습니다 : 당신은 ICS에서 작업하는 경우

@Override 
public boolean onTouchEvent(MotionEvent event) { 

    float touchX = event.getX(); 
    float touchY = event.getY(); 

    switch(event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     // touch down 
     break; 
    case MotionEvent.ACTION_MOVE: 
     // movement 
     break; 
    case MotionEvent.ACTION_UP: 
     // touch up 
     break; 
    default: 
     // default 
    } 

    return super.onTouchEvent(event); 
} 
+0

감사합니다. 활동에서 뷰를 오버레이하는 방법을 그리는 방법에 대한 아이디어가 있습니까? (b) – gmazlami

+0

예를 들어 ImageView를 애니메이션을 삽입하거나 이미지를 그릴 수있는 좌표에 배치 할 수 있습니다. 그게 내가 시도 할거야. – slezadav

0

나는 당신이 설정 응용 프로그램에서 개발자 옵션 보는 것이 좋습니다. ICS에서 일하는 것이 아니라면, 당신은 touchevents를위한 APIDEMOS를 볼 수 있다고 생각합니다. 그들은 접촉에 선을 그립니다. 그 코드는 당신을 시작할 수 있습니다.

2

먼저 루트 레이아웃에 onTouchListener를 추가 한 다음 사용자가 화면을 터치 한 좌표를 가져올 수 있습니다. 예 :

float x,y; 
    rl = (RelativeLayout) findViewById(R.id.root_layout); 
    rl.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      float x = event.getX(); 
      float y = event.getY(); 
       return super.onTouchEvent(); 
     } 

    }); 
+0

감사합니다, 그 부분 대답)! 활동에서 뷰를 오버레이하는 방법을 그리는 방법에 대한 아이디어가 있습니까? 내 UI 위에 캔버스를 겹쳐서 표시 할 가능성이 있습니까? – gmazlami

1

가 ApiDemos에보고하는 오버레이를 가지고, 귀하의 질문에 더 대답하기 -> 그래픽 ->의 OpenGL ES -> 반투명 GLSurfaceView를. 이렇게하면 활동에 오버레이를 만드는 데 도움이됩니다. API 데모에서 다른 도움이 될 수있는 몇 가지 다른 예가있을 수 있습니다. Android의 API 데모는 알려진 문제를 해결할 수있는 좋은 예입니다.