当前位置: 首页 > news >正文

android 给view添加进出动画

需求:

给view添加进出动画,从屏幕左侧进入,再从左侧退出

实现:

要在Android应用中为一个View添加从屏幕左边进入和退出的动画,你可以使用ViewPropertyAnimatorValueAnimator等动画机制来实现。以下是一个使用ViewPropertyAnimator的简单示例,展示如何创建一个从屏幕左边进入和退出的动画效果:

首先,在XML布局文件中定义你的View,以便在布局中使用。

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><Viewandroid:id="@+id/animatedView"android:layout_width="100dp"android:layout_height="100dp"android:background="#FF5733" />
</LinearLayout>

在你的Activity或Fragment中,获取对应的View,并创建进入和退出动画效果。

import android.animation.Animator;
import android.os.Bundle;
import android.view.View;
import android.view.ViewPropertyAnimator;
import android.view.animation.AccelerateDecelerateInterpolator;
import androidx.appcompat.app.AppCompatActivity;public class AnimationActivity extends AppCompatActivity {private View animatedView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_animation);animatedView = findViewById(R.id.animatedView);// 进入动画animateIn();}private void animateIn() {// 将View移出屏幕左侧animatedView.setTranslationX(-animatedView.getWidth());// 创建动画效果,移动View到初始位置animatedView.animate().translationX(0).setDuration(500) // 设置动画时长,单位为毫秒.setInterpolator(new AccelerateDecelerateInterpolator()).setListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {// 动画开始时的操作}@Overridepublic void onAnimationEnd(Animator animation) {// 动画结束时的操作,可以在这里显示ViewanimatedView.setVisibility(View.VISIBLE);// 启动退出动画animateOut();}@Overridepublic void onAnimationCancel(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}});}private void animateOut() {// 创建退出动画,将View移出屏幕左侧animatedView.animate().translationX(-animatedView.getWidth()).setDuration(500).setInterpolator(new AccelerateDecelerateInterpolator()).setListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {}@Overridepublic void onAnimationEnd(Animator animation) {// 动画结束后,可以在这里隐藏ViewanimatedView.setVisibility(View.GONE);}@Overridepublic void onAnimationCancel(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}});}
}

这个示例代码创建了一个简单的进入和退出动画效果,通过设置View的translationX属性实现左侧移入和移出的动画效果,并通过setListener方法监听动画的开始和结束,以在适当的时候显示或隐藏View。你可以根据需要调整动画的时长和插值器,以获得所需的效果。

相关文章:

  • 206. 反转链表、Leetcode的Python实现
  • 83. 删除排序链表中的重复元素、Leetcode的Python实现
  • nextcloud 安装配置教程
  • C#学习系列之密闭类、接口、结构和类
  • 栅栏密码fence cypher
  • springboot配置https
  • B. Stone Age Problem -思维
  • 省钱兄短剧短视频视频滑动播放模块源码支持微信小程序h5安卓IOS
  • 如何在Android设备上检查应用程序使用情况,包括使用时间
  • [推荐]SpringBoot,邮件发送附件含Excel文件(含源码)。
  • delete请求,express获取req.body失败
  • Flask 网站装潢, 简易更换模板
  • 第9章 为扩展 Micro SaaS 应用程序做好准备
  • 密码学 - SHA-2
  • 【React】03.脚手架的进阶应用
  • 收藏网友的 源程序下载网
  • java2019面试题北京
  • jdbc就是这么简单
  • JSDuck 与 AngularJS 融合技巧
  • maven工程打包jar以及java jar命令的classpath使用
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • nodejs:开发并发布一个nodejs包
  • Sass 快速入门教程
  • 高度不固定时垂直居中
  • 前嗅ForeSpider采集配置界面介绍
  • 浅谈web中前端模板引擎的使用
  • 我的面试准备过程--容器(更新中)
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • (10)ATF MMU转换表
  • (13):Silverlight 2 数据与通信之WebRequest
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (实战篇)如何缓存数据
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • .NET Core 成都线下面基会拉开序幕
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET中统一的存储过程调用方法(收藏)
  • [Avalon] Avalon中的Conditional Formatting.
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [CISCN 2023 初赛]go_session
  • [CLickhouse] 学习小计
  • [EFI]Acer Aspire A515-54g电脑 Hackintosh 黑苹果efi引导文件
  • [JavaScript]如何讓IE9, IE8, IE7, IE6關閉視窗時不彈出對話訊息
  • [JavaWeb]—前端篇
  • [jQuery]10 Things I Learned from the jQuery Source
  • [Linux] - 定时任务crontab
  • [Linux] MySQL数据库之索引
  • [MSSQL]GROUPING SETS,ROLLUP,CUBE初体验
  • [pytorch入门] 3. torchvision中的transforms
  • [Salesforce组件开发][LWC] 弹出框开发
  • [SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务
  • [StartingPoint][Tier1]Pennyworth
  • [Web开发] 检测IE版本号的方法总结