2016-11-17 4 views
1

Я хочу, чтобы моя анимация начиналась после выбора изображения из пула изображений. Я думал, что могу сделать это с помощью случайного переключателя, но потом я получаю сообщение об ошибке, потому что «мяч» не может быть разрешен. Я надеюсь, что это не совсем так, но я не знаю, как исправить это ниандроид - анимация со случайным изображением

protected void onDraw(Canvas c) { 

    Random randLan = new Random(); 
    int imag = randLan.nextInt(4) + 1; 

    int image = 0; 
    switch (imag) 
     { 
     case 1: 
      image = R.drawable.ballgel; 
      BitmapDrawable ball = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.ballgel); 
      break; 

     case 2: 
      image = R.drawable.ballgel; 
      BitmapDrawable ball = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.ballbl); 
      break; 

     case 3: 
      image = R.drawable.ballgel; 
      BitmapDrawable ball = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.ballgrue); 
      break; 

     case 4: 
      image = R.drawable.ballgel; 
      BitmapDrawable ball = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.ballrot); 
      break; 
      } 


    if (x<0) { 
     x = this.getWidth()/2; 
     y = this.getHeight()/3; 
    } 

     else { 
      x += xVelocity; 

       if ((x > this.getWidth() - ball.getBitmap().getWidth()) || (x < 0)) { 
        boolean continueAnimation = false; 
       } 
     } 

    c.drawBitmap(ball.getBitmap(), x, y, null); 

    if(continueAnimation) 
    { 
     h.postDelayed(r, FRAME_RATE); 
    } 

    else { 
      x = this.getWidth()-ball.getBitmap().getWidth(); 
    } 

} 
+0

вы пробовали 'BitmapDrawable ball' вне вашего корпуса переключателя? –

+0

Когда я вытащил его за пределы корпуса коммутатора, какая последняя часть '(R.drawable. ...),' then? Это должна быть переменная, но я думаю, что ей нужна прямая ссылка, не так ли? –

ответ

0

Вы должны поставить в самом начале:

private BitmapDrawable ball; 

Затем замените BitmapDrawable ball в выключателе с ball. вот так, ball инициализирован в начале и указан в коммутаторе.

Я сделал это для вас:

private BitmapDrawable ball; 

protected void onDraw(Canvas c) { 

      Random randLan = new Random(); 
      int imag = randLan.nextInt(4) + 1; 

      int image = 0; 
      switch (imag) 
       { 
       case 1: 
        image = R.drawable.ballgel; 
        ball = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.ballgel); 
        break; 

       case 2: 
        image = R.drawable.ballgel; 
        ball = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.ballbl); 
        break; 

       case 3: 
        image = R.drawable.ballgel; 
        ball = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.ballgrue); 
        break; 

       case 4: 
        image = R.drawable.ballgel; 
        ball = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.ballrot); 
        break; 
        } 


      if (x<0) { 
       x = this.getWidth()/2; 
       y = this.getHeight()/3; 
      } 

       else { 
        x += xVelocity; 

         if ((x > this.getWidth() - ball.getBitmap().getWidth()) || (x < 0)) { 
          boolean continueAnimation = false; 
         } 
       } 

      c.drawBitmap(ball.getBitmap(), x, y, null); 

      if(continueAnimation) 
      { 
       h.postDelayed(r, FRAME_RATE); 
      } 

      else { 
        x = this.getWidth()-ball.getBitmap().getWidth(); 
      } 

     } 
+0

Спасибо! Это работает –

+1

Ну, это не работает, ошибки ушли, но теперь программа вылетает. Вы знаете, в чем проблема? –

0

Положите несколько изображений в drawble затем создать файл XML в вашем drawble использования name.xml этот код:

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/a" 
    android:duration="1000"></item> 
<item android:drawable="@drawable/b" 
    android:duration="1000"></item> 
<item android:drawable="@drawable/c" 
    android:duration="1000"></item> 
</animation-list> 

после что в вашем mainactivity используйте этот код:

iv= (ImageView) v.findViewById(R.id.imageView); 
iv.setBackgroundResource(R.drawable.frameanimation); 
    animationDrawable=(AnimationDrawable) iv.getBackground(); 
    animationDrawable.start(); 
+0

И как мне его выбрать случайно? –

Смежные вопросы