2012-03-30 12 views
0

デバイスの壁紙イメージを固定間隔で変更する必要があるアプリケーションを開発しています。私はdrawableフォルダに画像を保存しています。私は壁紙としてこれらのイメージを設定するためにWallpaperManagerを使用しています。デバイスタイプに基づいて壁紙イメージを拡大縮小する方法

アプリがさまざまなデバイスでうまく動作するように、resディレクトリのdrawable-small、drawable-xlargeなどのさまざまなフォルダにさまざまなサイズの画像を複数コピー保存しています。ただし、これらはすべてのデバイスで適切に拡張されません。

私の質問は、壁紙の画像がすべての端末にうまく収まるようにすることです。プログラムでそれを行う必要がありますか?どんなサンプルコードでも大いに役立つでしょう。ありがとう。

これは、私はあなたが画面の比率に応じて画像を選択することが

Display display = Activity.getWindowManager().GetDefaultDisplay(); 
display.getHeight(); 
display.getWidth(); 

を使用することができます

Drawable drawable; 
WallpaperManager wpm; 

@Override 
    public void onCreate() { 
     super.onCreate(); 
     wpm=WallpaperManager.getInstance(WallAlarm.this); 
     drawable = getResources().getDrawable(R.drawable.two); 
    } 

    Bitmap wallpaper=((BitmapDrawable)drawable).getBitmap(); 
    ImageView iv=new ImageView(this); 
    iv.setImageDrawable(drawable); 
    iv.setScaleType(ScaleType.FIT_XY); 

    try { 
      wpm.setBitmap(wallpaper); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 

} 

} 

答えて

0

を使用しているコードです。

それともDisplayMetricsのようなものを使用してみてください、とスケール/表示に応じて画像をトリミング"scaleType option"

+0

Thanks..I display.getHeight()を使用しようとしています。しかし、何とかして、画像は小さな機器で切り取られ続けます。また、描画可能なイメージファイルを通して壁紙イメージにscaleTypeオプションを使用する方法がわからない。親切に助けてください。 – ambit

+0

あなたの壁紙イメージはImageViewですか?そのようなことをすることができます: iv.setImageBitmap(ビットマップ); (またはiv.setImageDrawable)\t \t \t iv.setScaleType(ScaleType.FIT_CENTER); –

+0

もう一度ありがとうございます。自分のコードでimageviewを使ってみました。しかし、私はまだ私はどのように私の壁紙に画像ビューを関連付けるだろうか分からない。私は私の元の質問を編集し、いくつかのコードを入れました。親切にそれを通り抜け、可能なら私を助けてください。申し訳ありませんが、Androidでちょっと新しくて少し混乱しています。 – ambit

0

を使用します。

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 

metrics.heightPixels; 
metrics.widthPixels; 

または使用するかgetSize()

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 
関連する問題