2013年4月13日土曜日

Android 画面サイズ(Activity に組み込んでおく)

UIなどを動的にコードで入れていったり, 変更したりする場合に必要な画面のサイズ(px)。

API が新しくなって, 少し変更したようです   (English is here )


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

簡単に抜き出すとこんな感じ。 これを Activity の中で毎回使うわけですが, 毎回同じコードを書くのが面倒。いっそのこと, Activity 全体で使えるようにしておけばいいのでは, 思うわけです。


public class DisplayActivity extends Activity 
{
    private int windows_width;
     
    private int window_height;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
         
        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        this.windows_width = size.x;    // width
        this.window_height = size.y;    // height
    }
     
    public int getWidth()
    {
        return windows_width;
    }
     
    public int getHeight()
    {
        return window_height;
    }
}

新しいActivity をつくり, そこの onCreate で取得し, getWidth(), getHeight()というメソッドを追加しておきました。Activity をextend する代わりに, こちらをextends して使えばいつでも使えます。使わない場合は, パフォーマンスのため, Activity でよいでしょう。

テスト

public class MainActivity extends DisplayActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.v("Display", "Width:" + getWidth() + " Height:" + getHeight());
    }
}

Log Cat に表示させてみます。

0 件のコメント:

コメントを投稿