1

システムの壁紙を変更するアプリを作ろうとしています。私のコードでは、(WallpaperManagerから)必要な最小寸法を持つ画像を取得します。たとえば、Nexus One では、必要な最小サイズは 884x800 です。画像を取得して壁紙として設定すると、自動的に「左揃え」になり、884x800 画像の左側のみが表示されます (Nexus One の画面解像度は 480x800 です)。

壁紙を「中央揃え」に設定する方法はありますか?

私はこのように壁紙を設定しています:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());

try {
    wallpaperManager.setBitmap(bitmap);
} catch (IOException e) {
    Log.e("Error", e.toString());
}

注:画像を 480x800 として取得すると、画像が大きくなり、壁紙の場合は左上隅しか表示されません。

884x800 の画像の例を次に示します。

これは、壁紙として設定したときの例です。

480x800 の画像を使用した場合の例を次に示します。

4

2 に答える 2

0

私の解決策

最後に、画面サイズ (Nexus One の場合は 480x800) の画像を取得し、それを目的のサイズ (Nexus One の場合は 884x800) のビットマップにコピーしました。

//Getting the image
Display display = getWindowManager().getDefaultDisplay();
        screenSize = new Point();
display.getSize(screenSize);
new LoadImageTask(screenSize.x, screenSize.y, this).execute();

...

// In the response listener
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Point desiredSize = new Point(
        wallpaperManager.getDesiredMinimumWidth(),
        wallpaperManager.getDesiredMinimumHeight());

Bitmap wallpaper = Bitmap.createBitmap(desiredSize.x, desiredSize.y, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(wallpaper);
canvas.drawBitmap(bitmap, 0, 0, null);

try {
    wallpaperManager.setBitmap(wallpaper);
} catch (IOException e) {
    Log.e("Error", e.toString());
}

そして、それはすべての仮想スクリーンで動作します

于 2013-08-29T00:23:28.583 に答える
0

仮想ホーム画面を切り替えてみましたか? 一番左の仮想ホーム画面にいませんか?

于 2013-08-29T00:11:42.353 に答える