我有一个名为mContainer
的父容器和一个名为mChildImageView
的子视图。 ImageView
位于容器的中间,我正在尝试将ImageView
翻译到左上角,而不会切断ImageView
。
我想要的是将ImageView
的最高点转换为mContainer
的左上角,这样会使ImageView
被切断。
这是我正在使用的以下代码,因为你可以看到我使用的是Absolute坐标,我想让它更具动态性,我该如何实现呢?
TranslateAnimation a = new TranslateAnimation(
Animation.ABSOLUTE, // Specifies X-Type interpretation, ABSOLUTE, RELATIVE_TO_SELF, RELATIVE_TO_PARENT
0.0f, // Change in x coordinate at start of animation, can be absolute or percentage if RELATIVE
Animation.ABSOLUTE,
-30, // Change in x coordinate at end of animation, can be absolute or percentage if RELATIVE
Animation.ABSOLUTE, // Specifies Y-Type interpretation, ABSOLUTE, RELATIVE_TO_SELF, RELATIVE_TO_PARENT
0.0f, // Change in y coordinate at start of animation, can be absolute or percentage if RELATIVE
Animation.ABSOLUTE,
30 // Change in y coordinate at end of animation, can be absolute or percentage if RELATIVE
);
mChildImageView.setAnimation(a);
mChildImageView.animate();
答案 0 :(得分:1)
如果您想要更改视图的TranslationX或/和TranslationY参数与其父级相关,我强烈建议您使用Animators而不是Animations,因为它们有一些缺点(例如:Android - Animation Issue)。
可能的变体:
mChildImageView.animate().translationX(newTranslationX).translationY(newTranslationY).setDuration(duration).start();
答案 1 :(得分:0)
我想出来,为了让它移到左上角我们可以做以下
TranslateAnimation a = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT,
0.0f,
Animation.RELATIVE_TO_PARENT,
-20.0f, // Translate to left - This is arbitrary enter your own value
Animation.RELATIVE_TO_PARENT,
0.0f,
Animation.RELATIVE_TO_PARENT,
-15.0f // Translate up - This is arbitrary enter your own value
);
mChildImageView.setAnimation(a);
mChildImageView.animate();
RELATIVE_TO_PARENT使用的百分比为0.0f至1.0f