Di solito, il downscaling è l'opzione migliore (al contrario di up-scaling). Se le immagini non degradano o perdono le informazioni quando vengono ridotte, inserire la versione 2x delle immagini nella cartella res/drawable- xhdpi. Android ridimensiona queste immagini in modo appropriato su dispositivi a bassa densità.
E.g. se metti un jpg/png 64x64 pixel in res/drawable-xhdpi, Android lo mostrerà come un 32x32 pixel su dispositivi mdpi, come un'immagine 48x48 pixel su dispositivi hdpi e come immagine 64x64 pixel su dispositivi xhdpi.
Se il downscaling delle tue immagini si deteriorerebbe (ad es. Hai 1 pixel nell'immagine che scomparirebbero quando ridimensionato), allora l'unica opzione è aggiungere le variazioni delle tue immagini in mdpi disegnabile, disegnabile- directory hdpi, ecc.
aggiornamento dopo i commenti:
Che ci si vuole avere le immagini appaiono più grandi sul grande schermi (non su alte densità schermi). Puoi farlo mettendo le tue immagini nella sola cartella drawable-xhdpi, ma poi fai questo:
E.g. avrete questo layout in res/layout di un ImageView che mostra una delle tue immagini:
res/drawable-xhdpi/one_of_my_images.png
res/layout/somelayout.xml
....
<ImageView
android:layout_height="@dimen/image_height"
android:layout_width="@dimen/image_width"
android:src="@drawable/one_of_my_images"
android:scaleType="fitCenter"
....
/>
ris/valori/dimens.xml
....
<dimen name="image_height">100dip</dimen>
<dimen name="image_width">150dip</dimen>
....
res/valori-grandi/dimens.xml
....
<dimen name="image_height">150dip</dimen>
<dimen name="image_width">225dip</dimen>
....
res/valori-XLarge/Dimens.xml
....
<dimen name="image_height">200dip</dimen>
<dimen name="image_width">300dip</dimen>
....
Come si può vedere, il più grande schermo, il più grande (in tuffo e quindi in pollici) l'immagine. È possibile sperimentare con valori diversi per image_height e image_width in dimens.xml in res/values-xlarge-hdpi, res/values-xlarge-xhdpi, ecc. E vedere cosa è meglio.
Update 2 dopo i commenti: Se si desidera che il proprio schema di 'custom' di caricare la risorsa appropriata, metterli id res/drawable-nodpi: Eg
res/drawable-nodpi/one_of_my_images_normal.png res/drawable-nodpi/one_of_my_images_large.png res/drawable-nodpi/one_of_my_images_xlarge.png
quindi mettere a dir drawable appropriata (ris/drawable /, res/drawable-ampio,/res/drawable-sw360dp /, ecc., qualunque cosa tu possa inventare) un file xml che indirettamente fa riferimento alla risorsa corretta dalla directory nodpi: Eg
res/drawable-xlarge-MDPI/my_images.xml
<resources>
....
<item type="drawable" name="one_of_my_images">@drawable/one_of_my_images_large</item>
....
</resources>
Ciò significa che per extra-grandi schermi MDPI, Android caricherà la 'one_of_my_image_large.png' dalla directory drawable-nodpi.
sfortunatamente non penso che tu abbia alcun controllo su di esso a livello di Applicazione. AFAIK il "bucket" di densità è hardcoded nel dispositivo e utilizzerà sempre le risorse che corrispondono al tipo di densità hardcoded, se disponibili. – FoamyGuy