您应该能够使用translationX和translationY属性来实现所需的效果.这些属性用作与View的原始X和Y坐标的偏移量.
本质上,translationX将会将View向右移动一个正值,并从其X坐标中留下负值.类似的翻译将从“Y”坐标将“视图”移向底部的正值和顶部为负值.
对于你的问题,我假设你想要达到的最后一个位置是搜索图标的左上角,右上角为每个视图的零填充设置图标.
对于搜索图标,我建议您将其放在工具栏的左上角.然后将translationX和translationY设置为20p.这应该将搜索图标放在与您的图像相同的位置.要移动你的搜索图标到左上角,你需要做的是animate translationX& Y从20dp到0 dp.
对设置图标重复相同,但将translationX设置为-20dp并将translationY设置为20dp.这样,它将被放置在与您的形象相同的位置.将这两个值动画化为0以实现所需的动画.
这是动画代码供参考.
ivSearch.animate()
.setInterpolator(new AccelerateInterpolator())
.translationX(0) // Takes value in pixels. From 20dp to 0dp
.translationY(0) // Takes value in pixels. From 20dp to 0dp
.setDuration(250)
.start();
ivSettings.animate()
.setInterpolator(new AccelerateInterpolator())
.translationX(0) // Takes value in pixels. From -20dp to 0dp
.translationY(0) // Takes value in pixels. From 20dp to 0dp
.setDuration(250)
.start();
// To get pixels from dp
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());
这种方法的好处是,您不再需要知道父级的维度.您所关心的是通过translationX和translationY指定的偏移量.