Android:动画位置完成后重置

2023-12-08

我正在使用 xml 定义的动画将视图滑出屏幕。问题是,动画一完成,它就会重置到原始位置。我需要知道如何解决这个问题。这是 XML:

<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
   <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="500"/></set>

这是我用来调用它的 Java:

    homeScrn = (View)findViewById(R.id.homescreen);
    slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);

    //Set Click Listeners For Menu
    btnHelp.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            LayoutInflater.from(getApplicationContext()).inflate(R.layout.help, (ViewGroup)findViewById(R.id.subpage), true);
            homeScrn.startAnimation(slideLeftOut);
        }
    });

所以基本上发生的事情是我在一个视图下面膨胀了一个视图。然后我将顶部的视图动画化到左侧。一旦它离开屏幕并且动画完成,它就会重置其位置。


终于找到了解决方法,正确的方法是setFillAfter(true),

如果你想在 xml 中定义你的动画那么你应该做这样的事情

<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:anim/decelerate_interpolator"
     android:fillAfter="true">

    <translate 
        android:fromXDelta="0%"
        android:toXDelta="-100%"
        android:duration="1000"/>

</set>

你可以看到我已经定义了filterAfter="true" in the set标签,如果您尝试在中定义它translate标记它不起作用,可能是bug在框架内!!

然后在代码中

Animation anim = AnimationUtils.loadAnimation(this, R.anim.slide_out);
someView.startAnimation(anim);

OR

TranslateAnimation animation = new TranslateAnimation(-90, 150, 0, 0);

animation.setFillAfter(true);

animation.setDuration(1800);

someView.startAnimation(animation);

那么它一定会起作用!

现在这有点棘手,看起来视图实际上移动到了新位置,但实际上视图的像素被移动,即您的视图实际上位于其初始位置但不可见,如果有一些按钮,您可以测试它或视图中的可点击视图(在我的情况下是布局),要修复您必须手动将视图/布局移动到新位置的问题

public TranslateAnimation (float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

new TranslateAnimation(-90, 150, 0, 0);

现在我们可以看到我们的动画将从 -90 x 轴到 150 x 轴开始

所以我们要做的是设定

someView.setAnimationListener(this);

and in

public void onAnimationEnd(Animation animation)
{
   someView.layout(150, 0, someView.getWidth() + 150, someView.getHeight());
}

现在让我解释一下public void layout (int left, int top, int right, int botton)

它将您的布局移动到新位置第一个参数定义左侧,即我们所在的位置150,因为翻译动画使我们的视图动画化150 x 轴, top is 0因为我们还没有对 y 轴进行动画处理,现在我们已经完成了someView.getWidth() + 150基本上我们得到了视图的宽度并添加了150因为我们的左边现在移动到150 x 轴使视图宽度恢复到原来的宽度,底部等于视图的高度。

我希望你们现在了解翻译的概念,并且您仍然有任何问题可以立即在评论部分提出,我很乐意提供帮助:)

