Android动画之视图动画的缺点和属性动画的引入

2024-05-06 13:48

本文主要是介绍Android动画之视图动画的缺点和属性动画的引入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

动画入门和进阶文章列表:

Animation动画概述和执行原理
Android动画之补间动画TweenAnimation
Android动画之逐帧动画FrameAnimation
Android动画之插值器简介和系统默认插值器
Android动画之插值器Interpolator自定义
Android动画之视图动画的缺点和属性动画的引入
Android动画之ValueAnimator用法和自定义估值器
Android动画之ObjectAnimator实现补间动画和ObjectAnimator自定义属性
Android动画之ObjectAnimator中ofXX函数全解析-自定义Property,TypeConverter,TypeEvaluator
Android动画之AnimatorSet联合动画用法
Android动画之LayoutTransition布局动画
Android动画之共享元素动画
Android动画之ViewPropertyAnimator(专用于view的属性动画)
Android动画之Activity切换动画overridePendingTransition实现和Theme Xml方式实现
Android动画之ActivityOptionsCompat概述
Android动画之场景变换Transition动画的使用
Android动画之Transition和TransitionManager使用
Android动画之圆形揭露动画Circular Reveal

1视图动画添加监听

translate 动画

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"android:fromXDelta="-300"android:toXDelta="500"android:fromYDelta="-300"android:toYDelta="1000"android:duration="3000"android:fillAfter="true">
</translate>

首先给控件添加点击事件:

imageView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(Main4Activity.this,"点击了控件",Toast.LENGTH_SHORT).show();}
});

Animation可以添加对动画的监听,可以监听动画的开始,结束,重复。
添加动画监听

mTranslateAnimation.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {//动画开始}@Overridepublic void onAnimationEnd(Animation animation) {//动画结束}@Overridepublic void onAnimationRepeat(Animation animation) {//动画重复}
});

在这里插入图片描述
从效果图可以看出,ImageView添加了点击事件,ImageView执行动画之后改变了自身的位置,但是再次点击ImageView点击事件却没有执行,点击ImageView初始的位置却触发了点击事件。

还有大家有没有发现一个问题,动画开始之后如何运行,我们是没法干涉的,只是知道动画开始执行,动画执行结束,动画重复执行。

2视图动画局限

视图动画的局限性:

  • 只能作用于view,但有时需求不是对于整个view的,而只是对view的某个属性的,例如颜色的变化,也无法对非View的对象进行动画处理。

  • 没有改变view的属性,只改变了view的视觉效果而已,只是修改了视图绘制的地方,而没有改变视图的本身。

  • 动画效果固定,动画类型只有四种,缩放,平移,旋转,透明度的基本动画,无法对其他属性进行操作。

  • 动画虽然可以添加监听,但是动画开始后无法对动画的执行过程进行控制。

3 属性动画的引入

属性动画在API11以后出现,是对Android动画的重要改进,弥补了视图动画存在的问题。

属性动画通过改变View的属性完成动画,利用setxxx()和getxxx()函数可以对Object的任意属性改变,从而可以实现视图动画实现不了的功能。可以通过在object中添加属性的set函数,在ondraw方法中操作属性就可以完成动画属性动画还支持监听动画过程,在动画过程中自己操作控件进行改变。

属性动画主要依靠ValueAnimator 和 ObjectAnimator 这两个类。

总结如下:
(1)属性动画比视图动画更强大,不但可以实现缩放、平移等操作,还可以自己定义动画效果。
(2)属性动画不但可以作用于View,还能作用于数值和Object。
(3)属性动画利用属性的改变实现动画,而视图动画仅仅改变了view的大小位置,但view真正的属性没有改变。
(4)属性动画监听动画的过程,在动画过程中或完成后做响应的动作,动画开始后,通过监听也可以改变动画的效果。

这篇关于Android动画之视图动画的缺点和属性动画的引入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/964523

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