返回图像资源ID

时间:2012-07-25 05:48:13

标签: java android

我正在尝试让程序让用户导入自定义背景。

这是我在的地方:

我有getDrawable函数将另一个函数作为参数:

mDrawableBg = getResources().getDrawable(getImage());   

getImage()假设返回一个引用所选图像的整数,这里是该函数的代码(到目前为止):

public int getImage(){

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);  
    intent.setType("image/*");
    startActivityForResult(intent, 10);

}

这是假设打开图库并让用户选择图像。然后我会使用mDrawableBg来设置背景。我不知道如何将参考ID返回到所选图像。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

试试这个:

    String pathName = "selected Image path";
    Resources res = getResources();
    Bitmap bitmap = BitmapFactory.decodeFile(pathName);
    BitmapDrawable bd = new BitmapDrawable(res, bitmap);
    View view = findViewById(R.id.container);
    view.setBackgroundDrawable(bd);

答案 1 :(得分:1)

我不确定,但如果你的意思是你不知道如何从这个意图中获得结果,你可以使用:

    @Override
    protected void onActivityResult(int requestCode,int resultCode,Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_OK) 
        {
            if (requestCode == 10)
            {
                // DoSomething
            }
        }
    }

答案 2 :(得分:1)

我害怕你试图这样做的方式是不可能的。作为新的Android开发人员,您需要学习的一件事是活动之间的循环如何运作。在您的情况下,您正在运行Activity,要求Intent从中获取数据。但是,在Android API中,只能在自己的时间引用Intent。这意味着您无法以您尝试过的方式使用getImage()方法。

虽然有希望!

首先需要做的是致电Intent。您将通过getImage()中的代码

执行此操作
public void getImage() { // This has to be a void!
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);  
    intent.setType("image/*");
    startActivityForResult(intent, 10);
}

此方法现在将启动您希望用户选择的图像选择器。接下来,您必须捕获返回的内容。 无法getImage()方法返回,但必须从其他地方收集。

您必须实施以下方法:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        final int SELECT_PICTURE = 1; // Hardcoded from API
        if (requestCode == SELECT_PICTURE) {
            String pathToImage = data.getData().getPath(); // Get path to image, returned by the image picker Intent
            mDrawableBg = Drawable.createFromPath(pathToImage); // Get a Drawable from the path
        }
    }
}

最后,只需致电mDrawableBg = getResources().getDrawable(getImage());,而不是致电getImage();。这将初始化图像选择器。

一些阅读:

祝你好运!