Android3.0とAndroid1/2の違い(ステータスバー) [スマートフォン]
Android1/2のステータスバーって画面上部にありますよね。
この上部ステータスバーの高さを取得するための方法として結構有名な手段がこれ。
Rect rect= new Rect();
Window window= activity.getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rect);
int statusBarHeight= rect.top;
ところがですね~、Android3(タブレット)ではこれが通用しないんです。なぜならば・・・ステータスバーが画面下部に移ってしまったから。(XOOMなどの画面サンプルをよくご覧になっていただければわかると思います)
上記のコードではrect.topは0となります。
Android3の場合、(画面全体のサイズ- Rect.height)でステータスバーの高さが計算できるのかな。(未確認です)
Android3.1以降では通常のスマートフォンでも利用できるように最適化していくと先日のGoogle I/O 2011で発表されていました。その時ステータスバーが上部に表示されるのか、下部に表示されるのかわかりませんが、どちらに表示されてもいいように実装するのがよさそうです。
(今のところ両方ということはなさそうですのでRect.topが0なら画面下部にステータスバーがあると想定してよさそう)
この上部ステータスバーの高さを取得するための方法として結構有名な手段がこれ。
Rect rect= new Rect();
Window window= activity.getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rect);
int statusBarHeight= rect.top;
ところがですね~、Android3(タブレット)ではこれが通用しないんです。なぜならば・・・ステータスバーが画面下部に移ってしまったから。(XOOMなどの画面サンプルをよくご覧になっていただければわかると思います)
上記のコードではrect.topは0となります。
Android3の場合、(画面全体のサイズ- Rect.height)でステータスバーの高さが計算できるのかな。(未確認です)
Android3.1以降では通常のスマートフォンでも利用できるように最適化していくと先日のGoogle I/O 2011で発表されていました。その時ステータスバーが上部に表示されるのか、下部に表示されるのかわかりませんが、どちらに表示されてもいいように実装するのがよさそうです。
(今のところ両方ということはなさそうですのでRect.topが0なら画面下部にステータスバーがあると想定してよさそう)
なるほどですね。僕はアンドロイド3.0がタブレットでもスマートフォンでも使えると思います。
そして、アンドロイド2がスマートフォンだけで使えるんでしょうね。
by BlackBerry 仕様 (2011-05-19 00:28)