Почему преобразование матрицы отличается на разных устройствах при применении преобразования матрицы к представлениям в Android?

Я использую библиотеку просмотра стикеров https://github.com/wuapnjie/StickerView . я сохраняю положение всех стикеров с помощью sticker.getMatrix()метод. Но когда я загружаю значение из базы данных на другое устройство с другим DPI, преобразование совершенно другое.

При дальнейших исследованиях я обнаружил, что для перевода мне нужно преобразовать px, чтобы сделать. поэтому я изменил 2-й и 5-й индекс (система индекса на основе 0) на dp. и при загрузке значений я конвертирую их обратно в пиксели

matrix[2] = DensityUtils.px2dp(context, originalmatrix[2]); matrix[5] = DensityUtils.px2dp(context, originalmatrix[5]);

и при загрузке

if(x==2||x==5) { val=DensityUtils.dp2px(GreetingsMakerActivity.this,val); }

и вот файл макета на случай, если он потребуется

      `<?xmlversion="1.0"encoding="utf-8"?>
<RelativeLayoutxmlns: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"
tools:context=".MainActivity"
android:id="@+id/top_parent"><RelativeLayout
android:id="@+id/rl_parent"
android:layout_alignParentTop="true"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"><com.example.stickerview.sticker.StickerView
android:id="@+id/greetings_frame"
app:showBorder="false"
android:layout_alignParentTop="true"
android:layout_margin="10dp"
app:showIcons="true"
android:layout_gravity="center"
android:layout_centerHorizontal="true"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/greetings_image_view"
android:adjustViewBounds="true"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.example.stickerview.sticker.StickerView>
</RelativeLayout>
</RelativeLayout>`

Но на разных устройствах результаты все равно разные. он неправильно масштабируется и вращается. Что я делаю не так?

0 ответов

Другие вопросы по тегам