Autore Topic: Posizionare un LineraLayout all'interno di un Activity  (Letto 786 volte)

Offline mirk83

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg Optimus Black
  • Sistema operativo:
    Windows 7
Posizionare un LineraLayout all'interno di un Activity
« il: 17 Novembre 2011, 02:09:06 CET »
0
Salve, vi scrivo per esporvi il mio problema.

Sto realizzando un'applicazione e sto avendo dei problemi circa il posizionamento di un layout.
L'activity ha come background un immagine sulla quale voglio posizionare in un punto ben determinato il layout che contiene dei bottoni.  Vorrei non inserire dei valori interi in dip o px perchè mi interessa mantenere la stessa posizione e proporzione per tutti i tipi di display. Ovviamente non mi interessa posizionare il mio oggetto in alto, al centro o in basso ma in un ben preciso punto del display.
Per le immagini ho già effettuato il ridimensionamento e memorizzato le varie versioni nelle cartelle hdpi, mdpi e ldpi ma quando avvio l'emulatore in varie risoluzioni le immagini mantengono le proporzioni ma il layout non rimane mai nella posizione da me assegnata.

Ringrazio in anticipo chi avrà la pazienza di ripondermi.



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:Posizionare un LineraLayout all'interno di un Activity
« Risposta #1 il: 17 Novembre 2011, 07:57:40 CET »
0
La domanda è molto generica, se puoi fare l'esempio del caso specifico forse c'è modo di suggerire qualcosa.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
R: Posizionare un LineraLayout all'interno di un Activity
« Risposta #2 il: 17 Novembre 2011, 11:02:56 CET »
0
Essendo appunto che vuoi mantenere la compatibilità con diverse dimensioni /risoluzioni dovresti forse definire meglio cosa intendi con "un punto specifico" :-)

Inviato dal mio HTC Desire usando Tapatalk

Offline mirk83

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg Optimus Black
  • Sistema operativo:
    Windows 7
Re:Posizionare un LineraLayout all'interno di un Activity
« Risposta #3 il: 18 Novembre 2011, 14:57:17 CET »
0
Grazie per le risposte, mi spiego meglio.
L'Activity ha come background un'immagine e su questa vorrei posizionare dei bottoni che devono comporre una pulsantiera.
Questo è il file xml:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
         
         
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="vertical"
                android:gravity="center_horizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/presentation">
     
         <LinearLayout
           xmlns:android="http://schemas.android.com/apk/res/android"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:gravity="center_horizontal"
           android:orientation="vertical">
 
        <Button
           android:id="@+id/button1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:background="@drawable/button_fin"
           android:onClick="close" >
        </Button>
       
       </LinearLayout>

       
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="bottom|center_horizontal" >
     
           
          <TableLayout
           xmlns:android="http://schemas.android.com/apk/res/android"
           android:id="@+idLayout/viewTL"
           android:gravity="bottom|center_horizontal"
           android:layout_width="wrap_content"
           android:layout_height="match_parent"  >

            <TableRow
               android:id="@+id/tableRow1"
               android:layout_width="match_parent"
               android:layout_height="wrap_content" >

                <Button
                   android:id="@+id/button2"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:background="@drawable/presleft"
                   android:onClick="sendCommand"
                   android:tag="Left" />

                <Button
                   android:id="@+id/button3"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:background="@drawable/presstart"
                   android:onClick="sendCommand"
                   android:tag="F5" />

                <Button
                   android:id="@+id/button4"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:background="@drawable/presright"
                   android:onClick="sendCommand"
                   android:tag="Right" />
            </TableRow>

            <TableRow
               android:id="@+id/tableRow2"
               android:layout_width="match_parent"
               android:layout_height="wrap_content" >

                <Button
                   android:id="@+id/button2"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:background="@drawable/presfirst"
                   android:onClick="sendCommand"
                   android:tag="Home" />

                <Button
                   android:id="@+id/button3"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:background="@drawable/presesci"
                   android:onClick="sendCommand"
                   android:tag="Esc" />

                <Button
                   android:id="@+id/button4"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:background="@drawable/preslast"
                   android:onClick="sendCommand"
                   android:tag="End" />
            </TableRow>
           
             <TableRow
               android:id="@+id/tableRow2"
               android:layout_width="match_parent"
               android:layout_height="wrap_content" >



                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:background="@drawable/footer">
                    </ImageView>
             </TableRow>
       
        </TableLayout>

   </LinearLayout>
                               
</LinearLayout>

Negli attributi background di button ho inserito le immagini che rivestono il bottone e queste sono state ridimensionate seguendo la regola 6:4:3 rispettivamente per i display hdpi, mdpi e ldpi . Ad esempio il background del LinearLayout hdpi ha dimensioni 480x800 e di conseguenza per mdpi misura 320x534 e per ldpi misura 240x400.

Fatta questa premessa,  quando realizzo una UI su eclipse selezionando la risoluzione WVGA riesco ad organizzare gli elementi come voglio ma quando mi sposto su QVGA, ad esempio, le proporzioni non vengono rispettate e il tutto appare oltre che schiacciato anche non allineato come vorrei. Inoltre, come si vede dal codice xml, per evitare di inserire numeri ho realizzato una immagine trasparente chiamata footer che permette di posizionare lontano dal limite inferiore il blocco di pulsanti.
Premetto che sono un neofita del mondo android e forse per questo alcuni concetti di programmazione non mi sono chiari.

Vi ringrazio per ogni suggerimento.