Переместить вид в центр другого вида или в качестве альтернативы координатам относительно размера экрана - PullRequest
0 голосов
/ 12 января 2019

Я знаю, что об этом уже спрашивали, но во всех ответах использовалась java, с которой у меня нет абсолютно никакого опыта. Кроме того, автоматический перевод Android Studio на kotlin не работал над кодом из этих ответов.

Я создаю игру-викторину, для которой мне нужна анимация. У меня есть вид (маленькая пульсирующая точка), что я хочу переместиться в центр «правильной» кнопки и, при нажатии на нее, ускориться прямо вверх и за пределы экрана. Теперь с последней частью нет проблем, но я не могу придумать хороший способ перемещения точки на кнопке. Если я сделаю это, как в примере ниже, он не будет адаптироваться к разным размерам экрана или даже ориентации экрана. Так есть ли способ установить координаты в процентах / долях экрана? Или получить координаты центра кнопки и переместиться туда?

Так вот, что я использую до сих пор:

        var soultoX = ObjectAnimator.ofFloat(mContentView, "x", 150f).apply {
        duration = 1000
    }
        var soultoY = ObjectAnimator.ofFloat(mContentView, "y", 1055f).apply {
        duration = 1000
    }

    fun soulToButton() = AnimatorSet().apply {
        play(soultoX).with(soultoY)
        start()
    }

Кнопка xml для одного примера:

    <Button
        android:text="@string/fa"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:id="@+id/fabutton"
        style="@style/Widget.AppCompat.Button.Colored"
        app:layout_constraintTop_toTopOf="@+id/guideline8" 
        app:layout_constraintBottom_toBottomOf="@+id/guideline7"
        android:textColorLink="@color/colorAccent" 
        android:textColor="@color/colorPrimary"
        app:layout_constraintVertical_bias="1.0"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"/>

А вид:

    <Button
        android:text="@string/fa"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:id="@+id/fabutton"
        style="@style/Widget.AppCompat.Button.Colored"
        app:layout_constraintTop_toTopOf="@+id/guideline8" 
        app:layout_constraintBottom_toBottomOf="@+id/guideline7"
        android:textColorLink="@color/colorAccent"
        android:textColor="@color/colorPrimary"
        app:layout_constraintVertical_bias="1.0"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"/>

1 Ответ

0 голосов
/ 12 января 2019

Вы можете использовать ограничение ограничений: https://developer.android.com/reference/android/support/constraint/ConstraintLayout

...