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;
@Override
protected 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() {
@Override
public void onClick(View v) {
textView.startAnimation(animation);
}
});
getLocationThread.start();
} private Thread getLocationThread = new Thread(){
@Override
public void run() {
while(flags){
textView.getLocationOnScreen(location);
Log.i("test", location[0] + "");
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}; @Override
protected void onDestroy() {
flags = false;
super.onDestroy();
}
}

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

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

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

利用Transformation这个类

代码如下所示:

private Thread getLocationThread = new Thread(){
@Override
public 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如下所示:

android TranslateAnimation动画执行时的坐标获取。的更多相关文章

  1. Android 6.0 执行时权限处理全然解析

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/50709663: 本文出自:[张鸿洋的博客] 一.概述 随着Android 6. ...

  2. Android Studio 设置项目Module编码,解决Android Studio项目执行时乱码问题

    Android Studio的项目设置逻辑与Eclipse有非常大的差别.运行的操作为File->Setting->File Encodings然后来进行设置,如图所看到的: waterm ...

  3. android 帧动画,补间动画,属性动画的简单总结

      帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建ani ...

  4. 79.Android之动画基础

    转载:http://a.codekk.com/detail/Android/lightSky/%E5%85%AC%E5%85%B1%E6%8A%80%E6%9C%AF%E7%82%B9%E4%B9%8 ...

  5. Android Animation动画(很详细)

    Android Animation   Contents: Animations Tween Animations AnimationSet Interpolator Frame-By-Frame A ...

  6. android 属性动画

    一直再追郭霖的博客和imooc上的一些新的视频,最近有讲到属性动画. 以下内容为博客学习以及imooc上视频资料的学习笔记: 在3.0之前比较常见的动画为tween动画和frame动画: tween动 ...

  7. 【Android开发日记】之基础篇(二)——Android的动画效果

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

  8. android帧动画,移动位置,缩放,改变透明度等动画讲解

    1.苦逼的需求又来了,需要实现一些动画效果,第一个想到的是播放gif图片,但是这样会占包的资源,并且清晰度不高,于是想着程序实现,自己用帧动画+缩放+移动+透明度 实现了一些想要的效果,这里跟大家分享 ...

  9. android Animation 动画效果介绍

    Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动 ...

随机推荐

  1. ASP.NET MVC 长连接(服务器推)完整实现

    1.什么是"服务器推"(百科来一波)? 传统模式的 Web 系统以客户端发出请求.服务器端响应的方式工作.这种方式并不能满足很多现实应用的需求,譬如: 监控系统:后台硬件热插拔.L ...

  2. 两级宏&&字符串化宏

    如果你想字符串化宏参数扩展的结果,你必须使用两个级别的宏. #define xstr(s) str(s) #define str(s) #s #define foo 4 str (foo) ==> ...

  3. ubuntu web server ipython notebook install

    http://blog.csdn.net/yehuohan/article/details/51389966 ipython notebook installhttp://blog.csdn.net/ ...

  4. 切换Ubuntu超级管理员

    对Ubuntu进行拷贝命令时,如果不是root用户,会出现权限不足的情况,无法操作

  5. java算法面试题:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 按值的降序排序,如果值相同则按键值的字母顺序

    package com.swift; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; publi ...

  6. java 程序设计第三次作业内容

    第一题:输出结果是什么? System.out.println("5+5="+5+5); 第二题:输出结果是什么? int a=3,b; b=a++; sop("a=&q ...

  7. response.setContentType("text/html;charset=utf-8")后依然乱码的解决方法

    从浏览器获取数据到服务器,服务器将得到数据再显示在浏览器上英文字母正常显示,中文字符乱码的问题,已经使用了 response.setContentType("text/html;charse ...

  8. C#冒泡排序程序

    考虑到很多面试可能会考察冒泡排序的用法,所以特地花时间厘清了一下思路.下面说一下我的思路:冒泡排序核心就是比较方法,冒泡排序的比较方法顾名思义就是像气泡一样,最大(或者最小)的数往上冒.普通比较几个数 ...

  9. 第一篇:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: invalid continuation byte

    需求:python如何实现普通用户登录服务器后切换到root用户再执行命令 解决参考: 代码: def verification_ssh(host,username,password,port,roo ...

  10. ospf多区域实例配置

    需求:是pc1,pc2,pc3直接可以相互通信,ip分别pc1:192.168.1.2 pc2:192.168.3.2 pc3:192.168.5.2 LSW1配置: 首先划分vlan,vlan中配置 ...