2012-06-28 29 views
9

Xin chào tôi đang viết mã để đặt Hình nền Màn hình chính. Nó hoạt động tốt. Nhưng điểm ảnh của tôi bị hỏng hoàn toàn và hình nền của tôi không vừa với kích thước thực của màn hình chính. Tôi đang cố gắng tập luyện kích thước hình ảnh khác nhau. Thật không may nó không làm việc cho tôi. Làm thế nào để giải quyết nó.Tại sao hình nền màn hình chính của tôi bị hỏng?

Mã của tôi là ở đây

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
Drawable drawable = getResources().getDrawable(R.drawable.newimage); 
Bitmap wallpaper = ((BitmapDrawable) drawable).getBitmap();   
try 
{ 
    wallpaperManager.setBitmap(wallpaper); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 

My Ảnh chụp màn hình Original Hình ảnh
enter image description here

My Ảnh chụp màn hình Android Emulator Home Screen
enter image description here

Tại sao hình ảnh ban đầu của tôi bị hư hỏng ở đây.
Cách hiển thị My Original Image dựa trên số Emulator Size.

+2

Ý của bạn là gì bởi "Pixel ảnh của tôi bị hỏng hoàn toàn"? Bạn viết mã gì và bạn đã thử cái gì? – bouteillebleu

+0

Tại sao không thêm ảnh chụp màn hình, khi đó chúng tôi sẽ hiểu rõ hơn vấn đề là gì. – mariomario

+0

@mariomario Bây giờ tôi đã thêm ảnh chụp màn hình của mình. – Sekar

Trả lời

7

Bạn có thể thử này:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
Drawable drawable = getResources().getDrawable(R.drawable.newimage); 
Bitmap wallpaper_source = ((BitmapDrawable) drawable).getBitmap();   
try { 
    int w = wallpaperManager.getDesiredMinimumWidth(); 
    int h = wallpaperManager.getDesiredMinimumHeight(); 
    int x = (w-wallpaper_source.getWidth())/2; 
    int y = (h-wallpaper_source.getHeight())/2; 
    Bitmap wallpaper = Bitmap.createBitmap(w, h, Config.ARGB_8888); 
    Canvas c = new Canvas(wallpaper); 
    c.drawBitmap(wallpaper_source, x,y, null); 
    wallpaperManager.setBitmap(wallpaper); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 
+0

Mã này đang hoạt động siêu. Tôi mong đợi kết quả như ví dụ nếu Kích thước hình ảnh là '72 * 72' hoặc' 1200 * 1200' và sau đó kích thước Trình giả lập là '480 * 480'. Vì vậy, tôi cần phải thay đổi Kích thước hình ảnh là '480 * 480' mà không làm hỏng pixel và sau đó đặt thành Hình nền. Cảm ơn. – Sekar

+0

nếu đây là câu trả lời bạn chấp nhận thì hãy cho người này tiền thưởng của mình! – bkbeachlabs

0
WallpaperManager wallpaperManager = WallpaperManager.getInstance(activity); 
    BitmapFactory.Options myOptions = new BitmapFactory.Options(); 
    myOptions.inDither = true; 
    myOptions.inScaled = false; 
    myOptions.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    myOptions.inDither = false; 
    myOptions.inPurgeable = true; 
    Bitmap preparedBitmap = BitmapFactory.decodeResource(activity 
      .getApplication().getResources(), R.drawable.newimage, myOptions); 
    try 
    { 
     wallpaperManager.setBitmap(preparedBitmap); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

Đây là những gì tôi sử dụng để làm cho hình ảnh của tôi mở rộng quy mô cũng không dòng điên chạy qua - bạn có thể thử điều này cho giấy dán tường - không chắc chắn nếu nó hoạt động, chúng ta hãy tôi biết.

Các vấn đề liên quan