Android Frame Animation 实现图片刷新等待过程

Android 动画效果很多,这里记载下帧的动画效果,就是每隔一段时间就更新一张图片。以此来循环播放图片,达到动画的效果。

动画效果都会有两种方式实现,一个XML布局方式,一个java代码方式。

这里记载下xml布局方式,并实现两种开始动画的方式:1、一打开页面就自动播放动画;2、通过点击事件来播放动画。

说是xml布局,我们当然的先实现一个这样的布局。这个布局文件您可以放在anim或者drawable文件夹中,建议放在drawable文件夹中。因为你在这个文件夹中新建一个布局文件时,会有这样一个 ”animation-list“提示。具体代码如下:

复制代码
<!-- Animation frames are wheel0.png -- wheel5.png files inside the
 res/drawable/ folder -->
 <animation-list android:id="@+id/selected" android:oneshot="false">
    <item android:drawable="@drawable/wheel0" android:duration="50" />
    <item android:drawable="@drawable/wheel1" android:duration="50" />
    <item android:drawable="@drawable/wheel2" android:duration="50" />
    <item android:drawable="@drawable/wheel3" android:duration="50" />
    <item android:drawable="@drawable/wheel4" android:duration="50" />
    <item android:drawable="@drawable/wheel5" android:duration="50" />
 </animation-list>
复制代码

这个里面放上你的图片,每隔?秒换下一张有你自己决定。oneshot=false ,表示循环播放,反之只播放一次。

这个弄好后,你只需在你的布局文件中,为一个imageview或者其他控件加上这样一个背景就行了。如:

复制代码
<ImageView
        android:id="@+id/refresh_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_gravity="center"
        android:background="@drawable/waitting"
        android:visibility="visible"/>
复制代码

然后再代码中找到上述的Imageview:

复制代码
ImageView img = (ImageView)findViewById(R.id.refresh_text);

 // Get the background, which has been compiled to an AnimationDrawable object.
 AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();

//通过其他控件的点击事情来促发这个动画的开始,要不然只显示一帧。
public void onclick(){
 frameAnimation.start();
}
复制代码

当然在更多情况下我们只需要一进这个页面就要开始动画的播放,这也是可以实现的。

一种,如果你这个类是个activity。那么你只要在:

复制代码
@Override
    public void onWindowFocusChanged(boolean hasFocus)
    {
        // TODO Auto-generated method stub
        super.onWindowFocusChanged(hasFocus);
        anim.start();
    }
复制代码

这个方法里实现动画的开始。

还有一种就是另外开启一个线程来实现动画的开始。

复制代码
    private Handler handler = new Handler();
    private Runnable runable = new Runnable()
    {
        
        @Override
        public void run()
        {
            // TODO Auto-generated method stub
            anim.start();
        }
    };

//开始动画 handler.postDelayed(runable,
300);
复制代码

ok,简单的记载下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值