首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Android中为视图设置动画并使其保持新的位置/大小?

在Android中为视图设置动画并使其保持新的位置/大小,可以使用以下方法:

  1. 使用ViewPropertyAnimator

ViewPropertyAnimator是一个用于创建和执行视图属性动画的类。它允许您在动画期间更改视图的位置、大小、透明度等属性。以下是一个示例:

代码语言:java
复制
View view = findViewById(R.id.my_view);
view.animate()
    .translationX(newPositionX)
    .translationY(newPositionY)
    .scaleX(newScaleX)
    .scaleY(newScaleY)
    .setDuration(animationDuration)
    .start();

在这个例子中,newPositionXnewPositionY是视图在动画结束后的新位置,newScaleXnewScaleY是视图在动画结束后的新大小,animationDuration是动画的持续时间(以毫秒为单位)。

  1. 使用ObjectAnimator

ObjectAnimator是一个用于创建和执行对象动画的类。它允许您更改视图的位置、大小、透明度等属性。以下是一个示例:

代码语言:java
复制
View view = findViewById(R.id.my_view);
ObjectAnimator animatorX = ObjectAnimator.ofFloat(view, "translationX", newPositionX);
ObjectAnimator animatorY = ObjectAnimator.ofFloat(view, "translationY", newPositionY);
ObjectAnimator animatorScaleX = ObjectAnimator.ofFloat(view, "scaleX", newScaleX);
ObjectAnimator animatorScaleY = ObjectAnimator.ofFloat(view, "scaleY", newScaleY);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(animatorX, animatorY, animatorScaleX, animatorScaleY);
animatorSet.setDuration(animationDuration);
animatorSet.start();

在这个例子中,newPositionXnewPositionY是视图在动画结束后的新位置,newScaleXnewScaleY是视图在动画结束后的新大小,animationDuration是动画的持续时间(以毫秒为单位)。

  1. 使用TransitionManager

TransitionManager是一个用于管理场景过渡动画的类。它允许您在更改视图的位置、大小、透明度等属性时创建自然的过渡效果。以下是一个示例:

代码语言:java
复制
View view = findViewById(R.id.my_view);
TransitionManager.go(new Scene(view), new ChangeBounds().setDuration(animationDuration));

在这个例子中,animationDuration是动画的持续时间(以毫秒为单位)。

请注意,这些方法不会自动保持视图在动画结束后的新位置/大小。要实现这一点,您需要在动画结束后手动更新视图的布局参数。例如,您可以使用ViewGroup.MarginLayoutParams来更新视图的布局参数:

代码语言:java
复制
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
layoutParams.leftMargin = newPositionX;
layoutParams.topMargin = newPositionY;
layoutParams.width = newWidth;
layoutParams.height = newHeight;
view.setLayoutParams(layoutParams);

这里的newWidthnewHeight是视图在动画结束后的新大小。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

带你领略 ConstraintLayout 1.1 的新功能

在 1.1 版本中,我们已经修复了链条的一些问题,并使它们能够处理更多的视图。您可以通过在两边添加约束来生成一个链条。例如在下面这个动画中,每个视图之间都有一个约束。 ?...app:layout_constraintVertical_chainStyle 属性可以作用于链条中的任何视图。 您可以设置它的值为 spread,spread_inside 或者 packed。...spread:均匀分配链中的所有视图 spread_inside:将第一个元素和最后一个元素放置在边缘上,并均匀分布其余元素 packed:将元素包裹在链条的中心 屏障 如果您有几个视图会在运行时更改大小...要使其具有动画效果,请使用 support library 中的 TransitionManager.beginDelayedTransition() 方法。...它可以设置为以下内容: barriers:找出屏障所在,并用简单的约束取代它们 direct:优化那些直接连接到固定元素的元素,例如屏幕边缘或引导线,并继续优化直接连接到它们的任何元素。

1.5K20

带你领略 ConstraintLayout 1.1 的新功能前言带你领略 ConstraintLayout 1.1 的新功能

