0

壁紙オプションとして設定して壁紙アプリケーションを開発しています。SDカードにある写真ディレクトリからすべての画像をグリッドビューに表示しています。ユーザーが画像のサムネイルのいずれかをクリックすると、壁紙オプションとして設定した全画面表示が開きます。すべてがうまくいっています。問題は、ズームやストレッチなしで全画面表示に画像を設定するオプションを使用してトリミング機能を提供したいということです。多くのコードを試しましたが、期待どおりに機能しませんでした。クリックイベントで次の関数を呼び出しています。以下は私が試したコードですが、画像が引き伸ばされます。

enter code here
private void setWallPaper() {
    WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
    try {
        //set for full screen wallpaper
        DisplayMetrics metrics = new DisplayMetrics(); 
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int fullHeight = metrics.heightPixels; 
        int fullWidth = metrics.widthPixels;
        Bitmap bitmapResized = Bitmap.createScaledBitmap(imageBitmap, fullWidth, fullHeight,true);
        wallpaperManager.setBitmap(bitmapResized);

        //wallpaperManager.setBitmap(imageBitmap);
        Toast toast = Toast.makeText(this, "Set wallpaper successfully!", Toast.LENGTH_LONG);
        toast.show();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

このトリミング機能をバイパスして画像を全画面表示にする方法はありますか? この点で私を助けてください。前もって感謝します。

4

1 に答える 1

0

私の知る限り、そのレベルの制御のために独自のライブ壁紙サービスを作成する必要があります。ここに完全な例があります。独自のサービスを作成すると、タッチ スクロールなどの他の機能を追加できます (ただし、TouchWiz レイヤーを介してこの機能を無効にする Samsung デバイスの場合は、いくつかの回避策を講じる必要があります)。面倒に思えますが、基本的なライブ壁紙サービスをセットアップするのにそれほど時間はかかりません。

于 2015-01-05T09:32:50.457 に答える