2012-01-16 23 views
5

¿Cuál es la forma equivalente de la clase java.awt.Dimension para android?Dimensión de clase para java en android

+6

Qué quiere decir equivivalent java swing de clase dimensión? La pregunta de una sola línea puede no ser una respuesta útil. Por favor, brinde tanta información como pueda. – kosa

+0

¡sí! es la clase java swing Dimension equivalente – Thiyagu

Respuesta

1

Puede usar Pair<Integer, Integer> que es la clase de tupla genérica de Android. (Necesitaría reemplazar getWidth() y getHeight() con first y second, sin embargo). En otros lugares de la API de Android, el equipo de Android parece usar clases ad-hoc para este propósito, por ejemplo Camera.Size.

+1

Pair tendrá 2 "nuevos" adicionales para el boxeo de enteros que eventualmente necesitarán ser recolectados. P.ej. si está utilizando Dimensiones en el código de diseño y tiene mucha vista, esto es una carga adicional innecesaria para gc(). En su lugar, puede implementar el titular de Dimensiones con tipos atómicos y tener un miembro de datos de visualización reteniéndolo durante toda la vida de la vista y usarlo en, por ejemplo, Algoritmos de diseño sin boxeo/unboxing y recolección de basura. De la misma manera, las vistas básicas de Android están usando el almacenamiento Rect [F] temporal para evitar asignaciones. Beneficio adicional es JIT puede alinear métodos finales - código más rápido – Leo

0

¿Por qué necesita para abusar de otras clases en lugar de implementar algo muy simple como:

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

Porque la mayoría de los programadores tienden a olvidarse de implementar 'hashCode()' y 'Parcelable' y terminan perdiendo un tiempo precioso con tales banalidades cuando podían simplemente usar' Point' proporcionado por el bien Android API y pasó a asuntos más urgentes;) –

7

Puede elegir una de estas opciones:

  1. android.util.Size (desde el API 21). Tiene getWidth() y getHeight() pero es inmutable, lo que significa que una vez que se ha creado no se puede modificar.

  2. android.graphics.Rect. Tiene getWidth() y getHeight() pero están basados ​​en left, top, right, bottom internos y pueden parecer inflados con todas sus variables adicionales y métodos de utilidad.

  3. android.graphics.Point que es un contenedor normal, pero el nombre no es correcto y que es principal miembros son llamados x y y que no es ideal para el dimensionamiento. Sin embargo , esto parece ser la clase de uso/abuso al conseguir ancho de la pantalla y la altura desde el propio marco de Android como se ve aquí:

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