Android 动画具体解释View动画

Android 动画具体解释View动画

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

为了让用户更舒适的在某些情况下,利用动画是那么非常有必要的。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是没有不论什么效果,例如以下图:

Android 动画具体解释View动画

知道了这个大前提我们就開始了解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);

Android 动画具体解释View动画

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>

Android 动画具体解释View动画

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>

Android 动画具体解释View动画

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    向前甩一定值后再回到原来位置

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





版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117732.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python怎么表示取余_python如何实现取余操作

    python怎么表示取余_python如何实现取余操作python实现取余操作的方法:可以利用求模运算符(%)来实现。求模运算符可以将两个数相除得到其余数。我们还可以使用divmod()函数来实现取余操作,具体方法如:【divmod(10,3)】。在python中要实现取余操作可以使用求模运算符(%),该运算符可以将两个数相除得到其余数。(推荐教程:Python入门教程)如果一个数恰好能被另外一个数据整除,则余数为0,%运算后返回结果为0。可利用余数…

    2022年4月25日
    109
  • 久坐提醒 android wear,这五个理由告诉你为什么需要一块智能手表![通俗易懂]

    久坐提醒 android wear,这五个理由告诉你为什么需要一块智能手表![通俗易懂]来源:驱动号作者:2019-06-14/17:15访问量:摘要智能化可穿戴设备现如今已经普及,如果你还没有一块智能手表,现在是时候戴一下了。智能手表与智能手机相比,带来的都是潜在性的好处。虽然智能手表并不能保证你一定会多运动,也不能保证你一定会少玩手机。但是它可以提供一种让生活更好的选择,这种选择可能就足以改变我们的生活。过去的几年,关于智能手表的讨论都是”要不要买一款智能手表”,而…

    2022年9月28日
    3
  • 引用类型的一些方法

    引用类型的一些方法

    2022年3月12日
    45
  • 简单的WebService创建+发布Tomcat(java WebService)「建议收藏」

    简单的WebService创建+发布Tomcat(java WebService)「建议收藏」本文完全是为自己的学习过程做一个记录,大佬敬请留言指点,勿喷。一、本文环境为eclipse2019-3,jdk1.8,Tomcat7。二、WebService创建俩种方式,1、据IDE自带的webservice生成工具进行。2、通过创建servlet并利用构造函数进行publish。(具体的是利用CXF、axis等哪种框架,没搞明白,希望看见的大佬可以留言)三、1、据IDE自带的webse…

    2022年10月16日
    2
  • 查看linux上面是否有安装redis,redis开机启动

    1、检测是否有安装redis-cli和redis-server;[root@localhostbin]#whereisredis-cliredis-cli:/usr/bin/redis-cli[root@localhostbin]#whereisredis-serverredis-server:/usr/bin/redis-server说明已经安装好了,如果不知道怎么安装,告诉

    2022年4月6日
    47
  • 计算机软件著作权源代码_软件著作权代码页数

    计算机软件著作权源代码_软件著作权代码页数软件著作权源代码文档的要求:代码总共60页,前面30页/后面30页,每页50行。前面30页要连续,后面30页要连续,30页与31页可不连续。代码结尾要有结束标志,不要空格和注释。一、清除整个文档的空行:方法:用ctrl+a(快捷方式),选中全部源程序代码文档;点击word的查找替换功能查找:^p^p;替换为:^p。选择“全部替换”。反复N次,直到全部替换完成。二、清除注释1.清除单行注释//*^13全部替换为空2.清除多行注释/\*\*^13*/^13全部替换为空…

    2022年9月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号