android上java的类维度

android上java的类维度,java,android,dimensions,Java,Android,Dimensions,android的类java.awt.Dimension的等效形式是什么?您可以使用android的通用元组类。(不过,您需要将getWidth()和getHeight()替换为first和second。)在Android API的其他地方,Android团队似乎为此使用了特殊类,例如。为什么您需要滥用其他类,而不是实现非常简单的东西,如: public class Dimensions { public int width; public int height; pu

android的类
java.awt.Dimension
的等效形式是什么?

您可以使用android的通用元组类。(不过,您需要将
getWidth()
getHeight()
替换为
first
second
。)在Android API的其他地方,Android团队似乎为此使用了特殊类,例如。

为什么您需要滥用其他类,而不是实现非常简单的东西,如:

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

}

您可以选择以下选项之一:

  • android.util.Size
    (从API 21开始)。它有
    getWidth()
    getHeight()
    但它是不可变的,这意味着一旦创建了它,就不能修改它

  • android.graphics.Rect
    。它有
    getWidth()
    getHeight()
    ,但它们是基于内部
    的,并且可能因为所有额外的变量和实用方法而显得臃肿不堪

  • 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;
    

  • 您的意思是java swing维度类等效吗?单线问题可能无法得到有用的答案。请提供尽可能多的信息。是的!!java swing维度类equivalentPair将有2个额外的“新”整数装箱,最终需要进行垃圾收集。例如,如果您在布局代码中使用尺寸标注,并且有很多视图,这对gc()来说是不必要的额外负担。相反,您可以使用原子类型实现维度保持器,并让视图数据成员在视图的生命周期内保持它,并在布局算法中使用它,而不进行装箱/拆箱和垃圾收集。与基本Android视图使用临时Rect[F]存储避免分配的方式相同。另外一个好处是JIT可以内联最终的方法——更快的代码,因为大多数程序员往往忘记实现
    hashCode()
    Parcelable
    ,当他们本可以使用优秀的Android API提供的
    Point
    并着手处理更紧迫的事情时,就浪费了宝贵的时间