[解決済み] Android H5でtarget-densitydpiとwindow.innerWidthの関係を教えてください。
質問
私のgenymotionエミュレータは、Google Nexus7 -4.1.1 API16- 800 * 1280です。 Androidでwebviewを使ってHTML5を読み込む際、target-densitydpiとwindow.innerWidthの関係で混乱しました。
<meta name="viewport" content="width=device-width,**target-densitydpi=device-dpi**,initial-scale=1.0,minimum=1.0,maximum-scale=1.0,user-scalable=no">
$(function(){alert(window.innerWidth); //get the viewport width
alert(window.devicePixelRatio);}) // always is 1.3312499523162842 no matter what target-densitydpi is
いくつかのテストをする。
window.innerWidth
**target-densitydpi=device-dpi:** 800
**target-densitydpi=low-dpi:** 452
**target-densitydpi=middle-dpi:** 602
**target-densitydpi=high-dpi:** 909
**ignore target-densitydpi:** 602
window.inerWidthの計算方法について教えてください。window.devicePixelRatioと何か関係があるのでしょうか? ありがとうございます。
どのように解決するのですか?
を使用することは避けなければなりません。
target-densitydpi
可能であれば この属性は非標準であり、Android WebViewの最新バージョンでは実際に非推奨となっています。
大まかには
target-densitydpi
は、CSS のピクセルと画面のピクセルの比率を表すスケーリング係数を定義しています。以下のように計算されます。
-
について
device-dpi
として、1 / デバイススケール係数; あなたの場合。1 / (4/3) = 0.75
; -
について
low-dpi
,middle-dpi
とhigh-dpi
はデバイスの特性に依存せず、それぞれ160を120、160、240で割って算出されるため、以下のようになります。4 / 3
,1
と2 / 3
;
そして、CSSの幅は、計算された値で割ることによって拡大縮小されます。あなたの場合、CSSの幅は602になります。
(800 / 1.33124...)
. また、丸め誤魔化しているため、単位がずれていることがあります。
関連
-
[解決済み】メソッド 'findViewById(int)' を解決できない。)
-
[解決済み】Android ADB デバイスがオフラインで、コマンドを発行できない。
-
[解決済み】apkインストール時のINSTALL_FAILED_NO_MATCHING_ABIS
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] 画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】メソッド 'findViewById(int)' を解決できない。)
-
[解決済み】Android ADB デバイスがオフラインで、コマンドを発行できない。
-
[解決済み】OnFragmentInteractionListenerを実装する方法
-
[解決済み】onCreateOptionsMenu(Menu メニュー)とは何ですか?)
-
[解決済み】"ビットマップが大きすぎてテクスチャにアップロードできない"
-
[解決済み】Bluestackの向きを変更する : ポートレート/ランドスケープモード
-
[解決済み】アクティビティにない場所でのgetLayoutInflater()の呼び出し
-
[解決済み] android.support.design.widget.FloatingActionButton クラスの展開に失敗しました。
-
[解決済み] android.intent.action.MAINの意味は何ですか?
-
[解決済み] Android Fragment onAttach() 非推奨