Jos*_*and 21 animation android drawable
所以我希望我的动画在创建活动后立即启动,但出于某种原因无论我尝试什么都会让它开始.我可以通过点击事件开始,但我想让它自己开始.
这是我拥有的,我如何让它工作?
package tween.learn;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.widget.ImageView;
public class Animate extends Activity {
public ImageView image;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView tweenImage = (ImageView) findViewById(R.id.imageView1);
tweenImage.setBackgroundResource(R.anim.cubicfacetween);
AnimationDrawable frameAnimation =
(AnimationDrawable) tweenImage.getBackground();
frameAnimation.start();
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
Mat*_*lis 61
我认为你必须在有问题的视图初始化完成后启动动画.你应该可以这样做:
final ImageView tweenImage = (ImageView) findViewById(R.id.imageView1);
tweenImage.setBackgroundResource(R.anim.cubicfacetween);
tweenImage.post(new Runnable() {
@Override
public void run() {
AnimationDrawable frameAnimation =
(AnimationDrawable) tweenImage.getBackground();
frameAnimation.start();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑 - 这个问题让我相信这种onWindowFocusChanged方法并不总是有效.它似乎更简单,如果它适合你,可能是一个更好的主意.
小智 21
我知道这是一个老问题,但我遇到了同样的问题,但答案并没有帮助我.花了几个小时研究它后我终于发现我的问题是我已经添加android:src="@drawable/myanimation"到imageview容器中了.一旦我删除了这个,上述答案就有效了.我认为动画正在运行但是通过设置src,动画的第一个图像就在它上面,因此我认为它不是在播放.
android:src定义的imageview,并设置为不可见onCreate我将imageview设置为可见和setBackgroundResource我在XML文件中描述的动画onWindowFocusChanged我开始动画.尝试在窗口获得焦点后通过重写 Activity 中的 onWindowFocusChanged 来启动动画:
@Override
public void onWindowFocusChanged (boolean hasFocus)
{
//Start animation here
}
Run Code Online (Sandbox Code Playgroud)
请参阅此处的文档:http://developer.android.com/reference/android/app/Activity.html#onWindowFocusChanged%28boolean%29
| 归档时间: |
|
| 查看次数: |
16485 次 |
| 最近记录: |