EDIT不要使用layout()方法,因为当视图无效并且您的更改不会保留时,框架可以调用它,请使用LayoutParams根据您的要求设置布局参数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:动画位置完成后重置 的相关文章

  • 发生存储异常。无法在firebase中上传图片

    在我能够更改图像并将其上传到 firebase 之前 这段代码就可以工作 但现在我突然收到此错误 我不知道问题是什么 public class SettingsActivity extends AppCompatActivity priva
  • 更改首选项的背景颜色

    我有一个PreferenceCategory xml 文件 我已经在其中定义了所有首选项 我从扩展的类中调用它PreferenceActivity 我无法设置设置屏幕的背景 该屏幕是在如下所示的 xml 文件的帮助下显示的 请看我已经定义了
  • 如何使用 Android 版 Facebook 同步的联系人图片

    我的手机上安装了 Android 版 Facebook 它会自动将联系人列表中人员的 FB 个人资料图片同步到我的手机 我想在我访问的应用程序中使用这些图片ContactsContract PhoneLookup 我真的需要 Faceboo
  • 更改操作栏标题文本颜色

    我正在尝试更改 ActionBar 中标题文本的颜色 但我似乎无法让它工作 这是我尝试使用的风格 在我的应用程序主题中我使用titleTextStyle
  • 如何在 StateListDrawable 中设置可绘制对象的 alpha 值?

    我想在按下时更改可绘制对象的 alpha 值 因此 我创建了两个可绘制对象并将它们放入 StateListDrawable 中 并设置按下状态的 alpha 值 但它就是行不通 StateListDrawable content new S
  • Sqlite 查询检查 - 小于和大于

    return mDb query DATABASE TABLE new String KEY ROWID KEY LEVEL KEY LEVEL gt 3 lt 5 null null null null 我究竟做错了什么 它返回的值全部高
  • 任务“:app:checkReleaseDuplicateClasses”执行失败

    我的 React Native Android 构建中突然出现构建问题 令人惊讶的是 它是早上建好的 没有做任何改变 但突然就失败了 这就是我得到的错误 知道为什么会发生这种情况吗 在 stack 和 GitHub 中也看到了一些类似的问题
  • Android 上通过 JSCH 的基本 SSH 连接

    作为来自此的用户question https stackoverflow com questions 14323661 simple ssh connect with jsch和这个tutorial http eridem net andr
  • 如何从静态快捷方式启动活动的现有实例

    我的应用程序中有一个活动 MainActivity 并且有一个静态快捷方式 指向 TempActivity 由于静态快捷方式将始终设置 FLAG ACTIVITY NEW TASK 和 FLAG ACTIVITY CLEAR TASK 因此
  • 明文 HTTP 流量...不允许

    我的程序从用户那里获取一个 URL 因此它可以向互联网上的任何网站发出请求 我试图让这成为可能 我查找了有关 Android HTTP Cleartext 错误的所有答案 并做了这个 但它仍然不允许我连接我的测试本地 PHP 服务器 我在这
  • 在 Android 中关闭 Spinner 中的下拉菜单

    在 Android 中打开和关闭微调器时 我需要为箭头图标设置动画 打开微调器时我可以旋转箭头 我只是放了一个setOnTouchListener on the Spinner 当下拉菜单关闭或隐藏时 问题就来了 因为我不知道如何在该操作上
  • 使用 POST 将数据从 Android 发送到 AppEngine Datastore

    抱歉 如果这是一个简单的问题 但我只是不知道我应该做什么 而且我认为我有点超出了我的深度 我想将数据从 Android 应用程序发送到在 Google App Engine 上运行的应用程序 数据必须从那里写入数据存储区 我的数据主要采用对
  • 将 ArrayList 保存在捆绑包 savingInstanceState 中

    ArrayList 是在类级别定义的 这些是我保存的实例方法 Override protected void onSaveInstanceState Bundle outState super onSaveInstanceState out
  • 将搜索结果更新为 Android 中的 Lazy Adapter

    我有项目列表 想为其实现搜索功能 因此 我有一个带有 addTextChangedListener 的文本框 搜索结果运行良好 但当我尝试将结果设置为 ListView 时 新结果将附加到旧结果中 我正在使用惰性适配器 如何清除适配器中的旧
  • MAT(Eclipse 内存分析器)- 如何从内存转储中查看位图

    I m analyzing memory usage of my Android app with help of Eclipse Memory Analyzer http www eclipse org mat also known as
  • BluetoothLeScanner 服务内部问题

    Update从Android 10以上我认为你需要ACCESS BACKGROUND LOCATION权限 因此 如果此代码在最新的 Android 版本上不起作用 就是针对此问题的 ACCESS BACKGROUND LOCATION 受
  • 改造Android基本且简单的问题

    我的服务器返回简单的 Json 结果 如下所示 message Upload Success 我正在尝试将结果放入改造模型类中 public class MyResponse SerializedName message String me
  • 协程和 Firebase:如何实现类似 Javascript 的 Promise.all()

    在 Javascript 中 您可以同时启动两个 或更多 异步任务 等待它们完成 然后执行某些操作 继续 const firstReturn secondReturn await Promise all firstPromise secon
  • 在android中的日期选择器对话框中显示当前日期

    我多次尝试在日期选择器对话框中显示当前日期 但失败了 它显示 1 1 1990 我已经遵循了堆栈溢出的一些答案 但不幸的是这些对我不起作用 谁能解释一下在日期选择器对话框中显示当前日期的代码 谢谢 It may help you publi
  • Android 中带有无尽列表视图滚动的 AsyncTask

    我正在创建一个应用程序 其中我需要有无限的滚动列表视图 我不想在我的应用程序中使用任何库 我在网上看到了一些有助于实现此类列表视图的示例 但我的疑问是 当我的数据来自服务器并在异步任务中进行解析时 如何才能拥有无尽的列表视图 如何从滚动异步

