android上的java的类维度

Thi*_*iya 7 java android dimensions

java.awt.Dimensionandroid 的等效形式是什么?

Ste*_*sen 10

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

  1. android.util.Size(自API 21起).它有getWidth(),getHeight()但它是不可变的,这意味着一旦它被创建,你就无法修改它.

  2. android.graphics.Rect.它有getWidth(),getHeight()但它们基于内部left,topright,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;
    
    Run Code Online (Sandbox Code Playgroud)


mar*_*jno 1

您可以使用Pair<Integer, Integer>Android 的通用元组类。(不过,您需要将getWidth()and替换getHeight()firstand second。)在 Android API 的其他地方,Android 团队似乎为此目的使用临时类,例如Camera.Size

  • Pair&lt;Integer, Integer&gt; 将有 2 个额外的“新”整数装箱,最终需要进行垃圾收集。例如,如果您在布局代码中使用 Dimensions 并且有很多视图,这对 gc() 来说是不必要的额外负担。相反,您可以使用原子类型实现 Dimensions 持有者,并让 View 数据成员在视图的生命周期内保存它,并在例如布局算法中使用它,无需任何装箱/拆箱和垃圾收集。基本 Android 视图使用临时 Rect[F] 存储来避免分配的方式相同。额外的好处是 JIT 可以内联最终方法 - 更快的代码 (2认同)