Sukūriau savo programą, kurios aukštis ir plotis nurodytas pikseliais, skirtą "Pantech" įrenginiui, kurio skiriamoji geba yra 480x800.
Man reikia konvertuoti aukštį ir plotį G1 įrenginiui. Maniau, kad konvertavimas į dp išspręs problemą ir abiem įrenginiams pateiks tą patį sprendimą.
Ar yra koks nors paprastas būdas konvertuoti pikselius į dp? Ar yra kokių nors pasiūlymų?
// Converts 14 dip into its equivalent px
float dip = 14f;
Resources r = getResources();
float px = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
dip,
r.getDisplayMetrics()
);
Dp turėtumėte naudoti taip pat, kaip ir pikselius. Tai viskas, kas jie yra - nuo ekrano nepriklausomi pikseliai. Naudokite tuos pačius skaičius, kuriuos naudotumėte vidutinio tankio ekrane, ir dydis stebuklingai bus teisingas didelio tankio ekrane.
Tačiau panašu, kad jums reikia, jog jūsų išdėstymo dizaine būtų naudojama parinktis fill_parent. Naudokite fill_parent, kai norite, kad rodinys arba valdiklis išsiplėstų iki viso likusio tėvinio konteinerio dydžio.
PX
ir DP
yra skirtingi, bet panašūs.
DP
yra skiriamoji geba, kai atsižvelgiama tik į fizinį ekrano dydį. Kai naudojate DP
, jūsų maketą bus galima masteliais pritaikyti prie kitų panašaus dydžio ekranų su skirtingu pikseliniu
tankumu.
Tačiau kartais jums iš tikrųjų reikia pikselų
, o kai programiniame kode dirbate su matmenimis, visada turite reikalų su tikraisiais pikseliais
, nebent juos konvertuojate.
Taigi "Android" įrenginyje, įprasto dydžio hdpi
ekrane, 800x480 yra 533x320
(manau). Norėdami konvertuoti DP
į pikselus /1,5
, konvertuoti atgal *1,5
. Tai taikoma tik vienam ekrano dydžiui ir dpi
, jis keistųsi priklausomai nuo dizaino. Tačiau mūsų dailininkai man pateikia pikselus
ir aš konvertuoju į DP
naudodamas pirmiau minėtą 1,5
lygtį.