2011-09-11 16 views
1

これまでのところ、アニメーションの仕組みやボタンの背景を設定する方法を、hereのように説明しました。私はのonClick(ビューV)メソッドでアニメーションを開始ボタンを作成するには、クリックした後で点滅しますか?

<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"/> 

まあ、私はアニメーションを定義しました。問題は、アニメーションが終了する前に実際のクリックアクションが処理されることです。私はAnimationListenerを使うことができることは知っていますが、実際のクリックプロセスをAnimationListener内で呼び出さなければならないので、これはあまりうまく見えません。

ボタンをクリックした後にボタンを点滅させる方法を知っている人はいますか?

答えて

1

従うようにあなたはセレクタタグを使用することができます。新しい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に行きます宣言しました:ボタンに1つの属性を書き込んでください

android:background="@drawable/shadow_color" あなたは完了です。あなたが見つけた場合

マークの答えは...

+0

あなたのコードでは "ask_footer"は私の特定のボタンの背景ですか?このセレクタは、ボタンの背景を1回だけ変更します。しかし、私はバックグラウンドを何度も変えたい。アニメーションXMLで宣言したように。 – Jonathan

+0

これを使用して、クリックするとテキストビューの背景色を変更しました。 'android:drawable =" @color/white "'を押すか、押された状態や押されていない状態で色をつけるだけです。私は新しい意図が始まるのに時間がかかったときにクリックが発生したことを示したかったのです。 – Gravitoid

0

これは、それぞれの間のXMLの代替で定義された画像を作るあなたのボタンが

を点滅させてくださいボタン

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

ためonclickを定義する便利その他。

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 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> 

ユーザアリンによって部分的に提供されるこのコードのXML。

+0

ありがとうございます、コードは今より理解しやすいです。私はコードをクリアすることを忘れてしまったので、簡単に説明します。 DownloadImageTaskクラスは、Out()から返されるパラメータとしてContextを受け取るAsyncTaskです。戻り値はメインクラスのActivityです。このボタンは、ボタンの点滅後に関数を呼び出すために使用されます。 – bosozoku

関連する問題