我想在同一视图组中明智地转换此圆形图像百分比。根据我得到的数据,“新位置”可以是30%或50%或100%的任何值。
我该如何实现?
最佳答案
试试这个代码:
mContainerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mContainerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
// Start animation here so getHeight won't return 0
int maxTranslateDistance = mContainerView.getHeight() - mCircleView.getHeight();
float percent = 1; // Within 0 - 1
mCircleView.animate().translationY((int)(maxTranslateDistance * percent)).setDuration(0).start();
}
});
mContainerView
是容器LinearLayout
,mCircleView
是圆形视图。您计算出最大距离可以同时换算为两个高度,再乘以百分比(0-1)即可得出最终距离。如果在屏幕上完全绘制布局后开始动画,则可以删除
getViewTreeObserver().addOnGlobalLayoutListener
部分。