目前我有一个 ImageView
扩展了设备的长度并按 3 缩放。显然,屏幕外的边被裁剪掉了。我希望动画从设备左侧的图像左侧开始,然后将其移动直到图像右侧位于设备右侧。
我可以通过将图像设置为初始基础然后基本上这样做来实现它们:
<objectAnimator
android:propertyName="translationX"
android:duration="6000"
android:valueTo="-1280"
android:valueType="floatType"
/>
但是,这只适用于我知道图像的确切尺寸和我的摩托罗拉 Xoom 的确切尺寸。自然地,我希望它能在任何设备上运行,所以我需要一些不那么硬编码的东西。使用 Tween 动画,它可以正常工作,因为您可以根据其大小的百分比来转换某些内容。它并不完美,但对于这种效果来说已经足够好了。属性(property)动画似乎没有这个。 translationX
和 X
属性必须有单位。
有没有一种简单的方法可以根据相对位置转换带有属性动画的 View ?我是否必须为每个维度制作一个单独的动画文件?有没有其他方法可以达到这种效果?我不想制作自己的动画。
最佳答案
您能否为您想要支持的具有已知 dp 宽度的单独设备尺寸“桶”(例如平板电脑、手机横向等)创建代码。然后你可以使用下面的这个来缩放图像(对于特定的设备桶宽度,384 是 384dp)并对你需要的 valueTo int 做类似的事情。
//Get the device screen pixel density so that you can scale
//the image in density independent pixels rather than pixels
final float scale = getActivity().getResources().
getDisplayMetrics().density;
//set the number of dp for the height and width by changing
//the number you multiply the (scale + 0.5f) by e.g. 384
int pixelsh = (int) (384 * scale + 0.5f);
int pixelsw = (int) (384 * scale + 0.5f);
这是将绝对像素转换为dp像素的方法。我不知道如何将这些用于您正在做的事情,但至少这是一个开始。
关于android - xml中属性动画中的相对翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8510425/