zoukankan      html  css  js  c++  java
  • 小球动画

    布局里五个ImageView便是我们看到的五个小球,最重要是给左边的小球和右边的小球加上动画,这里我们设定最左边是红色球,最右边是紫色球,两球交替升起降落,
    这里我们设定左边小球先升起;便有了左边球下落敲打旁边球,右边球受力弹起,右边球下落敲打旁边球,左边球受力弹起的动画效果;
        核心就是左边小球和右边小球的动画xml文件,内容如下:
        左边球升起降落动画rotate_left.xml文件:
    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:repeatCount="1" 
    android:fromDegrees="0" 
    android:toDegrees="50" 
    android:pivotX="50%" 
    android:pivotY="-300%" 
    android:repeatMode="reverse" 
    android:duration="300" 
    />
    </set>
        右边球升起降落动画rotate_right.xml文件:
    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:repeatCount="1" 
    android:fromDegrees="0" 
    android:toDegrees="-50" 
    android:pivotX="50%" 
    android:pivotY="-300%" 
    android:repeatMode="reverse" 
    android:duration="300" 
    />
    </set>
    关于旋转动画的属性意思,百度可以更详细告诉你
    有了动画文件,下面就是怎样控制动画的执行先后顺序:
    activity.java文件内容:
    定义变量:
        private ImageView ballRed;
        private ImageView ballPurple;
        private Animation  leftRotate;
        private Animation  rightRotate;
    onCreate函数绑定小球id,以及准备动画;
            ballRed = (ImageView)this.findViewById(R.id.ball_img_red);
            ballPurple = (ImageView)this.findViewById(R.id.ball_img_purple);
            leftRotate= AnimationUtils.loadAnimation(this, R.anim.rotate_left);
            rightRotate= AnimationUtils.loadAnimation(this, R.anim.rotate_right);
    onStarte函数控制动画:
    这里用到了动画监听函数,可以在动画的开始,结束时,加入你想要的处理;
    
            ballRed.startAnimation(leftRotate);//这里我们让左边小球先执行动画
            leftRotate.setAnimationListener(new AnimationListener() {//给左边小球加入动画监听
    
                @Override
                public void onAnimationStart(Animation arg0) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void onAnimationRepeat(Animation arg0) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void onAnimationEnd(Animation arg0) {
                    // TODO Auto-generated method stub
                    ballPurple.startAnimation(rightRotate);//待左边小球的动画结束后,右边小球开始执行动画
                }
            });
            rightRotate.setAnimationListener(new AnimationListener() {//给右边小球加入动画监听
    
                @Override
                public void onAnimationStart(Animation animation) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void onAnimationRepeat(Animation animation) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void onAnimationEnd(Animation animation) {
                    // TODO Auto-generated method stub
                    ballRed.startAnimation(leftRotate);//待右边小球的动画结束后,左边小球开始执行动画
                }
            });
    由于布局文件非常简单,里面就是5个imageView的左右排列,这里就不赘述了
    
  • 相关阅读:
    阻止事件冒泡和默认行为,禁止键盘事件
    jquery移除、绑定、触发元素事件
    HTML`CSS_网站页面不同浏览器兼容性问题解决
    computed属性与methods、watched
    call()方法和apply()方法用法总结
    push()、shift()与pop()、unshift()、splice()
    vue指令总结
    fieldset标签
    mysql存储过程定义者
    数据库死锁
  • 原文地址:https://www.cnblogs.com/wjhblogs/p/4362190.html
Copyright © 2011-2022 走看看