AnimationOne

Animation总体上来说有三种动画:FrameAnimation、TweenAnimation以及自定义动画。
前面两种动画,在developer里有简单的介绍,有兴趣的同学可以看下
[url] http://developer.android.com/guide/topics/graphics/view-animation.html[/url]

(一)FrameAnimation
简单说就是与电影胶片一样,将图片连续播放组成动画.
在res/drawable中 定义.xml文件,设置播放的图片 duration图片播放时间
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/loading_1" android:duration="160" />
<item android:drawable="@drawable/loading_2" android:duration="160" />
<item android:drawable="@drawable/loading_3" android:duration="160" />
</animation-list>


在。java中
AnimationDrawable mLoadingAnim;
ImageView animView = (ImageView) findViewById(R.id.loading_anim);
animView.setBackgroundResource(R.drawable.card_loading_anim);
mLoadingAnim = (AnimationDrawable) animView.getBackground();
mLoadingAnim.setOneShot(false); //设置多次播放
mLoadingAnim.start();


(二)TweenAnimation
简单来说就是通过计算机对图形进行变换。anroid中提供的4种图像变换,分别是scale(尺寸放大缩小)、alpha(透明度变换)、translate(位置变换)、rotate(旋转变换)
在res/anim中,定义图像的变化
<?xml version="1.0" encoding="utf-8"?>
<set android:interpolator="@android:anim/decelerate_interpolator">
<scale
android:fromXScale="1.4"
android:toXScale="0.0"
android:fromYScale="0.6"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400"/>
<rotate
android:fromDegrees="0"
android:toDegrees="-45"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400" />
</set>

在.java中
Animation anim;
anim = AnimationUtils.loadAnimation(this, R.anim.go);
ImageView animView = (ImageView) findViewById(R.id.loading_anim);
animView.startAnimation(anim);


scale、rotate、translate、alpha在xml中有许多的属性,有兴趣的同学可以在developer查看文档或是在点击以下连接进行了一些总结
http://liaobingyun.blog.163.com/blog/static/12981211120099975217653/

Animation类中提供了很多的接口,方便实现一些功能:本人常用到的三个接口,故名思议

 public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
}

@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub

}

@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stubd

}

在TweenAnimation中可以抛开xml文件直接在。java中进行定义(当然FrameAnimation也可以)
AnimationSet animSet = new AnimationSet(false);
Animation anim1 = new AlphaAnimation(1,0);
Animation anim2 = new RotateAnimation(0,360,30,30);
anim1.setDuration(400);
anim2.setDuration(400);
animSet.addAnimation(anim1);
animSet.addAnimation(anim2);
view.setAnimation(animSet);
animSet.startNow();

这里要注意AnimationSet中的动画是同时播放的,android没有提供连续播放的接口.可以通过设置startOffset来解决这一问题.
anim2.setStartOffset(1000);
这样anim2的动画效果将在anim1播放1000m之后播放

最后在加载动画的通常画面不动。由于android的原因,在onCreate中播放 anim.start() 是无效的,需要通过handleMessage的方式或是通过listener触发事件之后在加载
方式一:
Button btn  =(Button) findViewById(R.id.btn);

btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
showAnimation();
}
});

方式二:
myHandler handler = new myHandler ();
handler.sendEmptyMessage(1);

private class AnimationHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch(msg.what) {
case SHOW_CARD_ANIMATION:{
handler.postDelayed(new Runnable() {
@Override
public void run() {
showCardAnim();
}
}, 0);
break;
}
}
}
}


排版麻烦死了~~~~~~~~~~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值