Я создаю приложение Android, которое будет иметь циферблат компаса, на котором отображается азимутальное положение солнца. Циферблат компаса представляет собой вектор размером 100x100 dp, который я масштабирую с помощью match_parent
в обоих измерениях, чтобы заполнить доступную область экрана. Изображение солнца - это векторный рисунок 10x10 dp, который накладывается на изображение компаса в соответствующем месте. Оба они находятся внутри ConstraintLayout
, также с использованием match_parent
масштабирования.
Моя проблема в том, что я не могу найти способ сделать масштабируемый масштаб солнца с тем же коэффициентом, что и компас. Если я использую match_parent
, он расширяется, чтобы заполнить свой родительский макет. Если я использую wrap_content
, он вообще не масштабируется и отображается с размером намного меньше, чем 1/10 от размера циферблата.
Далее следует отрывок из моего файла макета. Есть ли какой-либо простой способ, декларативно в макете или в соответствующем действии, увеличить меньший масштабируемый масштаб с тем же коэффициентом, что и его родственный компас?
Примечание: я использую app:layout_constraintCircle*
для размещения солнца выдвигается. Я смирился с необходимостью масштабировать app:layout_constraintCircleRadius
в коде приложения, основываясь на той небольшой информации, которую мне удалось найти. Но если есть способ сделать и эту шкалу с циферблатом компаса доступной для рисования, это было бы замечательно.
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/compass_composite"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/toolbar"
android:layout_alignParentStart="true"
android:layout_alignParentTop="false">
<ImageView
android:id="@+id/compass_face"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/content_compass_display"
android:scaleType="fitCenter"
android:src="@drawable/ic_compass_face"
android:tint="@android:color/darker_gray" />
<ImageView
android:id="@+id/sun"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintCircle="@+id/compass_face"
app:layout_constraintCircleRadius="45dp"
app:layout_constraintCircleAngle="210"
android:src="@drawable/ic_sun"
android:tint="@color/bg_noon"
android:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>