旋转后确定屏幕上视图组的位置,宽度/高度

时间:2018-11-12 12:23:16

标签: java android

问题如下:

我有一个视图组相对布局,我正在触摸它。 旋转后,我需要确定viewGroup的顶部和左侧位置。

轮换之前 Before rotation

问题是即使旋转视图,其宽度,高度,顶部和左侧与旋转之前一样。

旋转后 after rotation

BEFORE ROTATION: width 826 height 283
BEFORE ROTATION: left 138 top 344
AFTER ROTATION: width 826 height 283
AFTER ROTATION: left 138 top 344

我可以计算旋转后的宽度,高度,顶部,左侧,左侧,但是有更好的解决方案吗?

这里是布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:animateLayoutChanges="true"
    android:id="@+id/relativeLayout">

    <RelativeLayout
        android:id="@+id/group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="125dp"
        android:animateLayoutChanges="true"
        android:visibility="visible"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">


        <ImageView
            android:id="@+id/imgGroup"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginTop="0dp"
            android:adjustViewBounds="true"
            android:clickable="false"
            android:scaleType="fitXY"
            android:src="@drawable/star_image" />

        <ImageView
            android:id="@+id/imgGroup2"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="0dp"
            android:layout_marginTop="0dp"
            android:layout_toRightOf="@+id/imgGroup"
            android:adjustViewBounds="true"
            android:clickable="false"
            android:scaleType="fitXY"
            android:src="@drawable/star_image" />

    </RelativeLayout>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="143dp"
        android:layout_marginLeft="143dp"
        android:layout_marginEnd="403dp"
        android:layout_marginRight="403dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent" />

</RelativeLayout>

这是代码:

        group = findViewById(R.id.group);
    button = findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            ObjectAnimator rotation = ObjectAnimator.ofFloat(group, "rotation", 90f);
            rotation.setDuration(400);
            Log.d("BEFORE ROTATION", "width " + group.getWidth()+" height " + group.getHeight());
            Log.d("BEFORE ROTATION", "left " + group.getLeft() +" top " + group.getTop());
            rotation.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    super.onAnimationEnd(animation);
                    Log.d("AFTER ROTATION", "width " + group.getWidth()+" height " + group.getHeight());
                    Log.d("AFTER ROTATION", "left " + group.getLeft() +" top " + group.getTop());                    }
            });
            rotation.start();
        }
    });

谢谢!

0 个答案:

没有答案