在android开发中,最头疼的就是图片多屏幕适配。当然,我们可以为每个屏幕添加一张图片,可是那样会增加app的size.
特别是如果同时支持竖屏和横屏,会更大。
在我们项目使用一张比较大的图片(1280x800),然后通过一定算法的拉伸,最后达到多屏幕适配的效果。
首先,在设计闪屏的时候,针对竖屏,我们尽量不要在图片的顶部和底部添加内容。内容尽量靠近图片中央。
其次, 我们认为宽度不变,然后按照图片的长宽比例,进行拉伸,然后对拉伸后的图片在高度上进行截取。
拉伸算法如下,
int graphicsWidth = graphicsImage.getWidth(); //图片宽度
int graphicsHeight = graphicsImage.getHeight(); //图片高度
if (graphicsImage.getWidth() > 0) // avoid graphicsImage.bitmap is null
{
height = width * graphicsHeight / graphicsWidth; //width 为屏幕宽度
scaledImage = graphicsImage.createScaledImage(width, height);
}
绘制方法:
// draw bg img.
if (scaledImage != null)
{
graphics.drawImage(scaledImage, 0, (height - scaledImage.getHeight()) / 2,
AbstractTnGraphics.LEFT | AbstractTnGraphics.TOP);
}
通过此算法,基本可以解决启动闪屏的拉伸问题,从480x320一直到更大屏幕1280x800。