Abfragen von View-Koordinaten während laufender Animation

  • 4 Antworten
  • Letztes Antwortdatum
D

Dakine

App-Anbieter (In-App)
4
Ich möchte in der onClick()-Methode prüfen, ob sich 2 Views überschneiden, während 1 View davon animiert wird. Allerdings ändern sich die Koordinaten der animierten View nie. Ich habe es auch bereits mit runOnUitThread() versucht.

Code:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    View line=(View)findViewById(R.id.line);
    View trigger=(View)findViewById(R.id.trigger);
    trigger.setOnClickListener(this);
    Animation slideDownAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slidedown);
    line.startAnimation(slideDownAnimation);
}



@Override
public void onClick(View arg0) {
    Rect triggerRect = new Rect();
    trigger.getHitRect(triggerRect);
    Rect lineRect = new Rect();
    line.getHitRect(lineRect);
    if (triggerRect.intersect(lineRect)) {
          Toast.makeText(getApplicationContext(), "Intersect", Toast.LENGTH_SHORT).show();
        }
}
 
Ich verwende nun ObjectAnimator für die Animation. So funktioniert es einwandfrei.
 
  • Danke
Reaktionen: Feuerstern und Jaiel
Dakine schrieb:
Ich verwende nun ObjectAnimator für die Animation. So funktioniert es einwandfrei.
Das liegt daran das die Animation Klasse nur das Aussehen des Objektes beeinflusst und nicht seine wierkliche Eigenschaften wie Größe und Position. Die Animator Klasse hingegen, beeinflusst die Eigenschaften des Objektes, also z.B. auch seine Position. Die Animator Klasse ist aber erst ab API level 11 verfügbar.
 
  • Danke
Reaktionen: Dakine und Jaiel
Ich finde es immer gut wenn man sich zu ungelösten Problemen zurück meldet wenn man selber die Antwort gefunden hat. Und die Erklärung von Feuerstern ist ebenfalls eine gute Ergänzung zu der Sache. :thumbup:
 
  • Danke
Reaktionen: Dakine
Danke für die Erklärung
 
Zurück
Oben Unten