2012-07-10 42 views
5

Tôi đang phát triển một ứng dụng chọn hình ảnh từ thư viện và sau đó đặt hình ảnh đó làm hình nền. Nhưng vấn đề ở đây là chỉ một phần của hình ảnh được đặt làm hình nền chứ không phải toàn bộ hình ảnh, nhưng tôi muốn đặt toàn bộ hình ảnh làm hình nền. bạn có thể cho tôi biết làm thế nào mà có thể được thực hiện?cách phù hợp với toàn bộ hình ảnh trên màn hình làm hình nền

Đây là mã của tôi ...

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(); 
     } 
    } 
} 
+0

Bạn đang tạo ứng dụng hình nền của riêng mình hay bạn đang sử dụng hình nền cổ phiếu? – XGouchet

Trả lời

7

Đặt kích thước hình nền kích thước hình ảnh của bạn:

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

và nhớ để thêm quyền:

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

Cảm ơn. Nó làm việc cho tôi. – moDev

+2

Lưu ý thông báo từ tài liệu về phương thức 'suggestDesiredDimensions()': ** "Lưu ý các nhà phát triển, những người dường như không đọc điều này. Đây là màn hình chính để biết hình nền kích thước nào họ muốn. Không ai khác nên gọi điện cho điều này! Chắc chắn không phải các ứng dụng không phải màn hình chính khác thay đổi hình nền. Các ứng dụng đó phải truy xuất kích thước được đề xuất để chúng có thể tạo hình nền khớp với nó. "** –

0

Hãy thử nó tôi có thử nghiệm nó đang làm việc hy vọng nó sẽ giúp bạn:

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(); 
} 
Các vấn đề liên quan