精华内容
下载资源
问答
  • Android缩放动画

    2017-07-29 15:21:00
    Android缩放动画 核心方法 public void startAnimation(Animation animation) 运行动画,參数能够是各种动画的对象,Animation的多态。也能够是组合动画,后面会有。 4个參数构造方法 /** * ...

    Android缩放动画

    核心方法

    public void startAnimation(Animation animation)
    • 运行动画,參数能够是各种动画的对象,Animation的多态。也能够是组合动画,后面会有。

    4个參数构造方法

    /**
     * Constructor to use when building a ScaleAnimation from code
     * 
     * @param fromX Horizontal scaling factor to apply at the start of the animation
     * @param toX Horizontal scaling factor to apply at the end of the animation
     * @param fromY Vertical scaling factor to apply at the start of the animation
     * @param toY Vertical scaling factor to apply at the end of the animation
     */
    public ScaleAnimation(float fromX, float toX, float fromY, float toY) {
        mResources = null;
        mFromX = fromX;
        mToX = toX;
        mFromY = fromY;
        mToY = toY;
        mPivotX = 0;
        mPivotY = 0;
    }

    使用方法

    public void scale(View view) {
        // 创建缩放的动画对象
        ScaleAnimation sa = new ScaleAnimation(0f,1.0f,0f,1.0f);
        // 设置动画播放的时间
        sa.setDuration(1000);
        // 開始播放动画
        iv.startAnimation(sa);
    }

    效果

    以图片左上角为原点。从没有,放大到图片原大小


    6个參数构造方法

       /**
        * Constructor to use when building a ScaleAnimation from code
        * 
        * @param fromX Horizontal scaling factor to apply at the start of the animation
        * @param toX Horizontal scaling factor to apply at the end of the animation
        * @param fromY Vertical scaling factor to apply at the start of the animation
        * @param toY Vertical scaling factor to apply at the end of the animation
        * @param pivotX The X coordinate of the point about which the object is being scaled, specified as an absolute number where 0 is the left edge. (This point remains fixed while the object changes size.)
        * @param pivotY The Y coordinate of the point about which the object is being scaled, specified as an absolute number where 0 is the top edge. (This point remains fixed while the object changes size.)
        */
       public ScaleAnimation(float fromX, float toX, float fromY, float toY, float pivotX, float pivotY) {
           mResources = null;
           mFromX = fromX;
           mToX = toX;
           mFromY = fromY;
           mToY = toY;
    
           mPivotXType = ABSOLUTE;
           mPivotYType = ABSOLUTE;
           mPivotXValue = pivotX;
           mPivotYValue = pivotY;
           initializePivotPoint();
       }
    • 前4个參数和上面的使用方法一样,后两个參数是设置图片缩放的原点,四个參数的构造默认将这两个參数都设置了0,所以是在图片左上角開始缩放

    使用方法

    ScaleAnimation sa = new ScaleAnimation(0f, 1.0f, 0f, 1.0f, iv.getWidth() / 2, iv.getHeight() / 2);
    // 设置动画播放的时间
    sa.setDuration(1000);
    // 開始播放动画
    iv.startAnimation(sa);

    效果

    以图片的中心为原点,从没有放大到图片原大小


    8个參数构造方法

      /**
        * Constructor to use when building a ScaleAnimation from code
        * 
        * @param fromX Horizontal scaling factor to apply at the start of the animation
        * @param toX Horizontal scaling factor to apply at the end of the animation
        * @param fromY Vertical scaling factor to apply at the start of the animation
        * @param toY Vertical scaling factor to apply at the end of the animation
        * @param pivotXType Specifies how pivotXValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
        * @param pivotXValue The X coordinate of the point about which the object is being scaled, specified as an absolute number where 0 is the left edge. (This point remains fixed while the object changes size.) This value can either be an absolute number if pivotXType is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise.
        * @param pivotYType Specifies how pivotYValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
        * @param pivotYValue The Y coordinate of the point about which the object is being scaled, specified as an absolute number where 0 is the top edge. (This point remains fixed while the object changes size.) This value can either be an absolute number if pivotYType is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise.
        */
       public ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) {
           mResources = null;
           mFromX = fromX;
           mToX = toX;
           mFromY = fromY;
           mToY = toY;
    
           mPivotXValue = pivotXValue;
           mPivotXType = pivotXType;
           mPivotYValue = pivotYValue;
           mPivotYType = pivotYType;
           initializePivotPoint();
       }

    使用方法

    // 创建缩放的动画对象
    ScaleAnimation sa = new ScaleAnimation(0f, 1.0f, 0f, 1.0f, ScaleAnimation.RELATIVE_TO_SELF, 0.5f, ScaleAnimation.RELATIVE_TO_SELF, 0.5f);
    // 设置动画播放的时间
    sa.setDuration(1000);
    // 開始播放动画
    iv.startAnimation(sa);
    • 和上面6个參数的相比仅仅是多了第5和第7个參数,分别设置他们的类型,凝视里面已经说明了。能够设置Animation.ABSOLUTE、Animation.RELATIVE_TO_SELF、Animation.RELATIVE_TO_PARENT类型

    效果

    效果和上面一样,以图片的中心为原点,从没有放大到图片原大小。


    设置动画反复播放的次数的方法

    /**
     * Sets how many times the animation should be repeated. If the repeat
     * count is 0, the animation is never repeated. If the repeat count is
     * greater than 0 or {@link #INFINITE}, the repeat mode will be taken
     * into account. The repeat count is 0 by default.
     *
     * @param repeatCount the number of times the animation should be repeated
     * @attr ref android.R.styleable#Animation_repeatCount
     */
    public void setRepeatCount(int repeatCount) {
        if (repeatCount < 0) {
            repeatCount = INFINITE;
        }
        mRepeatCount = repeatCount;
    }

    使用

    sa.setRepeatCount(2);

    设置动画反复播放的模式的方法

    /**
     * Defines what this animation should do when it reaches the end. This
     * setting is applied only when the repeat count is either greater than
     * 0 or {@link #INFINITE}. Defaults to {@link #RESTART}. 
     *
     * @param repeatMode {@link #RESTART} or {@link #REVERSE}
     * @attr ref android.R.styleable#Animation_repeatMode
     */
    public void setRepeatMode(int repeatMode) {
        mRepeatMode = repeatMode;
    }

    使用

    sa.setRepeatMode(ScaleAnimation.REVERSE);
    展开全文
  • Android 缩放动画 ScaleAnimation

    千次阅读 2020-09-15 17:23:09
    ScaleAnimation即缩放动画,应用场景特别多,比如常见的隐藏菜单点击显示 下面我分两种方式来介绍ScaleAnimation如何使用。 1. xml文件形式 文件名:anim_scale_in.xml 效果:呈现view放大显示效果 源码: &...

    什么是ScaleAnimation

    ScaleAnimation即缩放动画,应用场景特别多,比如常见的隐藏菜单点击显示

    下面我分两种方式来介绍ScaleAnimation如何使用。

    1. xml文件形式
    文件名:anim_scale_in.xml
    效果:呈现view放大显示效果
    源码:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale
            android:interpolator="@android:anim/decelerate_interpolator"
            android:duration="1000"
            android:fillAfter="true"
            android:fromXScale="0.0"
            android:fromYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toXScale="1.0"
            android:toYScale="1.0" />
    </set>

    属性解释:
    interpolator:动画插入器,该功能在xml里设置貌似无效,需在代码中加
    fromXScale:从自身x轴长度多少倍开始缩放,如:fromXScale= 0.5表示从自身X轴长度0.5倍开始缩放
    toXScale:缩放到自身x轴长度多少倍结束,如:toXScale = 2.0表示x轴缩放到自身x轴长度2倍结束
    上面两条意思就是:该view的x轴从自身x轴长度的0.5倍开始缩放到自身x轴长度的2倍结束
    fromYScale:从自身y轴长度多少倍开始缩放,如:fromYScale= 0.5表示从自身y轴长度0.5倍开始缩放
    toYScale:缩放到自身y轴长度多少倍结束,如:toYScale = 2.0表示x轴缩放到自身y轴长度2倍结束
    pivotX:动画相对于控件X坐标的开始位置
    pivotY:动画相对于控件Y坐标的开始位置
    如:pivotX = 50%,pivotY = 50% 表示从该控件的中心开始缩放

       //表示控件左下角开始
       android:pivotX="0"
       android:pivotY="100%"
    
       //表示控件左上角开始
       android:pivotX="0"
       android:pivotY="0"
    
       //表示控件右下角开始
        android:pivotX="100%"
        android:pivotY="100%"
    
       //表示控件右上角开始
       android:pivotX="100%"
       android:pivotY="0"

     

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale
            android:interpolator="@android:anim/accelerate_interpolator"
            android:duration="1000"
            android:fillAfter="true"
            android:fromXScale="1.0"
            android:fromYScale="1.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toXScale="0"
            android:toYScale="0" />
    </set>

     

    OK,现在有了xml布局文件,我们需要用Java代码让他工作起来,如下;

     /**
         * 缩放变大动画
         *
         * @param context
         * @param view 目标view
         */
        public static void startScaleInAnim(Context context, View view) {
            Animation animation = AnimationUtils.loadAnimation(context, R.anim.anim_scale_in);
            if (view != null)
                view.startAnimation(animation);
        }
    
        /**
         * 缩放缩小动画
         *
         * @param context
         * @param view 目标view
         */
        public static void startScaleOutAnim(Context context, View view) {
            Animation animation = AnimationUtils.loadAnimation(context, R.anim.anim_scale_out);
            if (view != null)
                view.startAnimation(animation);
        }

    我单独封装在一个动画工具类中,哪里需要就哪里调用。


    下面看看代码的执行效果:
    这里写图片描述

    缩放同时还可以添加透明度变化,如下:

    放大+淡入:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale
            android:interpolator="@android:anim/decelerate_interpolator"
            android:duration="1000"
            android:fillAfter="true"
            android:fillEnabled="true"
            android:fromXScale="0"
            android:fromYScale="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toXScale="1.0"
            android:toYScale="1.0" />
        <!--同时配置淡入功能-->
        <alpha
            android:duration="700"
            android:fillAfter="true"
            android:fromAlpha="0"
            android:toAlpha="1" />
    </set>

    缩小+淡出

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale
            android:interpolator="@android:anim/accelerate_interpolator"
            android:duration="1000"
            android:fillAfter="true"
            android:fromXScale="1.0"
            android:fromYScale="1.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toXScale="0"
            android:toYScale="0" />
        <!--同时配置淡出功能-->
        <alpha
            android:duration="700"
            android:fillAfter="true"
            android:fromAlpha="1"
            android:toAlpha="0" />
    </set>

    效果如下:
    这里写图片描述

    下拉菜单显示与收回,效果:

    显示:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale
            android:interpolator="@android:anim/decelerate_interpolator"
            android:duration="300"
            android:fillAfter="true"
            android:fillEnabled="true"
            android:fromXScale="1.0"
            android:fromYScale="0"
            android:pivotX="100%"
            android:pivotY="0"
            android:toXScale="1.0"
            android:toYScale="1.0" />
        <!--同时配置淡入功能-->
        <alpha
            android:duration="300"
            android:fillAfter="true"
            android:fromAlpha="0"
            android:toAlpha="1" />
    </set>

    收起:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale
            android:interpolator="@android:anim/accelerate_interpolator"
            android:duration="300"
            android:fillAfter="true"
            android:fromXScale="1.0"
            android:fromYScale="1.0"
            android:pivotX="100%"
            android:pivotY="0"
            android:toXScale="1.0"
            android:toYScale="0" />
        <!--同时配置淡出功能-->
        <alpha
            android:duration="300"
            android:fillAfter="true"
            android:fromAlpha="1"
            android:toAlpha="0" />
    </set>

    效果:
    这里写图片描述

    缩放下拉与收回效果:

    显示:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale
            android:interpolator="@android:anim/decelerate_interpolator"
            android:duration="200"
            android:fillAfter="true"
            android:fillEnabled="true"
            android:fromXScale="0"
            android:fromYScale="0"
            android:pivotX="100%"
            android:pivotY="0"
            android:toXScale="1.0"
            android:toYScale="1.0" />
        <!--同时配置淡入功能-->
        <alpha
            android:duration="200"
            android:fillAfter="true"
            android:fromAlpha="0"
            android:toAlpha="1" />
    </set>

    收起:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale
            android:interpolator="@android:anim/accelerate_interpolator"
            android:duration="200"
            android:fillAfter="true"
            android:fromXScale="1.0"
            android:fromYScale="1.0"
            android:pivotX="100%"
            android:pivotY="0"
            android:toXScale="0"
            android:toYScale="0" />
        <!--同时配置淡出功能-->
        <alpha
            android:duration="200"
            android:fillAfter="true"
            android:fromAlpha="1"
            android:toAlpha="0" />
    </set>

    效果:
    这里写图片描述

    类似游戏按钮的按下放大再还原效果:

      public static void animScaleIn(View view){
            //缩放动画
            ScaleAnimation animation = new ScaleAnimation(1,1.2f,1,1.2f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
            animation.setDuration(100);
            animation.setFillAfter(true);
            animation.setRepeatMode(Animation.REVERSE);
            animation.setRepeatCount(1);
    
            //透明度动画
            AlphaAnimation animation1 = new AlphaAnimation(1,0.8f);
            animation1.setDuration(100);
            animation1.setRepeatCount(1);
            animation1.setRepeatMode(Animation.REVERSE);
            animation1.setFillAfter(true);
    
            //装入AnimationSet中
            AnimationSet set = new AnimationSet(true);
            set.addAnimation(animation);
            set.addAnimation(animation1);
    
            if (view != null)
            view.startAnimation(set);
    
        }

    效果如下:

    这里写图片描述

    备注:由于我的图片是导出视频再用PS转换成的gif,故效率上有所损失,实际动画效果和速度比图片的快。

    展开全文
  • android缩放动画的两种实现方法

    千次阅读 2017-06-17 14:06:00
    我们会常常使用到缩放动画,普通情况下缩放动画有两种实现方式。一种是直接通过java代码去实现,第二种是通过配置文件实现动画,以下是两种动画的基本是用法: Java代码实现: //创建缩放动画对象 Animation ...

    在android开发。我们会常常使用到缩放动画,普通情况下缩放动画有两种实现方式。一种是直接通过java代码去实现,第二种是通过配置文件实现动画,以下是两种动画的基本是用法:

    Java代码实现:

    //创建缩放动画对象
    		Animation animation = new ScaleAnimation(0, 1.0f, 0f, 1.0f);
    		animation.setDuration(1500);//动画时间
    		animation.setRepeatCount(3);//动画的反复次数
    		animation.setFillAfter(true);//设置为true,动画转化结束后被应用
    		imageView1.startAnimation(animation);//開始动画

    通过配置文件实现:

    1、首先要在res文件夹下建立一个anim文件,在anim建立一个scale.xml文件例如以下:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale 
            android:duration="1500"
            android:fillAfter="true"
            android:fromXScale="0.0"
            android:fromYScale="0.0"
            android:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:pivotX="0%"
            android:pivotY="50%"
            android:toXScale="1.0"
            android:toYScale="1.0"
            />
    
    </set>
    

    2、载入动画:

    Animation animation = AnimationUtils.loadAnimation(this, R.anim.scale);
    		imageView1.startAnimation(animation);//開始动画
    案例下载地址:http://download.csdn.net/detail/u013043346/9374204

    转载于:https://www.cnblogs.com/jzssuanfa/p/7040097.html

    展开全文
  • Android缩放动画anim_zoom

    2014-05-21 20:10:47
    anim_zoom_in.xml
  • 设置动画结束之后的状态是否是动画的最终状态,true,表示是保持动画结束时的最终状态 38 animation.setRepeatCount(0 ); 39 // 设置循环次数,0为1次 40 logo.startAnimation(animation); 41 // 开始...
     1 @Override
     2     protected void onCreate(Bundle savedInstanceState) {
     3         super.onCreate(savedInstanceState);
     4         setContentView(R.layout.activity_main);
     5         
     6         logo = (ImageView)findViewById(R.id.imageView1);
     7         //实例化logo控件
     8         
     9         btndl = (Button)findViewById(R.id.button1);
    10         btnzc = (Button)findViewById(R.id.Button01);
    11         //实例化按钮控件
    12         
    13         btndl.setVisibility(View.INVISIBLE);
    14         btnzc.setVisibility(View.INVISIBLE);
    15         //设置按钮不显示
    16         
    17         ScaleAnimation animation = new ScaleAnimation(0, 1, 0, 1,Animation.RELATIVE_TO_SELF, 0.5f,1, 0.5f);
    18 
    19         /**
    20          *
    21          * @param fromX 起始x轴位置,0为最小,1为原始,float形
    22          * @param toX 同上
    23          * @param fromY 同上T
    24          * @param toY 同上
    25          * @param pivotXType 用来约束pivotXValue的取值。取值有三种:Animation.ABSOLUTE,Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_PARENT
    26          * Type:Animation.ABSOLUTE:绝对,如果设置这种类型,后面pivotXValue取值就必须是像素点;比如:控件X方向上的中心点,pivotXValue的取值mIvScale.getWidth() / 2f
    27          *      Animation.RELATIVE_TO_SELF:相对于控件自己,设置这种类型,后面pivotXValue取值就会去拿这个取值是乘上控件本身的宽度;比如:控件X方向上的中心点,pivotXValue的取值0.5f
    28          *      Animation.RELATIVE_TO_PARENT:相对于它父容器(这个父容器是指包括这个这个做动画控件的外一层控件), 原理同上,
    29          * @param pivotXValue  配合pivotXType使用,原理在上面
    30          * @param pivotYType 同from/to
    31          * @param pivotYValue 原理同上
    32          */
    33         
    34         animation.setDuration(2000);
    35         //设置持续时间
    36         animation.setFillAfter(true);
    37         //设置动画结束之后的状态是否是动画的最终状态,true,表示是保持动画结束时的最终状态
    38         animation.setRepeatCount(0);
    39         //设置循环次数,0为1次
    40         logo.startAnimation(animation);
    41         //开始动画
    42         
    43         myTimer = new Timer();
    44         
    45         /**
    46          * 
    47          * 建立计时器
    48          * 当logo动画结束后
    49          * 显示按钮
    50          * 
    51          */
    52         
    53         myTimer.schedule(new TimerTask() {
    54             
    55             @Override
    56             public void run() {
    57                 // TODO Auto-generated method stub
    58                 runOnUiThread(new Runnable() {
    59                     public void run() {
    60                         btndl.setVisibility(View.VISIBLE);
    61                         btnzc.setVisibility(View.VISIBLE);
    62                     }
    63                 });
    64             }
    65         }, 2000);
    66         
    67     }

     

    转载于:https://www.cnblogs.com/ame-yu/p/10481263.html

    展开全文
  • 动画执行完后是否停留在执行完的状态 //animation.setStartOffset(long startOffset);// 执行前的等待时间 actRefrenalRlSearch .setAnimation( scaleAnimation ) ; scaleAnimation .start() ; ...
  • } } } 下面是我的動畫 xml'scale_up.xml': android:fromXScale="1.0" android:toXScale="1.5" android:fromYScale="1.0" android:toYScale="1.5" android:pivotX="50%p" android:pivotY="50%p" android:duration=...
  • 我试图在一个动画缩放ImageView,但是每当我这样做,它似乎在布局中向下移动并离开.这是截图之前我动画:而在动画之后它看起来像什么:ImageView缩放可以缩小,但左上角是否保留在布局的左上角?这是我正在使用的代码...
  • 我有一个ImageView,我做一个简单的缩放动画。非常标准的代码。我的scale_up.xml:android:fromYScale="1"android:toXScale="1.2"android:toYScale="1.2"android:duration="175"/>我的动画代码:Animation a = ...
  • android 垂直缩放动画效果
  • Android 安卓动画 补间动画 - 缩放动画

    千次阅读 多人点赞 2018-08-31 19:36:54
    补间动画之缩放动画 实现效果:点击按钮后实现按钮放大效果 补间动画概念:就是从一个画面过渡到另一个画面时让人看到中间动画效果! 动画 - 相关文章篇 帧动画 帧动画: ...
  • 属性动画的出现,弥补了补间动画的不足之处,补间动画,只是改变了表面上的东西,但是其中属性并未改变,而属性动画相反,改变了表面上的东西,并且也更改了其属性。 类:ObjectAnimator 用于操作属性动画的类 ...
  • 用 AnimationUtils 和 xml 的方式,加载指定的缩放动画。 Animation scaleAnimation = AnimationUtils.loadAnimation(mContext, R.anim.scale_animation); scaleAnimation.setFillAfter(true); mImageView....
  • Android 平移动画 缩放动画=集合动画,实现开机启动页 通过线程休眠事件跳转到主界面,Android 平移动画 缩放动画->实现开机启动页: 1、通过集合动画 线程实现开机启动动画界面。 2、设置了休眠时间,休眠过后实现...
  • 缩放动画(ScaleAnimation)简介 以控件的中心点为中心做缩小或放大的动作,缩放动画可以实现view有小到大或者由大到小的缩放效果。 缩放动画属性 缩放动画使用scale标签标示,主要有一下几个属性 属性 描述 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,041
精华内容 1,216
关键字:

android缩放动画