HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2019/10/10

Androidアプリ作成に必須の多端末に対応するデザイン方法について解説する dipを極める Androidアプリ作成に必須の多端末に対応するデザイン方法について解説する dipを極める

(Androidの開発で dipって何?密度非依存ピクセル?Density-Independent Pixels?って何者?)

Tags: [Android開発]




● Androidアプリ作成に必須の多端末に対応するデザイン方法について学ぶ dipってなに?

 Androidの開発で dipって何?密度非依存ピクセル?Density-Independent Pixels?って何者?

Androidのレイアウト、デザインで重要な概念
密度非依存ピクセル(dp または dipと表記)
dip = Density-Independent Pixels (「密度非依存」ピクセル)
※ dpi = Dot per Inch(1インチ当たりのドット密度)とは別物なので注意

画面互換性の概要 Android デベロッパー ドキュメント ガイド


● 画面サイズが同じで画面解像度が異なる端末の例

 「密度非依存」の例、理解を簡単にする為に数値を簡略化しています。
 全ての画面サイズは1インチの端末と仮定します。
 (なお、画面サイズは「対角線」の長さを意味します。これは一般の家庭用テレビでも同様です)

・全ての画面サイズは1インチの端末と仮定
全ての画面サイズは1インチの端末と仮定
画面密度画面密度倍率画面解像度(ピクセル)
mdpi中密度1.0倍4*4px
hdpi高密度1.5倍6*6px
xhdpi超高密度2.0倍8*8px
xxhdpi超超高密度3.0倍12*12px
xxxhdpi超超超高密度4.0倍16*16px
※ dip換算で言うと全て 4*4dipサイズ

● 画面サイズが同じで画面解像度が異なる端末の例

 例として 1pxの横線を描画した場合
 1px = 1ドット幅の線を描画した場合、端末の画面解像度が異なると見え方(線の太さ)が変わります。

・1pxの線を描画した場合
1pxの線を描画した場合



● 画面サイズが同じで画面解像度が異なる端末の例 その2

 例として 2px角のドットを描画した場合
 2px = 2ドット角の四角を描画した場合、端末の画面解像度が異なると見え方(四角の大きさ)が変わります。

width="2px" height="2px"

・2px角の四角を描画した場合
2px角の四角を描画した場合



● 画面サイズが同じで画面解像度が異なる端末でも同じ大きさの描画にする場合は dipを使う

 その様な場合に dip = Density-Independent Pixelsの単位指定を使います。

 例として 2dpのドットを描画した場合
 2dp = 2dip角の四角を描画した場合、端末の画面解像度が異なっていても見え方(四角の大きさ)が同じになります。

width="2dp" height="2dp"
※ width="2dip" height="2dip"でも同じ意味

・2dp角の四角を描画した場合
2dp角の四角を描画した場合



ldpi低密度0.75倍1dp=0.75px過去の遺物
mdpi中密度1.0倍1dp=1px基準
hdpi高密度1.5倍1dp=1.5px
xhdpi超高密度2.0倍1dp=2px
xxhdpi超超高密度3.0倍1dp=3px
xxxhdpi超超超高密度4.0倍1dp=4px


● dipを使ってデザインをすればどんな端末でも大丈夫なの?その1

 答え:No

 理由:端末によっては変な解像度で認識している物が存在するから

 例として、HUAWEIの MediaPad T5と SAMSUNGの Galaxy Tab A (2019)は同じ 10.1インチ、画面解像度は 1920x1200ですが、
 ・HUAWEIの MediaPad T5は自分を xhdpiの端末と認識
 ・SAMSUNGの Galaxy Tab A (2019)は自分を hdpiの端末と認識
 と画面密度の認識が異なっています。
 (理論計算値では hdpiとなり、SAMSUNG端末の認識が正しい事になる)

 なので、HUAWEIの MediaPad T5端末では dip指定でデザインをしていても「意図しない」画面表示に成ります。

 具体的には HUAWEIの MediaPad T5端末では通常の 10.1インチの端末と比べて 1.33倍の大きさで表示されます。(2.0/1.5 = 1.33)
 例えば 10dp角の四角の場合、MediaPad T5端末では 13.3dp相当の大きさで描画される。


● dipを使ってデザインをすればどんな端末でも大丈夫なの?その2

 答え:No

 理由:端末によっては微妙な違いで解像度区分が異なる場合が有るから

 例として、
 7インチで 1280x720の端末 = hdpi
 8インチで 1280x720の端末 = mdpi

 物理的な画面サイズは近似しているが、解像度区分が異なるので 8インチ端末の場合は 7インチ端末に比べて 2/3倍の大きさで表示されます。(1.0/1.5 = 2/3)

 具体的には 8インチの端末では 7インチの端末と比べて 0.66倍の大きさで表示されます。
 例えば 10dp角の四角の場合、8インチ端末では 6.6dp相当の大きさで描画される。



●「無能」アプリデザイナー

 アプリを作る場合にはそれぞれの分野の人が集まって作ります。

 アプリの「画面デザイン」に関してはデザイナーが行ないますが、「ただ単に絵が描ける」だけで「アプリデザイナー」を名乗る「無能」デザイナーも居ます。

 この様な無能デザイナーが提出してくるデザイン指示書は「ピクセル指定」で指定している事が 100%です。
 また、その寸法を指定している場所が、アプリのレイアウト作成に必要な箇所に指定が無く、不要な所(無意味な所)には念入りに指定が書き込んであるとか有りました。
 (もっとも「ピクセル」と言う概念すら知らない極度に馬鹿なデザイナーも過去には居ました)

 「アプリ」デザイナーを名乗るからには Android端末は千差万別である事、画面解像度の違いが存在する事、dip指定が基本な事くらい理解していようね。。。

 その様なデザイナーは世の中には画面サイズや画面解像度が1種類(または2種類)しかないと考えています。
 (「あるある」で言うと iPhone 6と iPhone 6 plusの 2種類だけ)
 え?デザイン指示書が iPhoneサイズで来てる? Androidアプリを作ってるんだけど。。。



Tags: [Android開発]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

AACの記事から1年経ってデータ バインディングの俺的カンニング帳を作る
AACの記事から1年経ってデータ バインディングの俺的カンニング帳を作る

  Android開発 データ バインディング 虎の巻 Android Studio

Androidのアプリ開発で AAR形式のライブラリを Androidプロジェクトに組み込む方法
Androidのアプリ開発で AAR形式のライブラリを Androidプロジェクトに組み込む方法

  Androidプロジェクトに AAR/JAR形式のライブラリを組み込む方法のバリエーション

Android JNI NDKの C言語側で R.rawや Assetのファイルを FileDescriptor経由で直接読み込む方法
Android JNI NDKの C言語側で R.rawや Assetのファイルを FileDescriptor経由で直接読み込む方法

  Android JNIの C言語で FileDescriptor経由でダイレクトに rawリソースを読み込む、メモリ受け渡しやダミーファイル作成が不要

Kotlin大嫌い人間が Kotlin言語を必死に勉強する
Kotlin大嫌い人間が Kotlin言語を必死に勉強する

  行末にセミコロン;の無い言語は大嫌い

2019年になったから Android Architecture Componentsで開発しようじゃないか!今から始めても遅くない!
2019年になったから Android Architecture Componentsで開発しようじゃないか!今から始めても遅くない!

  Androidの開発で AACって何? DataBinding、LiveData、ViewModel、LifecycleObserverについて解説




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2019 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/android/android_screen_layout_dip/