Размер класса для Java на Android - PullRequest
7 голосов
/ 16 января 2012

Какая эквивалентная форма класса java.awt.Dimension для андроида?

Ответы [ 3 ]

9 голосов
/ 17 марта 2015

Вы можете выбрать один из следующих вариантов:

  1. android.util.Size (начиная с API 21).Он имеет getWidth() и getHeight(), но он неизменен, то есть после его создания вы не сможете его изменить.

  2. android.graphics.Rect.У него есть getWidth() и getHeight(), но они основаны на внутренних left, top, right, bottom и могут казаться раздутыми со всеми дополнительными переменными и служебными методами.

  3. android.graphics.Point, который является простым контейнером, но имя не является правильным, и его основные члены называются x и y, что не идеально подходит для определения размера. Однако , этот класс, по-видимому, используется / используется при получении ширины и высоты отображения из самой платформы Android, как показано здесь:

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;
    
1 голос
/ 02 сентября 2012

Вы можете использовать Pair<Integer, Integer>, который является общим классом кортежей Android. (Однако вам придется заменить getWidth() и getHeight() на first и second.) В других местах API Android команда Android, кажется, использует для этой цели специальные классы, например Camera.Size.

0 голосов
/ 12 июня 2014

Почему вам нужно злоупотреблять другими классами вместо того, чтобы реализовывать что-то предельно простое, например:

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));
    }

}
...