[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
質問
カスタム要素をいくつか作成したのですが、それらをプログラムによって右上に配置したいのです (
n
ピクセル、上端から
m
右端から1ピクセル)。したがって、画面の幅と高さを取得してから、位置を設定する必要があります。
int px = screenWidth - m;
int py = screenHeight - n;
どうすれば
screenWidth
と
screenHeight
をメインアクティビティで使用しますか?
解決方法は?
表示寸法をピクセル単位で知りたい場合は
getSize
:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
もし、あなたが
Activity
を使用すると、デフォルトの
Display
を経由して
WINDOW_SERVICE
:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
フラグメントの中でこれを実現したい場合は、Activity.WindowManager (in Xamarin.Android) または getActivity().getWindowManager() (in java) を使ってください。
以前
getSize
が導入されたとき (APIレベル13) は
getWidth
と
getHeight
メソッドがありますが、現在では非推奨となっています。
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
しかし、あなたが説明している使用例では、レイアウトのマージン/パディングがより適切であると思われます。
別の方法としては ディスプレイメトリクス
<ブロッククオートディスプレイのサイズ、密度、フォントのスケーリングなど、ディスプレイに関する一般的な情報を記述した構造体です。DisplayMetricsのメンバにアクセスするには、次のようにオブジェクトを初期化します。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
を使用することができます。
widthPixels
の情報を取得することができます。
"ディスプレイの絶対幅をピクセル単位で指定します。
例
Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
APIレベル30アップデート
final WindowMetrics metrics = windowManager.getCurrentWindowMetrics();
// Gets all excluding insets
final WindowInsets windowInsets = metrics.getWindowInsets();
Insets insets = windowInsets.getInsetsIgnoreVisibility(WindowInsets.Type.navigationBars()
| WindowInsets.Type.displayCutout());
int insetsWidth = insets.right + insets.left;
int insetsHeight = insets.top + insets.bottom;
// Legacy size that Display#getSize reports
final Rect bounds = metrics.getBounds();
final Size legacySize = new Size(bounds.width() - insetsWidth,
bounds.height() - insetsHeight);
関連
-
Windowsのadbシェルでデータディレクトリにアクセスするとパーミッションが拒否される
-
SpinnerのOnItemSelectedListenerのonItemSelectedメソッドの4つのパラメーターの意味
-
超シンプルなアンドロイドのタイムディレイ機能
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] 画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] Bitmapオブジェクトに画像を読み込む際にOutOfMemoryが発生する問題
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Androidで画面の幅と高さを取得する
-
[解決済み] ActionBarのサイズをピクセル単位で教えてください。
-
Gradle の同期に失敗しました。com.android.tools.build:gradle が見つかりませんでした。
-
Android Studio を 3.6.3 にアップデートした後、構成 :classpath のアーティファクトをすべて解決できない。
-
Androidで発生した問題、解決策とヒント
-
アンドロイドスタジオでJunitのエラー問題を解決する
-
エラー:未宣言の識別子(AS)の使用
-
Android--shape--描画のコーナー、グラデーション、パディング、サイズ、ソリッド、ストロークのプロパティを指定する。
-
アンドロイドスタジオソフトウェア使用詳細説明書
-
[解決済み】Androidでビットマップのサイズを変更する方法は?