Android 动画具体解释View动画

为了让用户更舒适的在某些情况下,利用动画是那么非常有必要的。Android在3.0一旦支持两种动画Tween动漫Frame动画。Tween动画支持简单的平移,缩放,旋转,渐变。Frame动画就像Gif图通过一系列图片来模拟动画效果,而在Android 3.0以后引入了新的动画就是属性动画(property
animation)。Android 分享一个简单有趣的动画效果 就是利用了属性动画。

今天我们主要来学习Tween动画也就是View动画。

View 动画仅仅能应用于View对象,并且仅仅支持一部分属性。并且对于View
动画,它仅仅是改变了View对象绘制的位置。而没有改变View对象本身,比方当前有一个button的坐标是(200,200)通过平移动画移动到(200,500),可是你点击移动后的button是没有不论什么效果,例如以下图:

知道了这个大前提我们就開始了解View动画的基本使用方法吧。动画能够用java代码写也能够用xml写

1,平移动画

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3000"
    android:fillAfter="true"
    android:fromXDelta="0%"
    android:fromYDelta="0%"
    android:repeatCount="10"
    android:repeatMode="restart"
    android:toXDelta="0%"
    android:toYDelta="70%" >

</translate>

duration动画时间。fillAfter保持动画结束后状态,fromXDelta起始X位置,fromYDelta起始Y位置,repeatCount反复次数,repeatMode反复模式 restart为正序 reverse为倒序,在java代码中用

Animation animation =AnimationUtils.loadAnimation(this, R.anim.tran_btn);

view.startAnimation(animation);

<span style="font-size:18px;">Animation animation2 = new TranslateAnimation(0, 20, 0, 0);
		animation2.setDuration(2000);
		animation2.setRepeatCount(10);
		animation2.setRepeatMode(Animation.RESTART);
		button.startAnimation(animation2);</span>

new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta)

看參数相信大家也都知道意思了

2。旋转动画

<?

xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3000"
    android:fromDegrees="0"
    android:toDegrees="360"
    android:pivotX="50%"
    android:pivotY="50%"
    >
</rotate>

大致同上。pivot旋转的中心点.

	Animation animation2 = new RotateAnimation(0, 360, 0, 0);
		animation2.setDuration(2000);
		button.startAnimation(animation2);

3,渐变动画

<span style="font-size:18px;"><?

xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromAlpha="1.0"
    android:toAlpha="0.0" >

</alpha></span>

事实上看通一个剩下的都是触类旁通

<span style="font-size:18px;">Animation animation = new AlphaAnimation(1, 0);
		animation.setDuration(3000);
		button.startAnimation(animation);</span>

4。缩放动画

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromXScale="0.0"
    android:fromYScale="1.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1.0"
    android:toYScale="1.0" >

</scale>

ok,这下四种基本动画都简单的结束了一下。可是我们有时可能会有一些特殊的需求。比方让播放一组动画,这时我们能够使用set

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <rotate
        android:duration="2000"
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="360" />

    <alpha
        android:duration="2000"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />

</set>

这是旋转于渐变同一时候播放,假设依次播放的话仅仅需加上startOffset

<?

xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <rotate
        android:duration="2000"
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="360" />

    <alpha
        android:duration="2000"
        android:fromAlpha="1.0"
        android:startOffset="2000"
        android:toAlpha="0.0" />

</set>

这样就能够依次播放。但有时我们想要一下特殊的效果比方说动画的加速度,这时候我们能够用上interpolator,animation.setInterpolator(new AccelerateInterpolator());

AccelerateDecelerateInterpolator 在动画開始与结束的地方速率改变比較慢。在中间的时候加速

AccelerateInterpolator  在动画開始的地方速率改变比較慢。然后開始加速

AnticipateInterpolator 開始的时候向后然后向前甩

AnticipateOvershootInterpolator 開始的时候向后然后向前甩一定值后返回最后的值

BounceInterpolator   动画结束的时候弹起

CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线

DecelerateInterpolator 在动画開始的地方快然后慢

LinearInterpolator   以常量速率改变

OvershootInterpolator    向前甩一定值后再回到原来位置

谢谢耐心的看完。不积跬步无以至千里,有什么疑问的话也能够留言。。

时间: 2024-08-25 11:52:01

Android 动画具体解释View动画的相关文章

Android图文具体解释属性动画

Android中的动画分为视图动画(View Animation).属性动画(Property Animation)以及Drawable动画.从Android 3.0(API Level 11)開始.Android開始支持属性动画,本文主要解说怎样使用属性动画. 关于视图动画能够參见博文<Android四大视图动绘图文具体解释>. 概述 视图动画局限比較大.例如以下所述: 视图动画仅仅能使用在View上面. 视图动画并没有真正改变View相应的属性值,这导致了UI效果与实际View状态存在差异

