2012-01-16 8 views
5

androidのクラスjava.awt.Dimensionと同等のフォームは何ですか?クラスのJava on android

+6

あなたはJavaのスイング寸法クラスequivivalentを意味していますか?単一行の質問に役立つ回答が得られないことがあります。できるだけ多くの情報を提供してください。 – kosa

+0

ええ!そのJavaスイングDimensionクラス相当の – Thiyagu

答えて

1

Pair<Integer, Integer>は、Androidの汎用タプルクラスです。 (getWidth()getHeight()firstsecondに置き換える必要があります)。Androidの他の場所では、Androidチームはこの目的のためにアドホッククラスを使用しているようです(例:Camera.Size)。

+1

は、最終的にガベージコレクションが必要なIntegerボクシングのための2つの追加 "new"を持つでしょう。例えば。レイアウトコードでDimensionsを使用していて、多くのビューを持っている場合、これはgc()への追加の負担です。代わりに、原子タイプを持つDimensionsホルダーを実装し、ビューの生存期間にわたってViewデータメンバーを保持して、Viewデータメンバーを使用することができます。任意のボクシング/アンボクシングとガベージコレクションなしのレイアウトアルゴリズム。基本的なAndroidビューでは、割り当てを避けるために一時的なRect [F]ストレージを使用しているのと同じ方法です。追加の利点は、JITが最終的なメソッドをインライン化できることです。より速いコード – Leo

0

は、なぜあなたは代わりのような非常に簡単なものを実装する他のクラスを乱用する必要があります:

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

ほとんどのプログラマーは 'hashCode()'と 'Parcelable'を実装するのを忘れてしまい、そのようなバニラリティで貴重な時間を無駄にします。良いAndroid APIとより重要な問題に移った;) –

7

あなたはこれらのオプションのいずれかを選択できます。

  1. android.util.Size(API 21以降)。それはgetWidth()getHeight()を持っていますが、それは変更不可能です。

  2. android.graphics.Rect。それはgetWidth()getHeight()を持っていますが、それらは内部のleft,top,right,bottomに基づいており、すべての余分な変数とユーティリティメソッドで膨らんでいるようです。無地のコンテナですが、名前が適切ではない、それはメンバーがxおよびサイジングのための理想的ではないyと呼ばれているメインだ

  3. android.graphics.Pointしかし、これはここに見られるようにAndroidのフレームワーク自体から表示幅と高さを取得するとき/乱用を使用するクラスのようだ:

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