0

내가 수익을 설정 설치 1. TOP_LEFT에서, 내가 제대로 작동하려면 onTouch() false를 반환해야 할 이유를 이해 내가 해달라고,전환/애니메이션 (onTouchListener) 그래서 여기

을 BOTTOM_RIGHT하기, 간단한 천이의 코드 사실, 하나의 터치만으로 카운터를 0에서 3으로 설정하거나 단순히 카운터에 2 또는 3을 더하고 대부분의 시간은 현재 위치로 유지됩니다.

2. return false를 설정하면 프로그램이 제대로 실행되고 작성된 내용, 즉 카운터 ++를 수행합니다.

public class MainActivity extends AppCompatActivity { 
    Button b; 
    TextView tv; 

    public static int counter_button=0,counter=0; 
    RelativeLayout.LayoutParams old_rules; 
    RelativeLayout rl; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     b= (Button) findViewById(R.id.b1); 
     tv= (TextView) findViewById(R.id.tv1); 
     rl= (RelativeLayout) findViewById(R.id.rl); 
     old_rules= (RelativeLayout.LayoutParams) b.getLayoutParams(); 
     rl.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       my_changes_touch(); 
       return false; 
      } 
     }); 
    } 

    public void my_changes_touch(){ 

     RelativeLayout.LayoutParams rules= new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); 
     if(counter%2==0) { 
      counter++; 
      tv.setText(" "+counter); 
      rules.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
      rules.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
      b.setLayoutParams(rules); 
      rules.height=400; 
      rules.width=400; 
      b.setLayoutParams(rules); 
      getContentTransitionManager().beginDelayedTransition(rl); 
     } else { 
      counter++; 
      tv.setText(" "+counter); 
      b.setLayoutParams(old_rules); 
      getContentTransitionManager().beginDelayedTransition(rl); 
     }  
    } 
} 

답변

2

반환 값은 이벤트가 뷰에서 사용되는지 여부를 결정합니다.

사실은 다른 이벤트에도 관심이 있다는 의미입니다.

false를 반환하면 터치 이벤트가 뷰 계층에서 다음보기로 넘어 가서 더 이상의 호출을받지 않게됩니다.

이 답변 https://stackoverflow.com/a/3756619/2783541

+0

을 확인하지만 여전히 onTouch 방법은 2 번 호출 진정한 복귀 이유를 이해 해달라고 false를 반환 할 때 1 시간이라고하세요, 도와주세요 –