android 动画基础绘——view 动画(二)[补]

前言 这个是对view 动画的补充,是一些view 动画的特殊使用场景. 回顾第一篇关于view 动画的,我介绍到view的动画都是针对元素本身的. 当我们开发view动画的时候,我们看到几个元素在做相同规律的变化,如果我们去一个个设置的话,当然是可以的,但是呢一个代码不美观. 同样我们看到,我们进入下一个页面的时候,那么有一个切换动画.这些基本都可以用view 动画实现. 正文 activity 切换效果 Intent intent=new Intent(this,demo.class); s

android动画具体解释四 创建动画

使用ValueAnimator进行动画 通过指定一些int, float或color等类型的值的集合.ValueAnimator 使你能够对这些类型的值进行动画.你需通过调用ValueAnimator 的某个工厂方法来获得一个ValueAnimator 对象.比方:ofInt(), ofFloat(), 或 ofObject().比如: ValueAnimator animation = ValueAnimator.ofFloat(0f, 1f); animation.setDuration(1

Android动画——View动画

一.概述 View动画共有四种效果分别是平移动画.旋转动画.缩放动画以及透明度变化,此外帧动画也属于View动画,但实现效果与前面几种有所区别. 二.View动画的种类 四种动画分别对应四个Animation的子类TranslateAnimation.RotateAnimation.ScaleAnimation.AlphaAnimation,同时也可用XML来定义动画,分别对应标签<translate> <rotate> <scale> <alpha>,在实

android动画具体解释二 属性动画原理

property动画是一个强大的框架,它差点儿能使你动画不论什么东西. 你能够定义一个动画来改变对象的不论什么属性,不论其是否被绘制于屏幕之上. 一个属性动画在一定时间内多次改变一个属性(对象的一个字段)的值.要动画某个东西.你需指定对象的目标属性.比方位置,动画的持续时间.和改变的值的范围. 属性动画系统同意你指定下面动画属性: · Duration: 动画持续时间. 默认是300 ms. · Time interpolation: 你能够指定一个函数来定义怎样跟据当前的时间计算属性的值. ·

Android动画完全解析--属性动画

一.概述 上篇博客介绍了View动画的简单使用和基本工作原理原理,这篇来学习下属性动画.和View动画不同的是,属性动画不再简单的使用平移.旋转.缩放.透明度这4种变换,代替它们的是ValueAnimator.ObjectAnimator等概念. 二.运行截图 三.TimeInterpolator和TypeEvaluator 在真正学习属性动画之前,我们需要理解TimeInterpolator和TypeEvaluator这两个概念. 1.TimeInterpolator 中文翻译为时间插值器.它

Android 动画效果 及 自定义动画

1. View动画-透明动画效果2. View动画-旋转动画效果3. View动画-移动动画效果4. View动画-缩放动画效果5. View动画-动画效果混合6. View动画-动画效果侦听7. 自定义动画效果 ----------------------------------- 1. View动画-透明动画效果 2. View动画-旋转动画效果 3. View动画-移动动画效果 4. View动画-缩放动画效果 5. View动画-动画效果混合 6. View动画-动画效果侦听 7. 自定

android动画具体解释六 XML中定义动画

动画View 属性动画系统同意动画View对象并提供非常多比view动画系统更高级的功能.view动画系统通过改变绘制方式来变换View对象,view动画是被view的容器所处理的,由于View本身没有要操控的属性.结果就是View被动画了.但View对象本身并没有变化. 在Android3.0中,新的属性和对应的getter和setter方法被增加以克服此缺点. 属性动画系统能够通过改变View对象的真实属性来动画Views. 并且.View也会在其属性改变时自己主动调用invalidate(

Android属性动画与自定义View——实现vivo x6更新系统的动画效果

晚上好,现在是凌晨两点半,然后我还在写代码.电脑里播放着<凌晨两点半>,晚上写代码,脑子更清醒,思路更清晰. 今天聊聊属性动画和自定义View搭配使用,前面都讲到自定义View和属性动画,但是一起用的还是不多,刚巧今晚手机提示我更新系统,我看到那个更新的动画还不错,仔细的分析了一下,于是我也决定写一个,不是一模一样的,但是效果和原理是一样的. 先看看图: 这是一张静态的图,这里有三个波浪线,当下载完之后,波浪线会往上活动,一直到消失. 所以难点也是在这个波浪线上.这个波浪线类似于一个水波纹,也