2016-04-06 4 views
0

Я разрабатываю приложение для обоев в Android, и я нахожу правильный способ установки прокручиваемых обоев для своего приложения. Теперь мой код может устанавливать обои из растрового изображения, но он был обрезан, чтобы соответствовать одной странице и оставался только на одной странице (у меня 5 страниц на главном экране). Это означает, что контент на каждой странице может прокручивать обои, но обои не прокручиваются.android Прокручиваемые обои на экране телефона программно

Я хочу установить прокручиваемые обои. Я пробовал некоторые коды из Интернета, но они не помогли. У вас есть идеи?

setImage_Wallpaper.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       File file = imageLoader.getDiscCache().get(urldisplay); 
       Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); 
       WallpaperManager myWallpaperManager 
         = WallpaperManager.getInstance(mContext); 
       try { 
        myWallpaperManager.setBitmap(bitmap); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     }); 

И я использую из этого кода, но не работают:

//get screen height 
Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    screenHeight = size.y; 

wallPaperBitmap= ... //your bitmap resource 

//adjust the aspect ratio of the Image 
//this is the main part 

int width = wallPaperBitmap.getWidth(); 
     width = (width * screenHeight)/wallPaperBitmap.getHeight(); 

//set the wallpaper 
//this may not be the most efficent way but it worked for me 

wallpaperManager.setBitmap(Bitmap.createScaledBitmap(wallPaperBitmap, width, height, true)); 

ответ

0

Сообщение старый, но все равно ... Вы можете попробовать что-то подобное этому

public static void setWallpaper(Context context) { 
    int wallpaperRId = getWallpaperImageRid(context); 

    if (wallpaperRId == 0) { 
     return; 
    } 

    Bitmap tempBmp = BitmapFactory.decodeResource(context.getResources(), wallpaperRId); 

    // get size 
    DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 
    int width = metrics.widthPixels; 
    int height = metrics.heightPixels; 
    int area = width * height/1000; 

    width *= 2; 
    float scale = width/(float) tempBmp.getWidth(); 
    height = (int) (scale * tempBmp.getHeight()); 

    Bitmap bitmap = Bitmap.createScaledBitmap(tempBmp,width,height, true); 

    WallpaperManager wallpaperManager = WallpaperManager.getInstance(context); 
    wallpaperManager.setWallpaperOffsetSteps(1, 1); 
    wallpaperManager.suggestDesiredDimensions(width, height); 

    try { 
     wallpaperManager.setBitmap(bitmap); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
Смежные вопросы