在同一视图组中翻译视图

时间:2018-05-21 05:17:50

标签: android

Translate view within the same Linear layout

我想在同一视图组中明智地转换此圆圈图像百分比。根据我将获得的数据,新位置可以是30%或50%或100%。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

LL应在圆顶上包含一个空格,高度为" 0dp"。收到数据时,应将空间的权重属性设置为 100-(received_percentage)。记得将LL的weight_sum设置为100。

答案 1 :(得分:2)

试试这段代码:

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是您的容器LinearLayoutmCircleView是圆圈视图。您可以通过高度计算最大距离,乘以百分比(0 - 1)得到最终距离。

如果在屏幕上完全绘制完布局后启动动画,则可以删除getViewTreeObserver().addOnGlobalLayoutListener部分。