我正在尝试动态更改视图的背景图像。我有一个扩展 View 类的paintView 类。我接受用户输入(下面代码中的 m_text),它是保存在 sdcard 中的图像的文件名。然后,我想将它设置为paintView的背景图像。
我试过了,但它只给了我一个白色的背景。所以我认为路径可能有问题。所以我注释掉了我使用用户输入的部分,并尝试使用图像的实际路径(我用来保存图像的路径,下面代码中未注释的地址)。它仍然给我一个白色的背景。
有人可以帮我找出错误在哪里吗?
谢谢!
@SuppressWarnings("deprecation")
private void loadImage(){
String root = Environment.getExternalStorageDirectory().toString();
//String address = root + m_text;
String address = "file://" + root + "/saved_images" + "/Image.jpg";
File imageFile = new File(address);
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
System.out.println(imageFile.getAbsolutePath());
Drawable bgImage = new BitmapDrawable(context.getResources(), bitmap);
paintView.setBackgroundDrawable(bgImage);
}
这就是调用这个函数的地方。它在 onCreate 方法中:
loadButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
final EditText input = new EditText(context);
input.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(input);
builder.setPositiveButton("load", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){
m_text = input.getText().toString();
loadImage();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){
dialog.cancel();
}
});
builder.show();
}
});
在清单中:
<uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE"/>