2014-12-09 2 views
-1

Я хочу спросить, хочу ли я сделать эту анимацию единым изображением и хотел бы применить к ней какую-то другую анимацию вида, например move или alpha и т. Д., Как это можно сделать? Есть идеи ? просто я хотел применить анимацию вида к анимации с возможностью рисования.Как оживить анимацию в Android

у меня есть некоторое Drawable как s1, s2, s3, s4 на S16 XML, является

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
android:oneshot="false"> 
<item android:drawable="@drawable/s1" android:duration="200" /> 
<item android:drawable="@drawable/s2" android:duration="200" /> 
<item android:drawable="@drawable/s3" android:duration="200" /> 
<item android:drawable="@drawable/s12" android:duration="200" /> 
<item android:drawable="@drawable/s13" android:duration="200" /> 
<item android:drawable="@drawable/s14" android:duration="200" /> 
<item android:drawable="@drawable/s15" android:duration="200" /> 
<item android:drawable="@drawable/s16" android:duration="200" /> 

</animation-list> 

и Java-код

anim = (ImageView) findViewById(R.id.black); 
    anim.setBackgroundResource(R.drawable.smurf); 
    AnimationDrawable hello = (AnimationDrawable) anim.getBackground(); 
    hello.start(); 

здесь Smurf в Drawable это файл XML для вытяжки анимации ,

+0

пожалуйста, любой ответ или комментарий –

+0

взгляните на эту страницу http://developer.android.com/guide/topics/resources/animation-resource.html –

+0

Спасибо, но я хочу инкапсулировать фрейм анимати в анимации анимации. –

ответ

0

мы можем сделать эту анимацию, но для этого мы должны поддерживать обработчик.

private int index = 0; 
    private Handler handler = new Handler(); 
    private AnimationDrawable drawable; 

Runnable runnable = new Runnable() { 

    @Override 
    public void run() { 
     imageView.setImageDrawable(drawable.getFrame(index)); 
     index++; 
     if (index == drawable.getNumberOfFrames()) { 
      index = 0; 
     } 
     handler.postDelayed(runnable, drawable.getDuration(index)); 
    } 
}; 

в вашем OnClick или где вы хотите, чтобы начать анимацию писать так:

handler.postDelayed(runnable, drawable.getDuration(index)); 

и ваш onDestroy() удалить задние handeler вызовов, как это:

protected void onDestroy() { 
     super.onDestroy(); 
     handler.removeCallbacks(runnable); 
    } 
+0

мой ответ полезен для вас? –

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