0

RelativeLayout の下にアニメーション付きのボタンを作成しましたが、ボタンを更新してアニメーションを再開したいのですが、できません。私のふいごは

レイアウト:

<RelativeLayout
    android:id="@+id/btn"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/top"
    android:gravity="center" >
<Button
    android:contentDescription="Animation"
         android:id="@+id/image1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_margin="20dp"
         android:layout_gravity="center"
         android:background="@drawable/ic_ballon"
         android:textColor="#FFFFFF"
         android:textStyle="bold"
         android:textSize="35sp"
         android:text="8"
         android:paddingBottom="35dp"/>
<Button
    android:contentDescription="Animation"
         android:id="@+id/image2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_margin="20dp"
         android:layout_toRightOf="@+id/image1"
         android:layout_gravity="center"
         android:background="@drawable/ic_ballon_1"
         android:textColor="#FFFFFF"
         android:textStyle="bold"
         android:textSize="35sp"
         android:text="8"
         android:paddingBottom="35dp"/>
</RelativeLayout>

アニメーション:

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/bounce_interpolator">
<translate
    android:fromYDelta="-100%p"
    android:toYDelta="0"
    android:duration="3000"/>
</set>

アクティビティ:

    //Animation
    final Animation animBounce = AnimationUtils.loadAnimation(this, R.anim.bounce);
    final Animation animBounce1 = AnimationUtils.loadAnimation(this, R.anim.bounce1);

    //Random Number
    Random randomGenerator1 = new Random();
    Random randomGenerator2 = new Random();
    final int randomInt1 = randomGenerator1.nextInt(20);
    final int randomInt2 = randomGenerator2.nextInt(20);

    Button number1 = (Button) findViewById(R.id.image1);
    number1.setText(Integer.toString(randomInt1));
    Button number2 = (Button) findViewById(R.id.image2);
    number2.setText(Integer.toString(randomInt2));

    number1.startAnimation(animBounce);
    number2.startAnimation(animBounce1);

    number1.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
               RelativeLayout hidden = (RelativeLayout) findViewById(R.id.btn);
                hidden.invalidate();
                number1.refreshDrawableState();
                number2.refreshDrawableState();
             }
     });

     number2.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
              RelativeLayout hidden = (RelativeLayout) findViewById(R.id.btn);
                hidden.invalidate();
                number1.refreshDrawableState();
                number2.refreshDrawableState();
           }
    });

そのため、ボタンを更新してアニメーションを表示し、onClick のときにもう一度更新したいと思います。私は次のコードを使用しますが、うまくいきません:

                RelativeLayout hidden = (RelativeLayout) findViewById(R.id.btn);
                hidden.invalidate();
                number1.refreshDrawableState();
                number2.refreshDrawableState();

ボタンを更新してonClickでアニメーションを再開するには??

4

1 に答える 1

2

これはどうですか:

number1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
           number1.startAnimation(animBounce);
         }
 });

編集:

Android アニメーションの簡単なチュートリアル: http://www.youtube.com/watch?v=_UWXqFBF86U&list=PLWz5rJ2EKKc_XOgcRukSoKKjewFJZrKV0&index=20

于 2013-07-04T08:13:26.310 に答える