0

У меня есть изображение, которое находится внутри карты, чтобы создать изображение круга. На смартфоне я хочу, чтобы размер изображения составлял 250 и 250 дп, скажем, около 80% от моей ширины телефона.ImageView, чтобы выглядеть одинаково на планшете и телефоне

На планшете я хочу, чтобы изображение составляло около 80% ширины моего планшета, а высота также должна соответствовать ширине. Каков наилучший способ добиться этого. Благодаря?

Ниже приведен код, в котором я вручную устанавливаю ширину и высоту 250 дБ, что отлично смотрится на смартфоне, но малым для планшета.

<android.support.v7.widget.CardView 
    android:id="@+id/cardView" 
    android:layout_width="250dp" 
    android:layout_height="250dp" 
    android:elevation="12dp" 
    app:cardCornerRadius="125dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:innerRadius="0dp" 
    android:shape="ring" 
    android:thicknessRatio="1.9" 
    android:layout_marginTop="20dp"> 
    <ImageView 
     android:layout_width="250dp" 
     android:layout_height="250dp" 
     android:id="@+id/image_album_art" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true"> 
    </ImageView> 
</android.support.v7.widget.CardView> 

ответ

0

Android предназначен для этого. Если вы хотите ресурс изменяться в зависимости от конфигурации устройства (т.е. размер экрана), можно определить, что ресурс в определенном каталоге:

res/layout-sw720dp - large (9"-10") tablets 
res/layout-sw600dp - small (7"-8") tablets 
res/layout - all other devices 

Когда вы добавляете -sw600dp к имени каталога, это означает, что «наименьшая ширина 600 дп ». Это означает, что этот каталог предназначен для устройств с шириной экрана 600dp или выше. «Наименьшая ширина» означает, что какая-либо сторона экрана меньше, поэтому, будь то портрет или пейзаж, экран размером 1067dp x 600dp имеет наименьшую ширину 600dp.

Вы можете сделать копию всего файла макета для каждой конфигурации и поместить его в каждый из указанных выше каталогов. Однако, если все файлы одинаковы, кроме размеров View, у вас будет много дублирующегося кода. Если вам нужно внести изменения, вам придется внести это изменение во все три файла, что может привести к ошибкам.

Вместо того, чтобы иметь несколько макетов, вы можете определить измерение, которое зависит от конфигурации. Макеты идут в res/layout/ и размеры идут в res/values/

Создайте новый XML-файл dimensions.xml и поместить его в каталог res/values. Добавьте к нему новый размер:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="album_art_size">250dp</dimen> 
</resources> 

Это будет файл, который будут видеть телефоны.

Затем создайте еще два values директории и добавьте маленький ширины спецификатор к ним, так что у вас есть res/values, res/values-sw600dp и res/values-sw720dp. Скопируйте dimensions.xml в обе эти новые директории. Затем вы можете изменить размер album_art_size в каждом из этих файлов, и когда ваше приложение будет работать на разных размерах экрана, он увидит соответствующий файл размер .xml.

Последнее, что нужно сделать, это указать ваш макет в измеренном вами размере album_art_size. Заменить 250dp с @dimen/album_art_size:

android:layout_width="@dimen/album_art_size" 
android:layout_height="@dimen/album_art_size" 

Это позволит вам выбрать конкретные размеры для каждой категории устройств, которые вы должны получить достаточно близко к вашему 80% целевого размера экрана. Если вам нужно ровно 80% ширины экрана и квадратного просмотра, вам нужно будет играть с атрибутами ImageView scaleType и adjustViewBounds или написать код Java.

0

Что вы можете сделать, это создать папку расположения типа большого т.е. макета большого, а затем скопировать макет из папки макета и вставить его в папке компоновщиков больших, а затем просто установить ширину и высоту в соответствии с размер экрана планшета, т.е. может быть 450 дп или около того, проверьте это!