我正在尝试让程序让用户导入自定义背景。
这是我在的地方:
我有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返回到所选图像。有什么建议吗?
答案 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();
。这将初始化图像选择器。
一些阅读:
祝你好运!