在 1.1 版本中,我们已经修复了链条的一些问题,并使它们能够处理更多的视图。您可以通过在两边添加约束来生成一个链条。例如在下面这个动画中,每个视图之间都有一个约束。 ?...您可以设置它的值为 spread,spread_inside 或者 packed。...spread:均匀分配链中的所有视图 spread_inside:将第一个元素和最后一个元素放置在边缘上,并均匀分布其余元素 packed:将元素包裹在链条的中心 屏障 如果您有几个视图会在运行时更改大小...要使其具有动画效果,请使用 support library 中的 TransitionManager.beginDelayedTransition() 方法。...它可以设置为以下内容: barriers:找出屏障所在,并用简单的约束取代它们 direct:优化那些直接连接到固定元素的元素,例如屏幕边缘或引导线,并继续优化直接连接到它们的任何元素。

1.7K20
  • 探索 MotionLayout 动画世界

    touchAnchorId :可以滑动并拖动的视图id(目标视图)。 touchAnchorSide :定义触摸点在目标视图中的位置。 top :触摸点位于目标视图上方。...sizePercent :定义宽度和高度的百分比。可以设置为 0 到 1 之间的浮点数,表示相对于视图父级的百分比。 KeyAttribute 指定动画序列中特定时刻的视图属性。...如设置动画到一半时透明度为0.2,缩放为原控件的0.2倍: <KeyAttribute motion:framePosition=...Constraint元素中我们可以设置控件的大小并使用ConstraintLayout的属性来设置控件位置。...需要在开始和结束的两个Constraint中为控件设置大小,即使控件大小没有改变也需要在两边都设置好大小。 然后设置开始和结束状态,动画执行时间。

    17810

    在React Native中构建启动屏

    在这个教程中,我们将演示如何在React Native中构建一个启动屏幕。我们将指导你如何使用 react-native-splash-screen 为iOS和Android应用构建出色的欢迎界面。...完成后的应用将如下图所示 为什么启动画面的图片大小很重要 为移动应用创建启动画面可能会有些棘手,你肯定不希望由于启动画面分辨率的不一致在某些设备上出现显示问题。例如,安卓设备的需求与iOS完全不同。...将内容模式设置为“aspect fit”,如下所示: 更改iOS启动屏幕颜色 你可能会问的下一个问题是“我如何在 React Native 中更改启动屏幕的背景颜色?”...为了在 iOS 中为启动屏幕强制使用一致的背景,滚动到背景设置位置并从下拉菜单中选择 Custom。在弹出窗口中,选择启动屏幕的期望颜色。...启动画面有助于强化应用程序的身份,使其容易被用户识别,从而提高品牌建设。 通常,某些配置和资源(如字体和检查更新)会在应用准备就绪时立即实施。

    63210

    5个Android 手势和动画方面深度面试题

    面试题目1:解释Android中手势检测的工作原理。 解答: Android中的手势检测通常依赖于触摸事件的传递和处理。...1、 事件分发: dispatchTouchEvent:在视图组(如ViewGroup)中调用,用于分发触摸事件。...通过分析MotionEvent中的数据(如位置、时间、动作等)来实现更复杂的手势识别。 面试题目2:描述如何在Android中实现一个自定义手势识别器。...适用于更复杂的动画效果,如颜色变化、路径动画等。 面试题目4:描述如何使用Android的属性动画实现一个视图的路径动画。...3、 设置动画路径: 使用PathEvaluator将路径设置到动画中。 4、 启动动画: 将属性动画应用到视图上并启动。

    6610

    【愚公系列】《AIGC辅助软件开发》013-AI辅助客户端编程:AI辅助 iOS 应用开发

    - **过渡效果**:学习如何在视图之间添加过渡效果,如淡入淡出、缩放等。 **实践**: - 在按钮点击时,添加一个视图出现或消失的动画。 - 为列表中的项目添加删除动画。### 4....- **foregroundColor()**: 设置文本或图像的前景色。- **font()**: 设置字体样式和大小。- **cornerRadius()**: 为视图添加圆角。...文本的视图。- `.padding()`: 为文本添加内边距,使其周围有一些空白区域。...使用 `ZStack` 来覆盖内容`ZStack` 可以让视图层叠显示,通过将一个视图放在 `ZStack` 的顶层并指定其位置,可以实现置顶显示。...3D LUT,并指定输出的亮度等级为 1000 nits,可以帮助保持色彩的准确性和亮度的平衡。

    9010

    Unity Demo教程系列——Unity塔防游戏(六)动画(Lively Enemies)

    这向我们展示了用于在关键帧之间插入的曲线。你可以通过改变滚动条的大小来放大。然后在0:00点为Y选择关键点,并向上拖动它的切线,直到看起来合适为止。在1的位置对关键帧做同样的操作。...另外,通过将其垂直位置增加到1.25并将其Y旋转设置为360°,使其生动活泼。 ? (Intro进入动画) ?...它将当前剪辑的权重设置为零(以防你稍后在Intro和移动之间插入动画),而将移动剪辑的权重设置为1,设置速度,并更新当前剪辑。...添加一个BeginTransition方法,以下一个剪辑的枚举值作为参数。它需要使当前剪辑与前一个剪辑相同,设置新的当前剪辑,将过渡进程设置为零,并播放当前剪辑。 ?...(带有动画过渡) 5 将死的敌人 Intro, move,outro动画现在可以正常工作并融合。下一步是为敌人死亡时添加动画。 5.1 死亡动画 为将死的敌人创建新的动画。

    2.3K20

    Android中21种drawable标签大全

    Level 19(Android 4.4)才添加的属性 在某些语言下如阿拉伯语习惯是从右到左,在manifest的application中需要设置android:supportsRtl,另外在组件中还有两个相关属性...android:constantSize 当选择器各个状态的图片大小不一时,设置为 true表示以最大的图片的尺寸显示,设置为false以默认的图片的尺寸显示 子标签 item 该标签下可以定义drawable...浮点数表示相对于drawable的左边缘距离单位为px,如5; 百分比表示相对于drawable的左边缘距离按百分比计算,如5%; 另一种百分比表示相对于父容器的左边缘,如5%p; 一般设置为50%表示在...:gravity 设置裁剪的位置,可取值如下,多个取值用 | 分隔: top:图片放于容器顶部,不改变图片大小。...当裁剪方向为horizontal,会裁掉图片左边部分 center:图片放于容器中心位置,包括水平和垂直方向,不改变图片大小。

    2.5K20

    Android 9.0 强势来袭,带来了哪些新特性?

    设备必须启用位置服务并启用Wi-Fi扫描(在 “设置”>“位置”下),APP必须拥有该 ACCESS_FINE_LOCATION权限。设备无需连接到接入点即可使用RTT。...为了保持隐私,只有手机能够确定到接入点的距离; 接入点没有此信息。 如果我们的设备测量到3个或更多接入点的距离,我们可以使用多点定位算法来估算最适合这些测量的设备位置。结果通常在1至2米范围内准确。...通过这种准确性,我可以构建新的功能体验,例如室内导航和细粒度的基于位置的服务。...我们可以使用不同的方法来设置图像属性: 要将解码图像缩放到精确大小,请将目标尺寸传递到 setTargetSize()。您还可以使用样本大小缩放图像。...我们建议您在应用的所有关键活动中查看旋转行为,并确保所有屏幕方向设置仍然提供最佳体验。

    3.5K20

    Jetpack Compose Beta 版现已发布!

    时机正好,不妨趁现在开始学习 Compose,并着手规划今年 1.0 版发布之后,您将如何在接下来的项目或功能中使用该工具包。...) 及设备或模拟器上实时更新文字 动画预览: 检查并播放动画 布局检查器中的 Compose 支持 交互式预览: 检查并与单独的 Composable 交互 部署预览: 无需完整应用即可在您的设备上部署...旨在与 Android 视图无缝协作,便于您按照自己的节奏应用该工具包。...这样,我们就能更轻松地编写代码,将异步事件 (如触发动画的手势) 与结构化并发提供的取消和清理相结合。...现在时机正好,不妨开始学习 Jetpack Compose,并规划如何在接下来的项目中使用该工具包。

    5.6K10

    Android Studio 新特性详解

    接下来,我们将会为您详细介绍此版本的代表功能与改进,并带您一窥我们为未来版本的 Android Studio 所开发的最新功能。...在本例中,gradle.properties 文件中还设置了 android.enableJetifier=true,这一环境变量用于将依赖库中的 Support 包迁移为等效的 Android X 软件包...这部分的显示使用了颜色编码,当前帧对应的颜色为紫色,在等待 GPU 和组合的位置显示了相同的紫色条。我们只要将视图缩小一些,就可以看到它何时出现在屏幕上。...我们还在探索一项功能,以便您更轻松地在 Design 界面中测试动画效果,而无需在实体设备上运行项目。在前文中,您已经看到如何在 Design 界面中播放动画。...除了前文介绍的内容外,该版本还加入了 IntelliJ IDEA 2021.2 中所包含的新功能、为 Android 12L 所提供的可调整大小的模拟器等许多功能。受篇幅所限,不能一一为您介绍。

    2.8K20

    备战金九银十:BAT大厂最爱问的Android核心面试百题详细解析!

    5.Android中动画 Android中动画分别帧动画、补间动画和属性动画(Android 3.0以后的) 帧动画 帧动画是最容易实现的一种动画,这种动画更多的依赖于完善的UI资源,他的原理就是将一张张单独的图片连贯的进行播放...除此之外,ValueAnimator还负责管理动画的播放次数、播放模式、以及对动画设置监听器等。 6.Android中4大组件 1....基于view视图进行拓展的视图类,更适合2D游戏的开发,是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快。...所以需要通过 listview 中的item 数量去计算listview的显示高度,从而使其完整展示。...开始定位,Application持有一个全局的公共位置对象,然后隔一定时间自动刷新位置,每次刷新成功都把新的位置信息赋值到全局的位置对象, 然后每个需要使用位置请求的地方都使用全局的位置信息进行请求。

    1.2K31

    ARKit 的配置-在您的AR项目的幕后

    在本节中,我们将看看如何在后面配置提供的ARKit模板。我们将发现什么是世界跟踪和AR会话。同样,我们将学习如何将一些调试选项应用于场景中的指导。...您可以通过添加标签,按钮和其他对象等对象来自定义此视图,并轻松编辑其属性而无需触及代码。您还可以添加其他视图并管理它们之间的链接。基本上,故事板是设计师最好的朋友。...世界跟踪配置 在ViewWillAppear中,设置了ARKit的重要配置。 该ARWorldTrackingConfiguration通过使用其照相机赠送设备的位置和方向,以及它的运动,并将此。...统计信息提供有关场景渲染性能的信息,如每秒帧数(fps),动画,物理等.Apple建议将fps设置为60.在您的设备上,您可以单击+按钮展开统计栏更多细节。...世界原点 世界原点是视图加载时摄像机的起始位置。您可以使用箭头看到它,就像在场景编辑器中一样。如果您四处移动,会话会记住该位置,使其保持静止。 ? 世界起源 特征点 你看到小黄点?

    2.5K20

    Android 中的属性动画 --- 1(基本用法)

    在 Android 3.0 之前,视图动画几乎承担了所有的动画效果,但是视图动画有一个很大的局限性:它改变的只是某个 View 的外观。但是响应事件位置并没有随着 View 的改变而改变。...举个 case 来说,现在有一个按钮通过视图动画在 x 轴方向上向右移动了 200 px(像素) 的距离,按钮显示的位置虽然改变了,但是点击移动后的按钮并不能相应点击事件,只有点击这个按钮没有移动之前的位置才能响应这个按钮的点击事件...由于这个巨大的局限性,Google 在 Android 3.0 以上添加了一个新的动画框架:属性动画。下面来一起看一下属性动画的用法: 如果你熟悉视图动画的使用方法,那么属性动画的用法一定没问题。...轴上平移到距离对象 x 轴初始位置为 +200 px 的位置, * 然后再从这个位置移动到距离对象初始位置 x 轴方向上 -100 px 的位置, * 这里的数字都是以对象的初始位置作为参考...属性动画当然也能在在 xml 文件中声明。如何在 xml 文件中声明属性动画呢?

    1.2K20

    2018年最优秀的9个Android Material Design Apps!

    网站或手机端所展现的摄影是其中一个明确的焦点,为用户提供了许多可以选择的机会。另外,Android和iOS版本中都保留了底部导航栏的设计,使其在各个平台上保持一致和舒适。 2. Gmail ?...其中提到,为了与最近的网络改版相匹配,移动版Gmail将在收件箱视图中获得传统的桌面功能,如密度选项和快速附件。 3. ...作为2017年谷歌材料设计奖得主之一,momondo的安卓应用程序很好的展示了如何在手机应用程序中体现材料设计的基本原理。并且,跟随谷歌材料设计这个主题,也在不断激发新的安卓手机应用设计方向。...大而有吸引力的照片吸引用户点击并学习新食谱。给用户提供这样的一个布局体验其实并不是一个单独的决定,而是由一系列用户体验的细节共同构成的。...我们使用动画来消除事件创建过程中的步骤,并帮助使体验更加无摩擦。” - Thomas Censani,产品设计总监 总结: 去年,摹客团队为大家整理了10款Android界面设计。

    1.8K40

    Android样式的开发:View Animation篇

    视图动画比较简单,只能应用于各种View,可以做一些位置、大小、旋转和透明度的简单转变。...android:fromAlpha 动画开始时的透明度,0.0为全透明,1.0为不透明,默认为1.0 android:toAlpha 动画结束时的透明度,0.0为全透明,1.0为不透明,默认为1.0 当设置开始时透明度为...设为true,则动画只在窗口运行,壁纸背景保持不变 android:fillAfter 设置为true时,动画执行完后,View会停留在动画的最后一帧;默认为false;如果是动画集,需在标签中设置该属性才有效...设置动画执行之前的等待时长,毫秒为单位;重复执行时,每次执行前同样也会等待一段时间 android:zAdjustment 表示被设置动画的内容在动画运行时在Z轴上的位置,取值为以下三个值之一:...normal 默认值,保持内容在Z轴上的位置不变 top 保持在Z周最上层 bottom* 保持在Z轴最下层 android:interpolator 设置动画速率的变化,比如加速、减速、匀速等

    1K20

    Android 动画:手把手教你使用 补间动画 (视图动画)

    "50%" // 缩放轴点的y坐标 // 轴点 = 视图缩放的中心点 // pivotX pivotY,可取值为数字,百分比,或者百分比p // 设置为数字时(如50),轴点为...// 设置为百分比时(如50%),轴点为View的左上角的原点在x方向加上自身宽度50%和y方向自身高度50%的点。...:pivotY="0" // 旋转轴点的y坐标 // 轴点 = 视图缩放的中心点 // pivotX pivotY,可取值为数字,百分比,或者百分比p // 设置为数字时(如50),轴点为...// 设置为百分比时(如50%),轴点为View的左上角的原点在x方向加上自身宽度50%和y方向自身高度50%的点。...但是由于此处rotate旋转动画里已设置repeatCount为infinite,所以动画不会结束,也就看不到重播和回复原位 步骤3:在Java代码中创建Animation对象并播放动画

    2.7K20

    Flutter 中渲染3D 模型

    支持具有可配置自动播放设置的动画模型。 (可选)它支持将模型启动到AR查看器中。 可以选择以可配置的延迟自动旋转模型。 支持小部件的可配置背景色。...**arScale:**此参数用于控制Scene Viewer在AR模式下的缩放行为。设置为“固定”以使模型的缩放比例失效,从而将其始终设置为100%缩放比例。默认为“自动”,这允许调整模型的大小。...Android 9(API级别28)将默认设置android:usesCleartextTraffic从更改true为false....在lib文件夹下创建一个新的dart文件:demo_view.dart 在主体中,我们将添加ModelViewer()。...;自动播放是指如果设置为true并且模型具有动画,则设置此属性后,动画将自动开始播放。

    25.4K20

    Android:这是一份全面 & 详细的补间动画使用教程

    "50%" // 缩放轴点的y坐标 // 轴点 = 视图缩放的中心点 // pivotX pivotY,可取值为数字,百分比,或者百分比p // 设置为数字时(如50),轴点为...// 设置为百分比时(如50%),轴点为View的左上角的原点在x方向加上自身宽度50%和y方向自身高度50%的点。...:pivotY="0" // 旋转轴点的y坐标 // 轴点 = 视图缩放的中心点 // pivotX pivotY,可取值为数字,百分比,或者百分比p // 设置为数字时(如50),轴点为...// 设置为百分比时(如50%),轴点为View的左上角的原点在x方向加上自身宽度50%和y方向自身高度50%的点。...但是由于此处rotate旋转动画里已设置repeatCount为infinite,所以动画不会结束,也就看不到重播和回复原位 步骤3:在Java代码中创建Animation对象并播放动画

    1.9K20
    领券