随机推荐

  • .htaccess 导致所有页面被下载

    我添加了以下行 htaccess AddType application x httpd php html htm 当我尝试加载侧面的任何页面时 我的浏览器会尝试下载该页面 我究竟做错了什么 Thanks 最有可能的 您没有为您的网络服务器
  • 将 JLabels 置于 JPanel 中心

    我正在制作一个记分程序 但遇到了问题 我试图做的是在顶部有一个 JPanel 其中包含两个 JPanel 而 JPanel 又包含两个团队名称 我很困惑为什么程序顶部的两个 JLabel 没有位于它们所包含的 JPanel 内部的中心 im
  • c_str 的使用是否带有异常未定义行为?

    我见过几个类似的代码片段 如下所示 struct MyExcept std exception explicit MyExcept const char m noexcept message m const char what const
  • 如何运行在关闭 PuTTY SSH 会话后仍然运行的 Linux 命令?

    我通过 putty 连接到我的 NAS 它在上面运行 Linux 我想将一个大目录从一个位置移动到另一个位置 关闭 Putty 会话后是否可以保持进程运行 我担心如果我关闭腻子 文件将不会被复制到最后 使用 nohup 开始任务 并使用 将
  • jQuery ui 选项卡中的多个 jQgrid

    我遇到一个问题需要帮助 我有 3 个 jQueryUI 选项卡 第一个包含项目网格 第二个保存工单网格 第三个只是发出警报以验证显示功能是否正常工作 问题是我在第二个选项卡上没有网格 第一个负载正常 如果我注释掉第一个选项卡的代码 第二个网
  • Ruby on Rails:自定义操作

    我是rails新手 所以我向你解释一下我的情况 我有一个用户模型和一个用户控制器 用户使用电子邮件地址和密码登录 特殊用户可以通过在表单中 输入受邀者的电子邮件地址并点击提交来邀请其他用户 然后 受邀用户会收到一封邮件 其中包含用于激活其帐
  • MySQL RAND() 种子值几乎重复

    在 Windows 7 上使用 MySQL 5 6 21 我试图从按日期播种的表中返回 随机 行 因此同一行返回当天 然后切换第二天等 如果您愿意 可以是 当天生成器的随机引用 我注意到相同的行不断出现 因此我将查询简化为基础 看来 RAN
  • GO - WaitGroups 参考中的指针或变量

    根据sync包中的以下函数声明 添加 gt func wg WaitGroup Add delta int 完成 gt func wg WaitGroup Done 等待 gt func wg WaitGroup Wait 我知道它们都是由
  • 如何自动启动 Android 应用程序?

    我不确定如何在 Android 模拟器完成启动后自动启动 Android 应用程序 有人有任何代码片段可以帮助我吗 您必须添加清单权限条目
  • JPA @EmbeddedId:如何更新复合主键的一部分?

    我有一个多对多关系 其中链接表有一个附加属性 因此 链接表也由实体类表示 称为Composition 主键为Composition is an Embeddable链接到相应的实体 例如 2 ManyToOne参考 用户在选择两个引用中的任
  • 通过对其他列数据进行随机采样来创建新列

    我想通过从剩余列中随机采样数据来创建一个新列 考虑一个具有 N 列的数据框 如下所示 Column 1 Column 2 Column N 0 37 0 8 0 0
  • HTML 助手值得与复杂的标记一起使用吗?

    我应该坚持使用 HTML 助手 还是只使用纯 HTML 我使用 HTML 助手已经有一段时间了 并且非常喜欢使用它们 最近我开始使用 CSS 框架 例如推特引导程序我发现我的标记太复杂 无法使用标准 HTML 帮助程序 当然我还是用Url
  • 在 Shiny 中使用多个 tabPanel 时如何包含 showModal 和 modalDialog (如弹出窗口)

    我正在努力创建一个由多个选项卡组成的闪亮窗口 每个选项卡内都有一个下面的表单shinysurveys可以被填满 应用程序设计的代码可以显示选项卡及其内容 为了使应用程序提供更多信息 我想添加一条在每次单击 Tab1 时出现的消息 并且由于
  • 如何将字符串(例如“iso-8859-1”)转换为其 String.Encoding 对应项?

    从 Swift 发送 HTTP 请求后 我在响应中得到一个名为textEncodingName 我想转换data我还收到了一个包含其内容的字符串 为此 我使用String data data encoding utf8 这在大多数情况下都有
  • 如何在Android应用程序被杀死之前执行代码

    我有一个连接到周围设备的 Android 应用程序当前运行相同的应用程序 即使在后台 为此 我使用 WiFI Direct 来宣传我当前正在运行所述应用程序的事实 因此 一旦应用程序被终止 我就需要停止广告 onDestroy 无法使用 因
  • 如何将输入 File 对象序列化为 JSON?

    我想将 HTML 输入文件转换为 JSON 字符串 如下所示 var jsonString JSON stringify file console log file console log jsonString 现在 在我的 Firebug
  • 如何从类中访问Python模块的私有变量

    在 Python 3 中 为类变量添加前缀使其成为私有的 通过修改类中的名称 如何访问类中的模块变量 例如 以下两种方法不起作用 a 3 class B def init self self a a b B 结果是 Traceback mo
  • Http 响应文件下载在 Internet Explorer 和 Chrome 中不起作用(C#、Asp.net)

    我用 C asp net 编写了一个文件下载方法 用于将文件从服务器下载到客户端计算机 我写了以下代码 Response ContentType ReturnExtension System IO Path GetExtension fil
  • 将分隔字符串传递给存储过程以搜索数据库

    如何将由空格或逗号分隔的字符串传递给存储过程和过滤结果 我正在尝试做类似的事情 Parameter Value keywords key1 key2 key3 然后是我首先要的存储过程 查找所有包含第一个或最后一个的记录 名称如 key1
  • Android:动画位置完成后重置

    我正在使用 xml 定义的动画将视图滑出屏幕 问题是 动画一完成 它就会重置到原始位置 我需要知道如何解决这个问题 这是 XML