Проблема с Android-анимацией? - PullRequest
1 голос
/ 16 июля 2011

В моем приложении у меня 6 кнопок. В onCreate() у меня есть startAnimation(), который будет выполнять анимацию для появления кнопок. После вызова этого метода у меня есть setOnclickListener() с для каждой кнопки.

Мой код в onCreate() выглядит так:

    startAnimations();

    b1.setOnClickListener(this);
    b2.setOnClickListener(this);
    b3.setOnClickListener(this);
    b4.setOnClickListener(this);
    b5.setOnClickListener(this);
    b6.setOnClickListener(this);

Проблема заключается в следующем: когда я тестировал свое приложение и во время запуска анимации я мог нажать любую кнопку, даже если кнопка еще не отображалась. Я имею в виду, я могу щелкнуть в месте кнопки, и действие, связанное с этой кнопкой, начнется.

Я хочу заставить кнопки НЕ реагировать на щелчки, пока не закончится вся анимация.

Могу ли я это сделать?

Ответы [ 3 ]

4 голосов
/ 16 июля 2011

Почему бы вам не отключить кнопки onCreate или по умолчанию, а затем, когда анимация заканчивается, включить ее.

 findViewById(R.id.button1).setEnable(false);
 findViewById(R.id.button1).setEnable(false);
 ....   
 final RelativeLayout l = (RelativeLayout) findViewById(R.id.group_band);
 Animation a = new TranslateAnimation(0, 0, -100, 0);
 a.setDuration(200);
 a.setAnimationListener(new AnimationListener() {

                public void onAnimationEnd(Animation animation) {
                    findViewById(R.id.button1).setEnable(true);
                    findViewById(R.id.button2).setEnable(true);
                                             ....
                }

                public void onAnimationRepeat(Animation animation) {

                }

                public void onAnimationStart(Animation animation) {

                }

            });

 l.startAnimation(l);

Что вы думаете?

1 голос
/ 16 июля 2011

Вы можете сделать, прежде чем установить кнопку анимации до вызова false

b1.setEnabled(false);

, затем вызвать startAnimations();, а затем завершить анимацию, которую вы можете сделать с b1.setEnabled(true);

, как это ...

0 голосов
/ 16 июля 2011

button.setClickable (false) или button.setOnClickListner (null) может быть?

Возможно установить их и зарегистрировать AnimationListener.Смотрите это .После вызова onAnimationEnd, button.setClickable (true) и / или button.setOnClickListener (this).

...