2012-07-10 17 views
5

갤러리에서 이미지를 선택한 다음 이미지를 배경 무늬로 설정하는 앱을 개발 중입니다. 그러나 여기서 문제는 이미지의 일부분 만 전체 이미지가 아닌 배경 화면으로 설정된다는 것입니다. 그러나 전체 이미지를 배경 무늬로 설정하려고합니다. 어떻게 할 수 있는지 말해 주시겠습니까 ???전체 이미지를 바탕 화면으로 화면에 표시하는 방법

WallpaperManager wm = (WallpaperManager) getSystemService(WALLPAPER_SERVICE); 
wm.setBitmap(bitmap); 
wm.suggestDesiredDimensions(w, h); 

및 사용 권한을 추가해야합니다 : 내가 가지고 그것을 시도

<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/> 
<uses-permission android:name="android.permission.SET_WALLPAPER"/> 
+0

자신 만의 벽지 응용 프로그램을 만들거나 주식 바탕 화면을 사용하고 있습니까? – XGouchet

답변

7

배경 화면 설정 크기 테스트하면 도움이되기를 바랍니다.

final WallpaperManager wallpaperManager = (WallpaperManager)getSystemService(
       Context.WALLPAPER_SERVICE);  

Bitmap myBitmap = Bitmap.createScaledBitmap(Const.cropped_bitmap, wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight(), true); 
wallpaperManager.suggestDesiredDimensions(wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight()); 

try { 

    wallpaperManager.setBitmap(myBitmap); 
    Toast.makeText(CropImageActivity.this, CropImageActivity.this.getString(R.string.wallpaper_has_been_set), 0).show(); 
} catch (IOException e) { 
    e.printStackTrace(); 
    Toast.makeText(CropImageActivity.this, "Wallpaper not set", 0).show(); 
} 
+0

감사합니다. 그것은 나를 위해 일했습니다. – moDev

+2

'suggestDesiredDimensions()'메쏘드에 관한 문서의 메시지를 참고하십시오 : ** "이것을 읽지 않는 것 같은 개발자에게 주목하십시오. 이것은 홈 스크린이 원하는 크기의 벽지를 알려주는 것입니다. 벽지를 바꾸는 다른 비 홈 스크린 응용 프로그램은 아닙니다.이 응용 프로그램은 제안 된 크기를 검색하여 일치하는 배경 화면을 만들 수 있어야합니다. "** –

0

를 이미지 크기 여기

내 코드는

...

public class Scaleimage extends Activity { 
    /** Called when the activity is first created. */ 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     String FileName; 
     File file = new File("/sdcard/pictures"); 
     File[] imageFiles = file.listFiles(); 
     if(imageFiles.length > 0) { 
      FileName = imageFiles[0].getName(); 
     final WallpaperManager wallpaperManager = WallpaperManager.getInstance(getBaseContext()); 
     Bitmap myBitmap = BitmapFactory.decodeFile("/sdcard/pictures" + "/" + FileName); 

     DisplayMetrics displayMetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
     int height = displayMetrics.heightPixels; 
     int width = displayMetrics.widthPixels << 1; 
     myBitmap = Bitmap.createScaledBitmap(myBitmap,width, height, true); 
     try { 
      wallpaperManager.setBitmap(myBitmap); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
관련 문제