Autore Topic: specificare larghezza in dpi  (Letto 863 volte)

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
specificare larghezza in dpi
« il: 17 Novembre 2013, 17:50:22 CET »
0
Devo fare un layout inizialmente per samsung galaxy s4 (poi dovrò rendere compatibile questo layout per samsung s3), questo cellulare ha questa risoluzion:
1920 pixel×1080 pixel

devo mettere 5 pulsanti in orizzontale che coprano tutta la larghezza del dispositivo quindi 1080px, la larghezza di ogni pulsante sarà 1080/5 = 216dip:

android:layout_width="216dip"

l'xml che descrive questo layout lo metto nella directory: layout-large (?)

Se voglio renderlo compatibile per l's3 che ha una risoluzione 720 pixel x 1280 pixel, devo dividere 720/5 = 144px e quindi mettere ad ogni bottone

android:layout_width="144dip"

l'xml che descrive questo layout lo metto nella directory: layout-normal (?)

è corretto questo ragionamento?


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:specificare larghezza in dpi
« Risposta #1 il: 17 Novembre 2013, 18:45:04 CET »
0
è corretto questo ragionamento?

Purtroppo non molto, principalmente perchè i pixel non sono i dip.

In questa pagina alla sezione DIMENSION trovi la spiegazione delle varie unità di misura.
More Resource Types | Android Developers




Qua trovi le linee guida per rendere la tua interfaccia automaticamente scalabile al variare delle dimensioni reali del display.

Supporting Multiple Screens | Android Developers

Supporting Different Screen Sizes | Android Developers
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:specificare larghezza in dpi
« Risposta #2 il: 17 Novembre 2013, 19:43:15 CET »
0
ciao bradipao

io avevo letto diversi articolo tra cui
Supporting Multiple Screens | Android Developers

ma non ho capito come impostare la larghezza, se riesci a farmi un esempio pratico su come impostare la larghezza di 5 pulsanti (in modo che siano tutti larghi uguali) su un samsung galaxy s4, provo a capirci qualcosa

ti ringrazio in anticipo

ciao

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:specificare larghezza in dpi
« Risposta #3 il: 17 Novembre 2013, 20:44:25 CET »
0
Prova questo

Codice (XML): [Seleziona]
    <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content" >

        <Button
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="Button" />
        <Button
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="Button" />
        <Button
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="Button" />
        <Button
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="Button" />
        <Button
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="Button" />

    </LinearLayout>
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:specificare larghezza in dpi
« Risposta #4 il: 18 Novembre 2013, 00:23:35 CET »
0
bradipao il tuo codice funziona perfettamente, il problema è che al posto dei bottoni io ho delle immagini che fungono da bottoni (uso il componente ImageButton) e devo specificare che immagine verrà visualizzata, però non so che dimensione creare l'immagine
con il mio ragionamento, prendendo come riferimento il samsung galaxy s3 che ha una larghezza di 720px, ho fatto 5 immagini di 144px, quando le visualizzo sul cell, le immagini sono tutte sovrapposte perchè non centrano in larghezza, quindi 144px è troppo, vorrei capire che larghezza devono essere
questo è il codice che uso per ogni bottone
            <ImageButton
                android:id="@+id/imageButton1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_margin="0dp"
                android:layout_weight="1"
                android:contentDescription="@string/findWord"
                android:onClick="findWord"
                android:src="@drawable/btn_test_1" <-- qiesta è un a jpg di 144px messa nella dir drawable
                />

allego screenshot di come vengono i 5 pulsanti, su ogni pulsante si dovrebbe leggere: btn 1, btn 2, btn 3, btn 4, btn 5, ma non si legge perchè sono sovrapposti
« Ultima modifica: 18 Novembre 2013, 00:27:41 CET da andream1977 »

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:specificare larghezza in dpi
« Risposta #5 il: 18 Novembre 2013, 07:56:30 CET »
0
Se ti interessa la formula per trasformare px in dpi è questa.
px = dp × density ÷ 160

In ogni caso,non puoi lavorare con i px in Android.
Parti dal layout di @Bradipao.

Crea la tue immagini con una risoluzione sufficiente a coprire il caso maggiore, poi vai qui e crei le immagini per le diverse densità:
Android Asset Studio - Icon Generator - Generic icons

Quindi usa android:background="myImage" nei vari pulsanti.
Usa i vari attributi, in base alle tue reali esigenze:
android:scaleType="centerCrop" ...
android:adjustViewBounds="true"....

Probabilmente essendo pulsanti sarebbero meglio dei selector, anzichè una immagne.

Ultimo, il dispositivo ruota nelle mani di chi lo utilizza.
Per bloccare la rotazione ci deve essere un motivo molto molto valido.




Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:specificare larghezza in dpi
« Risposta #6 il: 18 Novembre 2013, 18:20:26 CET »
0
"Crea la tue immagini con una risoluzione sufficiente a coprire il caso maggiore,"

abMarioPower provo a fare un passo alla volta
L'app si userà solo in verticale
Il Target maggiore è il samsung galaxy s4, le caratteristiche di questo cell sono:
Full HD 1920×1080 pixel
densità  441ppi

Quindi dovendo disporre 5 pulsanti su una larghezza di 1080px con densità 441
i px di ciascuno dei 5 pulsanti sarà
px = (dp * 441 / 160 ) / 5

al posto di dp che valore devo metterci?