Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>If you want to be able to click the button after the animation is complete, you have to manually move the component. Here's an example of a translate animation applied to a button:</p> <pre><code>public class Test2XAnimation extends Activity { private RelativeLayout buttonContainer; private Button button; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) this.findViewById(R.id.button1); buttonContainer = (RelativeLayout) button.getParent(); } public void startTapped(View view) { animateButton(200, 100); } public void buttonTapped(View view) { Toast.makeText(this, "tap", Toast.LENGTH_SHORT).show(); } private RelativeLayout.LayoutParams params; private CharSequence title; private void animateButton(final int translateX, final int translateY) { TranslateAnimation translate = new TranslateAnimation(0, translateX, 0, translateY); translate.setDuration(1500); translate.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation animation) { buttonContainer.removeView(button); button = new Button(Test2XAnimation.this); button.setText(title); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { buttonTapped(button); } }); params.leftMargin = translateX + params.leftMargin; params.topMargin = translateY + params.topMargin; params.rightMargin = 0 + params.rightMargin; params.bottomMargin = 0 + params.bottomMargin; button.setLayoutParams(params); buttonContainer.addView(button); } public void onAnimationRepeat(Animation animation) { } public void onAnimationStart(Animation animation) { params = (RelativeLayout.LayoutParams) button.getLayoutParams(); title = button.getText(); } }); button.startAnimation(translate); } } </code></pre> <p>The method startTapped() is triggered when a user clicks a button in the UI. The other button moves by (200,100). At the end, I remove the old one and create a new one, thenaI add it to the parent view. You can see that buttonTapped() is called after the animation.</p> <p>A suggestion: you can use <a href="https://github.com/JakeWharton/NineOldAndroids">NineOldAndroids</a> project if you want to support both the new and the old way of animating a component, then you can check the OS version and run this code only on Gingerbread and lower versions.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload