0

私の問題は、イメージビューでプレビューされた画像が背景の壁紙として完全に設定できないことです。切れる部分もあります。これは私のボタンのクリックです

    setasW.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
              mImage.buildDrawingCache();
              Bitmap bmap = mImage.getDrawingCache();

              float scaleWidth = ((float) width) / bmap .getWidth();
            float scaleHeight = ((float) height) / bmap .getHeight();
            Matrix matrix = new Matrix();
            matrix.postScale(scaleWidth, scaleHeight);

              Bitmap scaledBitmap = Bitmap.createBitmap(bmap, 0, 0,bmap .getWidth(), bmap .getHeight(), matrix, true);;
              System.out.println("scaledBitmap-------"+scaledBitmap);
             WallpaperManager m=WallpaperManager.getInstance(getApplicationContext());
             try {
                m.setBitmap(scaledBitmap);
             } catch (IOException e) {
                e.printStackTrace();
             }
        }
     });

ここで、mimage はイメージ ビューです。幅と高さは画面サイズです。

画像全体を壁紙として設定するには?

4

1 に答える 1

0

これを直接使用できます 必要な変更を加えました

     setasW.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

     DisplayMetrics outMetrics=new DisplayMetrics();
                            getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
                            int w=outMetrics.widthPixels;
                            int h=outMetrics.heightPixels;


Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;
int contentViewTop= 
    window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
int TitleBarHeight= contentViewTop - StatusBarHeight;



                      mImage.buildDrawingCache();
                      Bitmap bmap = mImage.getDrawingCache();

                      bmap =Bitmap.createScaledBitmap(bmap ,w,(h-TitleBarHeight), true);
                      System.out.println("scaledBitmap-------"+scaledBitmap);
                     WallpaperManager m=WallpaperManager.getInstance(getApplicationContext());
                     try {
                        m.setBitmap(scaledBitmap);
                     } catch (IOException e) {
                        e.printStackTrace();
                     }
                }
             });
于 2013-06-03T11:08:34.183 に答える