#java #android #imageview
Вопрос:
Я тестирую свое приложение на нескольких устройствах в эмуляторе Android, и один просмотр изображений может сильно изменить его внешний вид, от очень маленького до очень большого.
Для справки вот как отображается изображение в 5.1 WVGA API 26:
Вот как он отображается в Pixel XL API 27:
И вот как эмуляторы сравниваются друг с другом, будучи тем, у которого API 26 немного шире и выше, поэтому я не думаю, что должна быть такая большая разница:
Изображение получает свою информацию и отображается таким образом:
byte bytes[] = new byte[0]; try { bytes = FileUtils.readFileToByteArray(new File(filepath2)); } catch (IOException e) { e.printStackTrace(); } Bitmap bm = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); ImageView imageView=view.findViewById(R.id.imageView13); imageView.setImageBitmap(bm);
И вот как я установил изображение в своем фрагменте:
lt;androidx.constraintlayout.widget.ConstraintLayout xmlns: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"gt; lt;androidx.appcompat.widget.LinearLayoutCompat android:id="@ id/linearLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom" android:orientation="vertical" tools:layout_editor_absoluteX="0dp" tools:layout_editor_absoluteY="0dp"gt; lt;ImageView android:id="@ id/imageView13" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="60dp" android:layout_weight="0.8" app:layout_constraintTop_toTopOf="parent" /gt;
Что я могу сделать, чтобы он отображался пропорционально размеру экрана?
Комментарии:
1. Я не думаю,что должна быть большая разница — разрешение WVGA составляет 480×800 (267 PPI), в то время как пиксель XL составляет 1, 440×2, 560 (534 PPI), так что разница на самом деле огромная. Я предполагаю, что проблема связана с использованием
wrap_content
просмотра изображений. когда jpg не помещается в WVGA, он масштабируется, в то время как в пикселе он занимает все необходимое пространство и не «масштабируется», чтобы соответствовать.