2015-04-04 100 views
0

我在可绘制文件夹中有许多图像。我想将当前选定的图像作为墙纸按钮单击。获取可绘制图像ID

int[] resources = { 
    R.drawable.tssr_1, 
    R.drawable.tssr_2, 
    R.drawable.tssr_3, 
    R.drawable.tssr_4, 
    R.drawable.tssr_5, 
    R.drawable.tssr_6 
}; 

WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext()); 

try { 
    //set wallpaper picture from resource here 
    myWallpaperManager.setResource(R.drawable.tssr_1); 
    //showToast("Success set as wallpaper"); 
} catch (IOException e) { 
    //showToast("Error set as wallpaper"); 
} 

这里R.drawable.tssr_1被硬编码,以便应用程序成功地设置tssr_1图像作为墙纸图像。我想设置当前显示在屏幕上的图像。我如何获得该图像的ID?

+0

也许你应该叫'myWallpaperManager.setResource()'的'View.setOnClickListener(OnClickListener监听器)' – li2 2015-04-04 14:22:16

+0

LI2感谢您的回复。你能写一小段代码吗?我如何在运行时通过数组并选择当前显示的图像ID? – Heidi 2015-04-04 14:26:00

+0

想知道如何从你的'资源'数组中获得价值吗? – 2015-04-04 16:20:02

回答

0
ViewFlipper vf = new ViewFlipper(getApplicationContext());   
    ImageView image = new ImageView(getApplicationContext()); 
    // set resId as image's tag, then add to viewflipper. 
    image.setTag(imageResId); 
    vf.addView(image); 

    // the listener will be invoked when image in flipper is clicked and held, 
    // then you can set the image as your wall paper. 
    vf.setOnLongClickListener(new OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      int resId = (Integer) v.getTag(); // get image tag 
      myWallpaperManager.setResource(resId); 
      return false; 
     } 
    }); 
+0

** myWallpaperManager.setResource(resId); ** working,thanks。但是现在图像超出屏幕的边界这是我试过的 – Heidi 2015-04-05 05:22:39

+0

这就是我试过的 * *位图WPimg = BitmapFactory.decodeResource(mContext.getResources(), \t \t \t imageIDs [imageIDforWallPaper]); \t \t \t \t \t \t \t \t WallpaperManager WM =(WallpaperManager)getSystemService(WALLPAPER_SERVICE); \t \t \t \t尝试{ \t \t \t \t \t wm.setBitmap(WPimg); \t \t \t \t}赶上(IOException的发送){ \t \t \t \t \t // TODO自动生成的catch程序块 \t \t \t \t \t e.printStackTrace(); \t \t \t \t} \t \t \t \t wm.suggestDesiredDimensions(宽度,高度); ** 但应用程序中止。任何建议,使其工作。谢谢 – Heidi 2015-04-05 05:29:36

+0

也许你应该打开一个新的问题,并添加有关中止的详细信息。让更多的人看到。 – li2 2015-04-05 06:17:20