Как создать кнопку, которая мигает после нажатия? - PullRequest
1 голос
/ 11 сентября 2011

До сих пор я узнал, как работают анимации и как установить фон кнопки в соответствии с ее состоянием, как описано здесь .

Ну, я определил анимацию:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<alpha 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:fromAlpha="0.0" 
    android:toAlpha="1.0"  
    android:duration="50" 
    android:repeatMode="reverse"
    android:repeatCount="6"/> 

Я запускаю анимацию в методе onClick (View v). Проблема в том, что фактическое действие нажатия обрабатывается до завершения анимации. Я знаю, что мог бы использовать AnimationListener, но это не выглядело бы мне очень хорошо, так как тогда мне пришлось бы вызывать реальные процессы щелчков внутри AnimationListener.

Кто-нибудь знает более искусный способ позволить кнопке мигать после нажатия на нее?

Ответы [ 2 ]

1 голос
/ 11 сентября 2011

Вы можете использовать тег Selector, например, «Подписки»: создайте новый XML-файл, поместите его в папку для рисования и назовите его «shadow_color.xml

».
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/ask_footer"/>
    <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/askfooter_hover" />
    <item android:drawable="@drawable/ask_footer" />
</selector> 

А затем перейдите к тому xml, в котором объявлена ​​ваша кнопка: И запишите один атрибут в кнопке

android:background="@drawable/shadow_color" и все готово.

Отметьте ответ, если он окажется полезным ..

0 голосов
/ 25 августа 2012

Определить onclick для кнопки

button1.setOnClickListener(
    new Button.OnClickListener() { 
        public void onClick (View v){ calcular(1,v); }
    }
);

Заставьте свою кнопку мигать

Это позволяет чередовать изображения, определенные в XML, между собой.

    public void calcular(final int p,final View v){
        MediaPlayer mp = MediaPlayer.create(this, R.raw.click);
        mp.start();
        //v.setBackgroundResource(R.drawable.dia1btn_stl2);
        final TransitionDrawable transition1 = 
                 (TransitionDrawable) v.getBackground();
        Handler blinkHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {

                switch (msg.what) {
                case 0:

                    transition1.startTransition(70);

                        break;
                case 1:
                    transition1.resetTransition();
                    break;

                }
                super.handleMessage(msg);
        }
    };


    for (int i=0; i<6; i++)
    {
        Message msg = new Message();
         if(i % 2 == 0){
             msg.what = 0;
         }
        else{
            msg.what=1;
        }

        blinkHandler.sendMessageDelayed(msg, i*100);
    }

        /*mCurrentSeries.clear();
        if(calcularctrl == 0){
            calcularctrl = 1;
            dtdodo = new DownloadImageTask(this , p , codacaovalue);
            dtdodo.execute("wwwkjhdijdh");
        }*/

        Handler handler2 = new Handler(); 
        handler2.postDelayed(new Runnable() { 
             public void run() { 
                  //v.setBackgroundResource(R.drawable.dia1btn_stl2); 
                mCurrentSeries.clear();
                if(calcularctrl == 0){
                    calcularctrl = 1;
                    dtdodo = new DownloadImageTask(outer() , p , codacaovalue);
                    dtdodo.execute("wwwkjhdijdh");
                }
                try {
                    this.finalize();
                } catch (Throwable e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
             }
             public acoesdetalhes outer(){
                 return acoesdetalhes.this;
             }
        }, 1000);
    }

XML фона кнопки

<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- The drawables used here can be solid colors, gradients, shapes, images, etc. -->
    <item android:drawable="@drawable/mes1btn_stl2" />
    <item android:drawable="@drawable/mes1btn_prssd2" />
</transition>

Этот код частично предоставлен пользователем Alin.

...