Операция щелчка не работает на кнопке Android после применения к ней анимации перемещения в Android

Ребята, я разработал представление, в которое я добавил три кнопки. Я предоставил возможность on_click всем трем кнопкам. Мое требование: если я нажимаю кнопку_1, тогда кнопка_2 и кнопка три должны быть перемещены в новое место. но проблема в том, что после применения анимации перемещения к button_2 средство on_click button_3 не работает с ними в этой новой позиции.

MainActivity.java

public class MainActivity extends Activity {

ImageButton slider,slidernew,sliderexisting;
boolean flag1 = true;
boolean flag2 = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //final LinearLayout container = (LinearLayout) findViewById(R.id.container);
    slider = (ImageButton) findViewById(R.id.imageButton1);
    slidernew = (ImageButton) findViewById(R.id.imageButton2);
    sliderexisting = (ImageButton) findViewById(R.id.imageButton3);

    // Set long default duration for the animator, for the purposes of this demo
    //animate(slidernew).setDuration(2000);
    slider.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*int xValue = container.getWidth() - slidernew.getWidth();
            int yValue = container.getHeight() - slidernew.getHeight();
            animate(slidernew).x(xValue).y(yValue);*/
            if(flag1==true)
            {
                animateSliderForward();
            flag1=false;
            }
            else{
                animateSliderBackward();
                flag1=true;
            }
        }
    });

    slidernew.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            startActivity(new Intent(MainActivity.this,SecondActivity.class));

        }
    });
    sliderexisting.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            startActivity(new Intent(MainActivity.this,SecondActivity.class));

        }
    });
}

void animateSliderForward(){
    float fromX=0;
    float toX=100;
    float fromY=0;
    float toY=100;
    TranslateAnimation animation = new TranslateAnimation(fromX, toX, fromY, toY);
    animation.setDuration(1000);
    animation.setFillAfter(true);
    float fromA=0;
    float toA=-100;
    float fromB=0;
    float toB=100;
    TranslateAnimation animation1 = new TranslateAnimation(fromA, toA, fromB, toB);
    animation1.setDuration(1000);
    animation1.setFillAfter(true);
    slidernew.startAnimation(animation1);
    sliderexisting.startAnimation(animation);
}
   void animateSliderBackward(){
   float fromX=100;
   float toX=0;
   float fromY=100;
   float toY=0;
   TranslateAnimation animation = new TranslateAnimation(fromX, toX, fromY, toY);
   animation.setDuration(1000);
   animation.setFillAfter(true);
   float fromA=-100;
   float toA=0;
   float fromB=100;
   float toB=0;
   TranslateAnimation animation1 = new TranslateAnimation(fromA, toA, fromB, toB);
   animation1.setDuration(1000);
   animation1.setFillAfter(true);
   slidernew.startAnimation(animation1);
   sliderexisting.startAnimation(animation);
   }


}

person Sritam Jagadev    schedule 23.01.2015    source источник


Ответы (2)


Вы использовали onClickListener как для анимации, так и для перехода к следующему действию. Измените один на onTouchListener.. убедитесь, что вы возвращаете false в onTouchListener, чтобы onClick выполнялся

person Bala Vishnu    schedule 23.01.2015
comment
Сэр, никакого эффекта после изменения onClickListener на onTouchListener - person Sritam Jagadev; 23.01.2015

Рассмотрите возможность использования анимации свойства.

Из вышеуказанного документа.

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

Использование анимации свойств решит эту проблему.

person Gent Ahmeti    schedule 23.01.2015