flex mobile适应设备尺寸

flex mobile适应设备尺寸
源于移动设备的dpi不同,可能导致一个设备上运行展现正常的界面,到另外一个设备上惨不忍睹。

flex sdk4.5及以上在Application及其子类上提供了ApplicationDpi,并支持3种类型的dpi:160,240,320,基本上可以涵盖目前已有的设备的dpi。

如果设定Application的applicationDpi,flex runtime会针对矢量图以及文本自动做dpi自适应,由于矢量图绘制会产生痕迹,所以最好在设计时按照低dpi(比如160,Adobe官方建议)来设计,在dpi=240的设备上,runtime会自动将矢量图放到为1.5倍。

对于位图来说,放大会导致痕迹,因此flex sdk提供了MultiDPIBitmapSource类,允许用户针对160,240,320分别提供位图。mobile app的splash不能采用MultiDPIBitmapSource,最好使用大位图,让runtime自动缩小它。

在skin中,判断applicationDpi:
switch (applicationDPI) {
case DPIClassification.DPI_320: {
upBorderSkin = skins.assets320.TransparentRoundedButton_up;
downBorderSkin = skins.assets320.TransparentRoundedButton_down;
break;
}


在css中,采用@media:
@media (application-dpi: 160) {
 Button { fontSize: 20; }
}

要提供良好体验的splash,需要扩展SplashScreen类,重写getImageClass方法,比如:
override mx_internal function getImageClass(dpi:Number, aspectRatio:String):Class {
if (dpi == DPIClassification.DPI_160)
return SplashImage160;
else if (dpi == DPIClassification.DPI_240)
return SplashImage240;
else if (dpi == DPIClassification.DPI_320)
return SplashImage320; return null;
}
}



你可能感兴趣的:(flex mobile适应设备尺寸)