问题如题描述,设计给的尺寸都是px的,而且也不告诉他们在什么尺寸和分辨率的屏幕上做的设计?作为程序员要如何转换单位?
我不是在问px与dp之间如何转换的问题。而是由设计师的px如何转换成写在xml里的dp的问题。
阿神2017-04-17 18:01:24
リーリー
このような状況に遭遇したときは、アーティスト (ここではデザイナーとは呼べません) に「これはできません!!!」と言うしかありません。
アプリの UI をデザインするときは常に、主流の標準解像度でデザインする必要があります。その後、対応する画面密度を見つけて、最終的にピクセルを dpi に変換できます。
この原則から逸脱すると、それが起こります。結局のところ、あなたの実装は非現実的であり、UI デザインの草稿とはかけ離れたものになります。
参照:
デバイス メトリクス
計算方法:
設計案の解像度とその解像度が一般的に対応する画面密度がわかったら、次の式に従って計算します。
p.s. 密度はデバイス メトリクスの [Density] 列の値です。
p.s. この熱血返信を読んだ後でも、アーティストと喧嘩しないでください。[フェイス カバー]卑怯者を認める] 2333
PHP中文网2017-04-17 18:01:24
まず第一に、デザインの画面サイズを知る必要があります
通常は 1080x1980 (? またはその他) で、通常は xxhdpi に属します。つまり、1dp は 3px に相当します
デザインの画面幅が 480 (または左右) しかない場合、1dp は 1px である必要があります
天蓬老师2017-04-17 18:01:24
1dp は、画面密度値が 160ppi の場合、つまり mdpi の場合、1dp = 1px として定義されます。 mdpi を標準とすると、これらの画面の密度値の比率は、ldpi: mdpi: hdpi: xhdpi: xxhdpi = 0.75: 1: 1.5: 2: 3、つまり、xhdpi の密度では 1dp=2px になります。 HDPIの場合、1dp=1.5px。その他の類推。
1dp=(画面 ppi/160)px
元のリンク
PHPz2017-04-17 18:01:24
public static float px2dp(Context context, float pxVal)
リーリー変換方法: px ---> dp