将ImageView设置为drawable(Android)

时间:2013-05-20 01:35:15

标签: android imageview drawable

原谅我不熟悉我的女性学可能不正确:

我在class1中有一个图像数组,当选择一个图像时,它的id被传递给class2(下面的代码)然后我会显示该图像并给出将其设置为壁纸的选项。问题是,使用下面的代码我需要一个drawable来分配壁纸,而不是ImageView。有人可以给我一些指导,参考我所拥有的实际绘图 “myWallpaperManager.setResource(这里需要一个drawable);”

提前致谢。希望这是有道理的,因为我说我是一个菜鸟!

public class FullWallView extends Activity {
private Button wallbutton;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.wallpaper_full);

    // get intent data
    Intent i = getIntent();

    // Selected image id
    int position = i.getExtras().getInt("id");
    ImageAdapter imageAdapter = new ImageAdapter(this);

    ImageView imageView = (ImageView) findViewById(R.id.full_wall_view);
    imageView.setImageResource(imageAdapter.mThumbIds[position]);

    //Making Button Clickable and setting the wallpaper
    wallbutton = (Button) findViewById(R.id.apply);
    wallbutton.setOnClickListener(new Button.OnClickListener()
    {

           @Override
           public void onClick(View arg0) {
            // TODO Auto-generated method stub
            WallpaperManager myWallpaperManager
             = WallpaperManager.getInstance(getApplicationContext());
            try {
                myWallpaperManager.setResource(need a drawable here);
            } catch (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            }

           }});

4 个答案:

答案 0 :(得分:29)

首先定义Drawable,然后在ImageView中设置它。

img=(ImageView)findViewById(R.id.imageview1);
Drawable myDrawable = getResources().getDrawable(R.drawable.imageView1);
img.setImageDrawable(myDrawable);

答案 1 :(得分:7)

在API级别22中弃用了

getResources().getDrawable(int id)方法。

您可以检查版本,然后使用以下方法:

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
       imageView.setImageDrawable(getApplicationContext().getDrawable(R.drawable.myDrawable));
  } else {
      imageView.setImageDrawable(getResources().getDrawable(R.drawable.myDrawable));
    }

答案 2 :(得分:1)

我刚刚注意到你需要传递resourceID而不是Drawable,没有直接从ImageView获取resourceID的方法,你为什么不试着记住这个值然后传递它。

希望这有助于并享受您的工作

答案 3 :(得分:0)

如果要通过仅提供图像名称来动态地执行此操作:

public static Drawable getImage(Context context, String name) {
    return context.getResources().getDrawable(context.getResources().getIdentifier(name, "drawable", context.getPackageName()));
}

然后像这样设置imagedrawable:

ImageView image = findViewById(R.id.logo);
image.setImageDrawable(getImage(context, "imageName"));