0

So, hier ist der Code von einfachen Übergang von top_left BOTTOM_RIGHT, ich verstehe nicht, warum ich für OnTouch falsch zurückkehren() richtig zu arbeiten,Transition/Animationen (onTouchListener)

1. Wenn ich Rückkehr gesetzt Wahr, eine einzige Berührung, setzt den Zähler von 0 auf 3, oder fügt dem Zähler einfach 2 oder 3 hinzu und bleibt die meiste Zeit an seiner aktuellen Position.

2.Wenn ich set return false, das Programm läuft gut und macht was geschrieben wird, d.

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); 
     }  
    } 
} 

Antwort

2

Der Rückgabewert bestimmt, ob das Ereignis von der Ansicht konsumiert wird oder nicht.

So wahr bedeutet, dass Sie auch an anderen Veranstaltungen interessiert sind.

Wenn Sie false zurückgeben, wird das Touch-Ereignis an die nächste View weiter oben in der View-Hierarchie weitergeleitet und Sie erhalten keine weiteren Anrufe.

Bitte überprüfen Sie diese Antwort https://stackoverflow.com/a/3756619/2783541

+0

Aber ich nicht noch verstehen, warum wahre Rückkehr der OnTouch Methode 2 Mal aufgerufen wird und wenn falsche Rückkehr wird 1 Mal aufgerufen, bitte helfen –