2013-02-25 20 views
7

Sto lavorando a un'applicazione e ho fornito tutte le risorse da ldpi a xhdpi, ma alcuni tablet utilizzano hdpi (o tvdpi nel caso del nexus 7 su cui sto effettuando il test) quindi quando apro l'app su un tablet tutto è piccolo, mi piacerebbe costringerli a usare le risorse xhdpi come posso farlo?Force tablet per utilizzare le risorse xhdpi

Non voglio creare file separati solo per le compresse o le dimensioni delle app aumenterebbe, le risorse xhdpi avrebbe funzionato bene

enter image description here

sui telefoni tutto viene visualizzato correttamente, il i tablet sono il problema perché prendono le risorse a bassa risoluzione per i loro schermi di grandi dimensioni, quindi le dimensioni effettive in pollici (4 cm, misurate con un righello) sono corrette, ma in realtà sembrano piccole, rendendo il disegno generale non corretto

+0

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

risposta

5

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.

+0

Voglio fornire tutte le risorse per ogni dispositivo, anche questo non aiuterebbe il mio problema, perché anche se fornivo solo l'xhdpi il sistema lo ridimensiona in hdpi per il tablet comunque – DoubleP90

+0

Ah. Non vuoi che un'immagine mantenga le sue dimensioni. Invece, ti piacerebbe avere un'immagine ingrandita (in pollici) su un dispositivo * ad alta densità *? O vuoi che un'immagine diventi più grande (in pollici) su un dispositivo * più grande *? –

+0

Voglio che l'immagine diventi più grande su dispositivi di grandi dimensioni, ad esempio, se ho un'immagine che è 10x10px (xhdpi) ed è 7.5x7.5px (hdpi), un tablet caricherà la versione hdp "7.7px" in modo che sembrerà piccolo, invece voglio caricare la versione xpdp "10px", quindi l'immagine richiederà più spazio e sarà più grande. quindi se prendi un righello e lo misuri su un tablet, deve essere più grande di un telefono xhdpi. Quindi in sostanza sì in pollici deve essere più grande. – DoubleP90

Problemi correlati