2017-03-20 1 views
0

Android에서 새로운 기능. 한 번에 세 개의 버튼을 만질 수 없습니다.이 코드는 원터치가 아니라 세 개의 버튼을 클릭 할 수 있습니다. 나는 많이 연구했지만 사용하려고 시도한 해결책을 찾지 못했지만 OnTouchListener()은 찾을 수 없었습니다 나는 예제 나 팁을주고 싶습니다. 그리고 당신은 그림에서 볼 수 있습니다. 제발 도와주세요, 당신이원터치 Android 용 버튼 3 개를 터치하는 방법

public class MainActivity extends Activity{ 
    Button a,b,c; 
    int a1 = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

    //a = (Button)findView...; 
    //b = ....; 
    //c = ....; 

a.setOnClickListener(new OnClickListener(){ 

    @Override 
    public void onClick(View v) { 

    a1 = 1; 
    b.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 

     if(a1 == 1){ 
      a1 = 2; 
    c.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 

     if(a1 == 2){ 

     Toast.makeText(getBaseContext(), "Toast", Toast.LENGTH_SHORT).show(); 
     a1 = 0; 
     }}});  
     } 

    }}); 
    } 

    }); 


    } 

enter image description here

+0

이 좋은 사용자 경험을 제공 할 것으로 보이지 않는다. 세 개의 버튼을 스 와이프하는 것은 자연스러운 사용 사례는 아닙니다. 사용자에게 동일한 최종 결과를 제공하기 위해 다른 입력 방법을 사용하는 것에 대해 생각해 보셨습니까? –

+0

당신의 말은 사실입니다. 이것은 어떻게 수행되는지 이해하는 예일뿐입니다. 감사합니다. –

+0

이것은 일반적으로 나쁜 생각처럼 보입니다. 그러나 어쨌든 터치 다운 이벤트를 처리하는보기 터치를받을 수있는 사람이기도합니다. 컨테이너보기에서이 상황을 처리하고 싶을 수도 있습니다. – lelloman

답변

1

하나의 부모 뷰에서 3 개 버튼을 넣어 감사합니다. 부모보기가 스 와이프 동작을 구현하도록합니다. 그런 다음 상위 뷰에서 onInterceptTouchEvent을 재정 의하여 모든 터치에 대해 true를 반환합니다. 부모보기가 모든 자식에 대한 모든 접촉을 처리하는 방식으로 기본 스 와이프 감지기가 있습니다.

+0

새로운 기능 나는 안드로이드에서 새로운 기능입니다.보기를 사용하여보기에 대한 설명을 제공합니다. 수행 할 수없는 스 와이프 동작을 구현합니다. 기본 디스플레이가 뛰는 동작을 수행합니다. ViewGroup에 의해 실행될 때 읽는 것을 혼란 스럽습니다. 예제 코드를 제공해주세요. 감사합니다. –

0

세 개의 버튼이있는 레이아웃에 onTouchListener을 붙이십시오. 각 터치에서 첫 번째보기의 범위 안에있는 ACTION_DOWN (손가락을 아래로 내림)을 확인하십시오. 그런 다음 ACTION_UP (초기 터치 해제)을 찾아 세 번째보기의 경계 내부에 놓습니다. 당신은 터치 이벤트는 다음 코드를 사용하여 뷰의 경계에 있는지 여부를 확인할 수 있습니다

public static boolean hitTest(View v, int x, int y) { 
final int tx = (int) (ViewCompat.getTranslationX(v) + 0.5f); 
final int ty = (int) (ViewCompat.getTranslationY(v) + 0.5f); 
final int left = v.getLeft() + tx; 
final int right = v.getRight() + tx; 
final int top = v.getTop() + ty; 
final int bottom = v.getBottom() + ty; 

return (x >= left) && (x <= right) && (y >= top) && (y <= bottom); 

} 사용자의 사용 예에서

+0

초기 터치 케이스를 해제하는 방법. MotionEvent.ACTION_DOWN : –

+0

사용자가 화면을 터치하면 'MotionEvent.ACTION_DOWN'이 (가) 실행됩니다. 손가락을 움직이면 하나 이상의 'MotionEvent.ACTION_MOVE'가 발사됩니다. 마침내 손가락을 떼거나 올리면 'MotionEvent.ACTION_UP'이 실행됩니다. 이들은 당신의'onTouchListener'에 주어질 이벤트 유형입니다 아마도 당신이 튜토리얼을 읽는 것이 더 낫습니다 : http://www.vogella.com/tutorials/AndroidTouch/article.html#android-touch-basics –

+0

이 유용한 강의를 가져 주셔서 감사합니다. 나는 동시에 두 손가락으로 멀티 터치하는 법을 알았고 (x)와 (y)를 사용했다. 그러나 지금까지는 지침을 실행하려고했지만 질문을 찾을 수 없었던 것처럼 한 손가락으로 세 개의 버튼을 만질 수 없었습니다. 당신은 나에게 완전하고 단순한 예제를 줄 수있다. 이것이 어떻게 이루어 졌는지 이해하는 데 많은 도움이된다. 대단히 감사합니다. –

관련 문제