2011-01-11 26 views
0

我有一个图像加载为背景,当触摸屏幕时,我想用frameanimation为屏幕的那一部分设置动画。我的frameanimation由9个不同的png文件组成,这些文件仅从我想要动画的屏幕部分制作而成。当我使用整个背景作为动画帧时,我可以使用它,但是当我使用setbounds()来告诉frameanimation在哪里绘制时,我最终将frameanimation放大以填充整个屏幕,这也会擦除我的背景。我如何获得保持原始大小的框架并同时找到它?我可以张贴代码后,如果这是不明确的,我不是在COMP现在如何在android中定位FrameAnimation?

public boolean onTouchEvent (MotionEvent event) 
{ 
    switch (event.getAction()) 
    { 
     case MotionEvent.ACTION_DOWN: 
     this.setBackgroundResource (R.drawable.nova); 
     Object bg = this.getBackground 
     touchAni.setBounds (152, 156, 152+140, 156+140); 

     touchAni = (AnimationDrawable) bg; 

     if (!touchAni.isRunning()) 
      touchAni.start(); 
     else 
     { 
      touchAni.stop(); 
      touchAni.start(); 
     } 
    } 
} 

回答

0

好吧,经过多次的put around,我终于在这里找到了BounceActivity代码:http://rsequence.com/android_blog/node/107。似乎对于这样一个简单的任务来说真的很复杂,但让我得到我想要的。需要注意的是,如果其他人认为它有用,Handler()代码需要有一个开关,所以当屏幕上没有任何事情发生时,它不会将cpu周期旋转到BounceView.draw()。

0

我已经解决了类似的问题的方式是,我又增加了图像组件到我的布局XML之上我想要动画的组件。通常情况下,图像组件是android:visibility="gone" ,但是当我想运行框架动画时,我将其设置为可见并开始动画。

通过这种方式,您可以将动画组件放置在布局中的任何位置。

+0

不确定你的意思。我已将代码添加到我的原始问题中。正在发生的事情是,第一次触摸屏幕时,R.drawable.nova animation-list(描述动画的xml文件)被缩放以适应整个屏幕,然后播放动画。随后在屏幕上的触摸在正确的位置绘制新星动画,但是背景不是我想要的(被放大的nova动画覆盖)。我将在哪里准确地添加图像组件?在animation-list xml文件中,还是在onTouchEvent()方法中的某处? – wufoo 2011-01-11 21:40:32

相关问题