2016-05-20 3 views
0

ボタンをクリックした直後にボタンをアニメートする必要があります。描画可能@ "=背景:button.clickの直後にアニメーションを作成するには?

<?xml version="1.0" encoding="UTF-8" ?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <size 
    android:width="280dp" 
    android:height="50dp"/> 
    <gradient 
     android:startColor="#FF3366" 
     android:endColor="#FF3366" 
     android:angle="180"/> 
    <padding android:left="7dp" 
     android:top="7dp" 
     android:right="7dp" 
     android:bottom="7dp" /> 
    <corners android:radius="35dp" /> 
</shape> 

ボタンがアンドロイドを持っている:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:oneshot="true"> 
    <item android:drawable="@drawable/gradient_box" android:duration="200" /> 
    <item android:drawable="@drawable/gradient_box_end" android:duration="200" /> 
</animation-list> 

gradient_boxиgradient_box_endの唯一の違いは、幅(280及びそれに対応180dp)です。だから私は、単純なアニメーションAnimationDrawableを作りました/ gradient_animation "はxml layuotに割り当てられています。

MainActivity.csです:

protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     SetContentView(Resource.Layout.Main); 

     Button buttonlogin = FindViewById<Button>(Resource.Id.button1); //animated button 
     AnimationDrawable animation = (AnimationDrawable)buttonlogin.Background; 


     buttonlogin.Click += (sender, e) => 
     { 
     animation.Start(); 
     }; 

問題は、アニメーションだけでbutton.click後のアプリケーションといくつかのアクションの後に動作しますが、ではないということです。たとえば、ボタンをクリックしても何も起こりません。編集テキストをクリックし、キーボードが画面に表示され、アニメーションが開始されます。

私はGoogleがこの推奨していることを発見した:

それはAnimationDrawableではないので、AnimationDrawableに呼ばれるstart()メソッドは、あなたの活動ののonCreate()メソッドの間に呼び出されることができないことに注意することが重要ですまだ窓に完全に取り付けられています。インタラクションを必要とせずにすぐにアニメーションを再生したい場合は、アクティビティのonWindowFocusChanged()メソッドから呼び出すことができます。これは、Androidがウィンドウをフォーカスしたときに呼び出されます。

しかし、私はまだ解決策を見つけることができません。

+0

をonclickの –

答えて

0

hereは、Translate Animationを使用した簡単な例です。アニメーションクラスオブジェクトでこれを管理する必要があるのは、onCreateのオブジェクトを作成するのと同じです。 `ボタンclicklistener内;

Animation traslateAnimation= AnimationUtils.loadAnimation(this, 
R.anim.yourxmlanimation); 

とボタン内にこのコードを使用するには、私はあなたが` AnimationDrawableアニメーション(AnimationDrawable)buttonlogin.Background作るべきだと思う

yourButton.setOnClickListener(new OnClickListener() { 

public void onClick(View v) { 

    v.startAnimation(traslateAnimation) 
    } 
}); 
関連する問題