Мне нужно показать маркер на графике.
Когда пользователь нажимает на точку между областями 1/3 и 5/6, я показываю маркер следующим образом:
Когда пользователь нажимает на точку за пределами области 5/6, я вращаю пузырь. Эффект, который я получаю, равен
Код, который я использую для поворота фона для рисования, находится ниже
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>