android 的Tween动画并不会改变控件的属性值,比如以下测试片段:

定义一个从屏幕右边进入,滚动到屏幕左边消失的一个TranslateAnimation动画:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:fillEnabled="true"android:fillAfter="true"><translate android:duration="7000" android:fromXDelta="100%p" android:toXDelta="-100%"/>
</set>

在activity里面设置某个TextView的动画,并且另起一个线程每隔一秒获取textView的坐标:

public class Activity1 extends Activity {private TextView textView;private Animation animation;private int location[] = new int[2];private boolean flags = true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);animation =       AnimationUtils.loadAnimation(this,R.anim.scrollanim);textView = (TextView)findViewById(R.id.textview);textView.setOnClickListener(new  TextView.OnClickListener() {@Overridepublic void onClick(View v) {textView.startAnimation(animation);}});getLocationThread.start();}private Thread getLocationThread = new Thread(){@Overridepublic void run() {while(flags){textView.getLocationOnScreen(location);Log.i("test", location[0] + "");try {Thread.sleep(1000L);} catch (InterruptedException e) {e.printStackTrace();}}}};@Overrideprotected void onDestroy() {flags = false;super.onDestroy();}
}

最后LogCat测试结果如下所示:

可见虽然TextView随着动画移动了,但是他的位置属性并没有改变。

那么如何获取随着动画改变的坐标?

利用Transformation这个类

代码如下所示:

private Thread getLocationThread = new Thread(){@Overridepublic void run() {while(flags){Transformation transformation = new Transformation();animation.getTransformation(AnimationUtils.currentAnimationTimeMillis(),transformation);Matrix matrix = transformation.getMatrix();float[] matrixVals = new float[9];matrix.getValues(matrixVals);Log.i("test", matrixVals[2] + "");try {Thread.sleep(1000L);} catch (InterruptedException e) {// TODO Auto-generated catch block
                    e.printStackTrace();}}}};

Matrix是由9个float构成的3X3的矩阵,如下所示:

|cosX  -sinX   translateX|

|sinx   cosX    translateY|

|0         0         scale     |

cosX sinX表示旋转角度,按顺时针方向算。 scale是缩放比例。

启动线程后 LogCat如下所示:

转载于:https://www.cnblogs.com/hithlb/p/3554919.html

android TranslateAnimation动画执行时的坐标获取。相关推荐

  1. android 动画坐标,android TranslateAnimation动画执行时的坐标获取。

    android 的Tween动画并不会改变控件的属性值,比如以下测试片段: 定义一个从屏幕右边进入,滚动到屏幕左边消失的一个TranslateAnimation动画: <?xml version ...

  2. Android利用 libsuperuse执行shell命令或获取root权限

    Android 5.1 之后,发现通过ActivityManger获取不到正在运行的进程了,可以通过shell命令来获取,参考. libsuperuse执行shell可以参考: http://my.o ...

  3. android image 位移动画_深入理解Android之动画

    Android 里动画从用途上讲,可以分为三类View Animation(View动画)又称 Tween Animation(补间动画).Drawable Animation(帧动画) 和 Prop ...

  4. TranslateAnimation动画

    众所周知,TranslateAnimation是android中重要的一个动画函数,很多时候我们 都需要使用它来实现更好的UI效果,今天就简单研究下这个TranslateAnimation. Tran ...

  5. Android Animation动画(很详细)

    Animations 一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等, ...

  6. android属性动画作用范围,Android开发之动画效果浅析(一)

    程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...

  7. 【Android的从零单排开发日记】之入门篇(十六)——Android的动画效果

    什么是动画,动画的本质是通过连续不断地显示若干图像来产生"动"起来的效果.比如说一个移动的动画,就是在一定的时间段内,以恰当的速率(起码要12帧/秒以上,才会让人产生动起来的错觉) ...

  8. android scaleanimation动画,Android 动画之ScaleAnimation应用详解

    android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 TranslateAnimation 位移动画效果 RotateAnimat ...

  9. android Animation 动画。淡出动画

    淡出动画 protected void startHotelNearByIconAnim() {AlphaAnimation alphaAnimation = new AlphaAnimation(1 ...

最新文章

  1. 如何拯救收录直线下滑的网站?
  2. python 实现原型设计模式
  3. 信息学奥赛C++语言: 数字三角形
  4. curl txt批量_curl与wget高级用法
  5. 如何查找MySQL中查询慢的SQL语句
  6. 美国政府悬赏1000万美元,获取 DarkSide 勒索团伙线索
  7. 带你了解Java Agent
  8. Optisystem 光锁相环
  9. SCJP刷题学习笔记(Part six)
  10. 前端之JS篇(七)——Web APIsDOM部分内容
  11. 工业物联网网关是什么?工业物联网网关有什么作用?
  12. PCL 自定义点云类型PointT
  13. Linux C/C++程序员 但行好事 莫问前程 Linux系统下 解决Qt5无法连接MySQL数据库的方法
  14. 【Java 入门】(六)表设计
  15. uni-app H5+ 连接蓝牙打印机打印文字及二维码
  16. idea中java版本设置
  17. 第三方支付为什么会兴起
  18. windows mysql提示:1045 access denied for user 'root'@'localhost' using password ye
  19. 如何在控制台创建文件夹
  20. 如何使用left join,以及left join的分析

热门文章

  1. redis python zset
  2. 当程序员的一个人无聊时,甚至用Python开发出机器人看他们聊天
  3. 基于单片机的超市储物柜设计_657【毕设课设】基于单片机智能存柜储物柜存储柜系统设计...
  4. pythonweb编程免费教程_python – Web编程教程
  5. 原始样式增加标题_好看又实用! 10个标题字体设计技巧
  6. 习题10-2 递归求阶乘和 (15 分)
  7. Android p2p service,android – WifiP2pDnsSdServiceInfo.newInstance中的可用服务类型
  8. 0x22.搜索 - 深度优先搜索
  9. JAVA 判断简单密码算法_十道简单算法题二【Java实现】
  10. 从数组中取出m个数相加的结果(组合)