`
Jsaint
  • 浏览: 13746 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

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;
                }
            }
        }
    }


排版麻烦死了~~~~~~~~~~~~
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics