最近在调试android 动画时候发现一个很奇怪问题,网上搜索都说TranslateAnimation 动画运行后,实际位置要在动画结束的监听里面重新设置才会正确,不然物体位置还是在原位。

我根据网上所说之动画监听里面添加了动画结束监听,设置了物体到新位置,发现物体在视图里面还是错位,

后来经过调试发现,必须在动画结束时候移除动画,然后重新设置位置才会正确

AnimationSet set = new AnimationSet(true);
set.addAnimation(translateAnimation);
set.addAnimation(alpha);
set.setDuration(1000);
set.setFillAfter(true);
texas.startAnimation(set);

set.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {

}

@Override
public void onAnimationEnd(Animation animation) {

texas.clearAnimation();// 增加这句后,重新设置位置,物体才会移动正确
Log.d(TAG,"end Top:" + texas.getTop() + ",Y:" + texas.getY());

RelativeLayout.LayoutParams paramsTexas = new RelativeLayout.LayoutParams(30,30);
paramsTexas.addRule(RelativeLayout.ALIGN_PARENT_TOP);
paramsTexas.addRule(RelativeLayout.ALIGN_PARENT_LEFT);

if(targetdirect == 0)
{
paramsTexas.setMargins(gridLayout.getLeft() + left + playerPanel.getWidth() / 2,(top + playerPanel.getHeight() + 40),0,0);
}
if(targetdirect == 1)
{
paramsTexas.setMargins((left - 40),top + playerPanel.getHeight() / 2,0,0);
}
if(targetdirect == 2)
{
paramsTexas.setMargins(gridLayout.getLeft() + left + playerPanel.getWidth() / 2,top - 60,0,0);
}
if(targetdirect == 3)
{
paramsTexas.setMargins(gridLayout.getLeft() + left + playerPanel.getWidth() + 40,top + playerPanel.getHeight()/2,0,0);
}
texas.setLayoutParams(paramsTexas);

}

@Override
public void onAnimationRepeat(Animation animation) {

}
});

TranslateAnimation 运行动画后实际位置不正确问题的更多相关文章

  1. 每日一问:到底为什么属性动画后 View 在新位置还能响应事件

    在 Android 开发中,我们难免会使用动画来处理各种各样的动画效果,以满足 UI 的高逼格设计.对于比较复杂的动画效果,我们通常会采用著名的开源库:lottie-android,或许你会对 lot ...

  2. 运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory

    运行编译后的程序报错  error while loading shared libraries: lib*.so: cannot open shared object file: No such f ...

  3. WPF 控件截图位置不正确的问题

    用WPF的RenderTargetBitmap可以截取控件内容到一张图片上,但是实际使用的时候经常出现截取的位置不正确的问题.今天是第二次解决这个问题,所以记录下,免得再忘了. RenderTarge ...

  4. Xcode6 运行程序后,右侧Debug区域的Memory显示空白解决方法

    http://chenyh-blog.com/%E8%9B%8B%E7%96%BC%E7%9A%84%E5%86%85%E5%AD%98-%E7%AC%AC%E4%B8%89%E7%AF%87-sdw ...

  5. Java学习笔记——Java程序运行超时后退出或进行其他操作的实现

    当程序进入死循环或者由于其他原因无法自行终止的时候,就需要强制退出程序了. 对于开发软件 Eclipse ,在程序执行超时后,可以点击 Terminate 按钮强制退出. 那么,我们可不可以通过程序设 ...

  6. IDEA运行编译后配置文件无法找到,或配置文件修改后无效的问题

    1.触发事件 今天正好在学习log4j,为了测试其配置文件log4j.properties中的各种配置,进行了频繁修改和程序启动以确认效果,因为是使用的IDEA建立的Web项目,接着问题就来了,配置文 ...

  7. Dynamics 365检查工作流、SDK插件步骤是否选中运行成功后自动删除系统作业记录

    本人微信公众号:微软动态CRM专家罗勇 ,回复298或者20190120可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 系统 ...

  8. Linux下java nohup 后台运行关闭后进程停止的原因,不挂断后台运行命令

    Linux下java nohup 后台运行关闭后进程停止的原因,不挂断后台运行命令 今天写sh脚本发现一终止命令程序就停止运行了,检查了很久才发现后面少了个&字符导致的!错误写法:nohup ...

  9. Eclipse------用Tomcat运行项目后出现:严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener

    Eclipse中Tomcat运行项目后出现: 严重: Error configuring application listener of class org.springframework.web.c ...

随机推荐

  1. 教你轻松计算AOE网关键路径(转)

    原文链接:http://blog.csdn.net/wang379275614/article/details/13990163 本次结合系统分析师-运筹方法-网络规划技术-关键路径章节,对原文链接描 ...

  2. python 列表排序

    转自http://www.iplaypython.com/jinjie/jj114.html reverse()方法 将列表中元素反转排序,比如下面这样>>> x = [1,5,2, ...

  3. AES 与Base64加密

    public class AESHelper     {         /// <summary>         /// 获取密钥         /// </summary&g ...

  4. window 常用快捷键

    1.新建文件夹  ctrl+shift+n 2.删除文件夹  ctrl+d 3.打开命令行  窗口+r 4.关闭命令行  命令行内输入exit然后回车 5.快捷键操作浏览器 1)ctrl+w关闭当前标 ...

  5. [DabaBase] MongoDB (6) 启动、停止、相关系统配置及安全性设置

    MongoDB 启动.停止.相关系统配置及安全性设置 启动MongoDB ./mongod —-help 查看帮助说明 mac-abeen:bin abeen$ sudo ./mongod --dbp ...

  6. SAML 2.0 setup steps, 效果图

    Steps of setting up SAML SSO. 效果图 # Registry a Identity Provider services in:(Might need purchase) I ...

  7. tomcat源码分析(一)从tomcat架构说起

    p { margin-bottom: 0.25cm; line-height: 120% }

  8. String常用方法测试

    String.Equals()使用方法 用来比较String两个对象所表示的字符串是否相同 public class StringEquals { public static void main(St ...

  9. Xcode及obj-c的基础知识

    1, 从简单的例程来看基本语法: 下面的代码是通过OSX-Application-Command Line Tool生成的: #import <Foundation/Foundation.h&g ...

  10. R中数据拆分和整合

    library(data.table)ID <- c(NA,1,2,2)IDTime <- c(1,2,NA,1)TimeX1 <- c(5,3,NA,2)X1X2 <- c( ...