动态壁纸背景图像大于屏幕尺寸和引擎

时间:2013-12-15 15:09:03

标签: andengine scale live-wallpaper

我想在所有屏幕上使用一个图像,但如果我加载的图像大于屏幕尺寸,则不可见。图像尺寸为1280x720,屏幕尺寸为960x540。我能做什么?

代码:

public EngineOptions onCreateEngineOptions() {      
    final DisplayMetrics displayMetrics = new DisplayMetrics();
    WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
    wm.getDefaultDisplay().getMetrics(displayMetrics);
    wm.getDefaultDisplay().getRotation();
    CAMERA_WIDTH = displayMetrics.widthPixels;   
    CAMERA_HEIGHT = displayMetrics.heightPixels;        
    this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);               
    return new EngineOptions(true, ScreenOrientation.PORTRAIT_FIXED, new FillResolutionPolicy(), this.mCamera);}

下:

public void onCreateResources(OnCreateResourcesCallback  createResourcesCallback) throws Exception {        
    final BuildableBitmapTextureAtlas bitmapTextureAtlas = new BuildableBitmapTextureAtlas(
            mEngine.getTextureManager(), CAMERA_WIDTH, CAMERA_HEIGHT,
            TextureOptions.BILINEAR); 
            mTextureRegion = BitmapTextureAtlasTextureRegionFactory
            .createFromAsset(bitmapTextureAtlas, this, "gfx/h720x1280a.png");

}

2 个答案:

答案 0 :(得分:0)

最好将其缩放以支持所有屏幕:

int spriteWidth = 1280;
int spriteHeight = 720;
int spriteScaleX = spriteWidth/screenWidth;
int spriteScaleY = spriteHeight/screenHeight;

将此因子作为比例放置到您的背景精灵。它将支持所有设备。

答案 1 :(得分:0)

您需要一个保持相机宽度和高度比例的图像,不需要使用大分辨率图像,OpenGL具有保持图像质量的能力。