2012-01-16 10 views
5

Qual è la forma equivalente di classe java.awt.Dimension per Android?Class Dimension per Java su Android

+6

vuoi dire equivivalent Java Swing classe Dimension? La domanda a linea singola potrebbe non ottenere una risposta utile. Si prega di fornire quante più informazioni possibile. – kosa

+0

sì !! sua la classe Java Swing Dimension equivalente – Thiyagu

risposta

1

Si potrebbe utilizzare Pair<Integer, Integer> che è la classe generica tuple di Android. (È necessario sostituire getWidth() e getHeight() con first e second, tuttavia.) In altri punti dell'API Android, il team di Android sembra utilizzare classi ad hoc per questo scopo, ad esempio Camera.Size.

+1

coppia avrà 2 extra "nuovo" per intero la boxe che alla fine bisogno di essere garbage collection. Per esempio. se si utilizzano le dimensioni nel codice di layout e si dispone di un sacco di vista questo è un onere aggiuntivo non necessario su gc(). Puoi invece implementare il titolare di Dimensioni con tipi atomici e disporre di un membro dati View che lo trattiene per tutta la durata della visualizzazione e utilizzarlo ad es. algoritmi di layout senza alcun boxing/unboxing e garbage collection. Allo stesso modo, le visualizzazioni Android di base utilizzano l'archiviazione temporanea Rect [F] per evitare allocazioni. vantaggio è JIT può inline metodi finali - codice più veloce – Leo

0

Perché avete bisogno di abusare di altre classi invece di implementare qualcosa di estremamente semplice come:

public class Dimensions { 

    public int width; 
    public int height; 

    public Dimensions() {} 

    public Dimensions(int w, int h) { 
     width = w; 
     height = h; 
    } 

    public Dimensions(Dimensions p) { 
     this.width = p.width; 
     this.height = p.height; 
    } 

    public final void set(int w, int h) { 
     width = w; 
     height = h; 
    } 

    public final void set(Dimensions d) { 
     this.width = d.width; 
     this.height = d.height; 
    } 

    public final boolean equals(int w, int h) { 
     return this.width == w && this.height == h; 
    } 

    public final boolean equals(Object o) { 
     return o instanceof Dimensions && (o == this || equals(((Dimensions)o).width, ((Dimensions)o).height)); 
    } 

} 
+2

Poiché la maggior parte dei programmatori tendono a dimenticare di implementare 'hashCode()' e 'Parcelable' e finiscono per perdere tempo prezioso con queste banalità quando potevano solo hanno usato' Point' fornito dal fine Android API e passò a questioni più urgenti;) –

7

È possibile scegliere una delle seguenti opzioni:

  1. android.util.Size (dal API 21). Ha getWidth() e getHeight() ma è immutabile, il che significa una volta che è creato, non è possibile modificarlo.

  2. android.graphics.Rect. Ha getWidth() e getHeight() ma sono basati su interno left, top, right, bottom e possono sembrare gonfiati con tutte le sue variabili extra e metodi di utilità.

  3. android.graphics.Point che è un contenitore semplice, ma il nome non è giusto ed è principale membri sono chiamati x e y che non è ideale per il dimensionamento. Tuttavia, questa sembra essere la classe di usare/abuso quando ottenere la larghezza ed altezza di visualizzazione dal quadro Android in sé come si vede qui:

    Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    int width = size.x; 
    int height = size.y;