Поверните корневой фон для рисования и сохраните положение вида элементов - PullRequest
0 голосов
/ 07 октября 2019

Мне нужно показать маркер на графике.

Когда пользователь нажимает на точку между областями 1/3 и 5/6, я показываю маркер следующим образом:

enter image description here

Когда пользователь нажимает на точку за пределами области 5/6, я вращаю пузырь. Эффект, который я получаю, равен enter image description here

Код, который я использую для поворота фона для рисования, находится ниже

 public void setRotation(float rotation){

    if(rotation == 90f){
        positionX = -getWidth()/2;
        positionY = -getHeight()/2;
    }else if(rotation == -90f){
        positionX = -getWidth()/2 - 40;
        positionY = -getHeight()/2;
    }else{
        positionX = -getWidth()/2;
        positionY = -getHeight();
    }

    Bitmap bmpOriginal = BitmapFactory.decodeResource(this.getResources(), R.drawable.marker2);
    Bitmap bmResult = Bitmap.createBitmap(1*bmpOriginal.getWidth(), bmpOriginal.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas tempCanvas = new Canvas(bmResult);
    tempCanvas.rotate(rotation, bmpOriginal.getWidth()/2, bmpOriginal.getHeight()/2);
    tempCanvas.drawBitmap(bmpOriginal, 0, 0, null);

    relativeLayout.setBackground(new BitmapDrawable(getResources(), bmResult));
}

Содержимое находится вне пузыря.

Я могу установить его внутри пузыря, добавив отступ (фиксированное значение) для начала содержимого.

Есть ли лучший способ повернуть или отрегулировать положение пузыря и / или егосодержание.

xml для представления маркера:

    <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/root"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minWidth="145dp"
    android:minHeight="110dp"
    android:background="@drawable/marker2"

    tools:ignore="Overdraw">

    <LinearLayout
        android:id="@+id/incoming_root"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:paddingStart="35dp"
        android:paddingTop="3dp"
        android:paddingBottom="3dp"
        >
        <ImageView
            android:id="@+id/tvContentSymbol"
            android:layout_width="10dp"
            android:layout_height="10dp"
            android:layout_gravity="center"
            android:src="@drawable/star" />

        <TextView
            android:id="@+id/tvContent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toEndOf="@+id/tvContentSymbol"
            android:layout_marginStart="5dp"
            android:text="780"
            android:textSize="12sp"
            android:textColor="@android:color/white"
            android:ellipsize="end"
            android:singleLine="true"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/outgoing_root"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/incoming_root"
        android:paddingStart="35dp"
        android:paddingTop="3dp"
        android:paddingBottom="3dp"
        >
        <ImageView
            android:id="@+id/tvContentSymbol2"
            android:layout_width="10dp"
            android:layout_height="10dp"
            android:layout_marginTop="5dp"
            android:src="@drawable/star" />

        <TextView
            android:id="@+id/tvContent2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toEndOf="@+id/tvContentSymbol2"
            app:layout_constraintTop_toBottomOf="@+id/tvContent"
            android:layout_marginStart="5dp"
            android:gravity="center"
            android:text="650"
            android:textSize="12sp"
            android:textColor="@android:color/white"
            android:ellipsize="end"
            android:singleLine="true"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    </LinearLayout>


    <LinearLayout
        android:id="@+id/balance_root"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/outgoing_root"
        android:paddingStart="35dp"
        android:paddingTop="3dp"
        android:paddingBottom="3dp"
        >

        <ImageView
            android:id="@+id/tvContentSymbol3"
            android:layout_width="10dp"
            android:layout_height="10dp"
            android:layout_marginTop="5dp"
            android:src="@drawable/star" />

        <TextView
            android:id="@+id/tvContent3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toEndOf="@+id/tvContentSymbol3"
            app:layout_constraintTop_toBottomOf="@+id/tvContent2"
            android:layout_marginStart="5dp"
            android:text="100"
            android:textSize="12sp"
            android:textColor="@android:color/white"
            android:ellipsize="end"
            android:singleLine="true"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    </LinearLayout>




</androidx.constraintlayout.widget.ConstraintLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...