2012-04-14 13 views
0

Ich habe eine Schaltfläche (in einem linearen Layout platziert) mit Animation. Nachdem die Animation abgeschlossen ist (simple translateAnimation) möchte ich, dass der animierte Button aktiviert wird. Ich habe festgestellt, dass die Verwendung einer Animation nur Auswirkungen auf die Schaltfläche hat, so dass der anklickbare "Ort" an der ursprünglichen Position bleibt.Wie wird die Position einer Schaltfläche nach der Animation festgelegt?

layout= (LinearLayout) findViewById (R.id.newitemtext); 
layout.setBackgroundResource(R.drawable.white_box); 
btn = (Button) findViewById (R.id.btn); 
moveLefttoRight = new TranslateAnimation(0,0 , 0, 200); 
      moveLefttoRight.setDuration(1000); 
      moveLefttoRight.setFillAfter(true); 


      animbutton.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        layout.startAnimation(moveLefttoRight); 
        layout.setEnabled(true); 


       } 
      }); 

btn.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        Log.i("TAG", "CCIK"); 


       } 


}); 

Die Schaltfläche btn befindet sich im Layout LinearLayout. Wie könnte ich die Position nach der Animation einstellen? Ich habe versucht, setPadding zu verwenden, aber ohne Erfolg. Vielen Dank im Voraus!

+0

Legen Sie es richtig von Anfang an (aber unsichtbar/weg) und starten Sie die Animation (& sichtbar machen), so dass es geht * von * wo Sie die Schaltfläche angezeigt werden soll und endet wo der Knopf tatsächlich schon ist? – Jens

+0

Das ist in meinem Fall nicht möglich :) Trotzdem nette Abhilfe: D –

Antwort

0

Verwenden Sie View.setLayoutParams(), um Views-Parameter zu aktualisieren. Beachten Sie, dass es darauf ankommt, in welchem ​​Layout die Ansicht enthalten ist, wie die Parameter aktualisiert werden können. Wenn sich Ihre Ansicht beispielsweise in einer LinearLayout befindet, können Sie nur Parameter anpassen, die sich auf LinearLayout beziehen (Schwerkraft, Gewicht, Breite, Höhe usw.), sodass Sie das absolute X/Y nicht anpassen können Koordinaten. Sie möchten möglicherweise zu einem Element wie RelativeLayout wechseln, um zu versuchen, die Ansicht basierend auf dem Speicherort anderer Ansichten an das endgültige Ziel zu verschieben.

Verwandte Themen