Autore Topic: Orientamento per i diversi schermi  (Letto 622 volte)

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Orientamento per i diversi schermi
« il: 10 Settembre 2013, 02:00:59 CEST »
0
Salve, volevo sapere come posso fare in modo che un applicazione nei smartphone della stessa dimensione di un galaxy ace,ad esempio, e/o inferiore, non cambi orientamento e resti sempre in portrait, mentre nei smartphone di dimensioni superiori puo' essere cambiato l'orientamento.
Come potrei fare? Grazie mille in anticipo  :D
Vincenzo Cimino @ Google Play Store


Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:Orientamento per i diversi schermi
« Risposta #1 il: 10 Settembre 2013, 02:45:52 CEST »
0
Ti consiglio di creare differenti layout: uno per  i tablet e gli altri per gli smartphone. Nella cartella res/layout/my_layout.xml    ci saranno i layout di default, mentre in res/layout-xlarge-land/my_layout.xml / e res/layout-xlarge-port/my_layout.xml /  metterai i layout per i tablet.

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:Orientamento per i diversi schermi
« Risposta #2 il: 10 Settembre 2013, 09:31:29 CEST »
0
Salve, volevo sapere come posso fare in modo che un applicazione nei smartphone della stessa dimensione di un galaxy ace,ad esempio, e/o inferiore, non cambi orientamento e resti sempre in portrait, mentre nei smartphone di dimensioni superiori puo' essere cambiato l'orientamento.
Come potrei fare? Grazie mille in anticipo  :D

Lo state chiedendo in molti ultimamente.
Su android il blocco della rotazione è possibile ma è uno degli antipattern per eccellenza.
NON FARLO, semplicemente perchè non c'è motivo di farlo. (esistono solo poche eccezioni a questa regola..)

Qui trovi la linea guida:
Designing for Multiple Screens | Android Developers

Ti consiglio di creare differenti layout: uno per  i tablet e gli altri per gli smartphone. Nella cartella res/layout/my_layout.xml    ci saranno i layout di default, mentre in res/layout-xlarge-land/my_layout.xml / e res/layout-xlarge-port/my_layout.xml /  metterai i layout per i tablet.

Questa notazione è valida (e funziona) ma oggi si preferisce utilizzare le nuove notazioni:
res/layout   per gli smartphone
res/layout-sw600dp per i tablet da 7''
res/layout-sw720dp per i tablet da 10''

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:Orientamento per i diversi schermi
« Risposta #3 il: 11 Settembre 2013, 20:23:33 CEST »
0
Ti consiglio di creare differenti layout: uno per  i tablet e gli altri per gli smartphone. Nella cartella res/layout/my_layout.xml    ci saranno i layout di default, mentre in res/layout-xlarge-land/my_layout.xml / e res/layout-xlarge-port/my_layout.xml /  metterai i layout per i tablet.

Si questo lo sapevo già, ma non intendevo questo, grazie lo stesso  :-)

Su android il blocco della rotazione è possibile ma è uno degli antipattern per eccellenza.
NON FARLO, semplicemente perchè non c'è motivo di farlo. (esistono solo poche eccezioni a questa regola..)

Allora il mio problema è che ruotando in dispositivo di norma si vede bene, ma in dispositivi più piccoli come il Galaxy Ace, i bottoni diventano troppo stretti quando il dispositivo va in landscape e non si vedono bene, come posso risolvere? Questo è il mio layout:
Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity" >
   
    <LinearLayout
       android:id="@+id/linearlayout1"
       android:layout_weight="1"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical" >

        <EditText
           android:id="@+id/edittext1"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight="1"
           android:inputType="number" />

        <EditText
           android:id="@+id/edittext2"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight="1"
           android:inputType="number" />

        <EditText
           android:id="@+id/edittext3"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight="1"
           android:inputType="number" />

        <EditText
           android:id="@+id/edittext4"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight="1"/>
       
               
        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >
       
            <Button
                android:id="@+id/button1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="@string/Convert" />
           
            <Button
                android:id="@+id/button2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="@string/Cancel" />

        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

Grazie mille per l'aiuto  :D
Vincenzo Cimino @ Google Play Store


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:Orientamento per i diversi schermi
« Risposta #4 il: 11 Settembre 2013, 22:00:28 CEST »
0
Dipende da cosa vuoi ottenere come risultato finale.

Innanzitutto noto che su tutti gli elementi hai messo
Codice (XML): [Seleziona]
android:layout_height="match_parent"C'è un motivo particolare?
Sul LinearLayout che contiene i bottoni io metterei una altezza di 48dp, inserirei una ScrollView che racchiude tutto.
Valuta anche la possibilità di usare la actionBar in Action Mode al posto dei button.

Poi tu usi un Linear (il primo) dentro un Relative senza altri child. Puoi eliminare uno dei due.


Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:Orientamento per i diversi schermi
« Risposta #5 il: 12 Settembre 2013, 00:36:33 CEST »
0

Innanzitutto noto che su tutti gli elementi hai messo
Codice (XML): [Seleziona]
android:layout_height="match_parent"C'è un motivo particolare?

Si, che così facendo, gli oggetti prendono tutto lo spazio disponibile.

Sul LinearLayout che contiene i bottoni io metterei una altezza di 48dp, inserirei una ScrollView che racchiude tutto.
Valuta anche la possibilità di usare la actionBar in Action Mode al posto dei button.

Poi tu usi un Linear (il primo) dentro un Relative senza altri child. Puoi eliminare uno dei due.

Ho seguito il tuo consiglio, e va anche bene in questa maniera, ma il problema è che in uno schermo da 5.1'' si vede troppo piccolo :S e inoltre come potrei fare che non appena viene avviata l'applicazione non si apre la query? Adesso il layout risulta così:

Codice (XML): [Seleziona]
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/background"
     tools:context=".MainActivity"  >

    <LinearLayout
       android:id="@+id/linearlayout1"
       android:layout_weight="1"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical" >

        <EditText
           android:id="@+id/edittext1"
           android:layout_width="match_parent"
           android:layout_height="90dp"
           android:layout_weight="1"
           android:hint="@string/decimal"
           android:inputType="number" />

        <EditText
           android:id="@+id/edittext2"
           android:layout_width="match_parent"
           android:layout_height="90dp"
           android:layout_weight="1"
           android:hint="@string/binary"
           android:inputType="number" />

        <EditText
           android:id="@+id/edittext3"
           android:layout_width="match_parent"
           android:layout_height="90dp"
           android:layout_weight="1"
           android:hint="@string/Octal"
           android:inputType="number" />

        <EditText
           android:id="@+id/edittext4"
           android:layout_width="match_parent"
           android:layout_height="90dp"
           android:layout_weight="1"
           android:hint="@string/hexadecimal" />
       
               
                <LinearLayout
                    android:id="@+id/linearLayout3"
                    android:layout_weight="1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical" >
               
                    <Button
                        android:id="@+id/button1"
                        android:layout_width="match_parent"
                        android:layout_height="48dp"
                        android:layout_weight="1"
                        android:background="@drawable/button_background"
                        android:text="@string/Convert" />
                   
                    <Button
                        android:id="@+id/button2"
                        android:layout_width="match_parent"
                        android:layout_height="48dp"
                        android:layout_weight="1"
                        android:text="@string/Cancel" />
                </LinearLayout>
    </LinearLayout>
</ScrollView>

P.S penso che prenderò in considerazione l'idea di usare la actionbar in action mode al posto dei button, grazie mille ancora  :D
Vincenzo Cimino @ Google Play Store