1

画面に完全に収まるようにライブ壁紙の背景を設定しようとしています。現在の壁紙のサイズは 1024x1024 ですが、HTC Desire の画面 (サイズは 480 x 800) に画像の一部しか表示されません。また、480x800 未満の画像を設定しようとすると、画像が画面全体に収まりません。

画面サイズに関係なく、壁紙が少なくとも高さで完全に収まるようにこれを達成できる方法はありますか?

参照用の私のコードは次のとおりです-

private static final int CAMERA_WIDTH = 480;
private static final int CAMERA_HEIGHT = 720;


@Override
public EngineOptions onCreateEngineOptions() {
 final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
 return new EngineOptions(true, ScreenOrientation.PORTRAIT_FIXED, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera);
}


@Override
public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws Exception {
 .
 .
 this.mBitmapBackgroundAtlas1 = new BitmapTextureAtlas(this.getTextureManager(), 1024, 1024);
 this.mFaceBackgroundRegion1 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapBackgroundAtlas1, this, "bg1.jpg", 0, 0);
 this.mBitmapBackgroundAtlas1.load();
 .
 .
}

@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws Exception {
 this.mEngine.registerUpdateHandler(new FPSLogger());
 .
 .
 mScene.setBackground(new SpriteBackground(new Sprite(0, 0, mFaceBackgroundRegion1, this.getVertexBufferObjectManager())));
 .
 .
}
4

1 に答える 1

3

わかりました...答えが見つかりました。同じものを探している人のために投稿します。

引数として幅と高さを持つ onSurfaceChanged メソッドをオーバーライドできます。これにより、デバイスの画面の幅/高さが決まります。

この値を使用して、イメージを要件に合わせてスケーリングできます。

@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
 this.screenWidth=width;
 this.screenHeight=height;
}
于 2012-05-09T04:48:11.547 に答える