我有一个应用程序可以从用户库中获取所选图像,并将其显示为应用程序中的背景。我已成功使用下面的代码。
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
BitmapDrawable drawable = new BitmapDrawable(getResources(), BitmapFactory.decodeFile(picturePath));
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
llmain.setBackgroundDrawable(drawable);
} else if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) {
llmain.setBackground(drawable);
}
虽然,因为我已将我的应用更新为API 22,所以它已停止工作。我找到了如何用
设置背景if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
llmain.setBackgroundDrawable(drawable);
} else if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) {
llmain.setBackground(drawable);
} else {
llmain.setBackground(ContextCompat.getDrawable(this, drawable));
}
但它不起作用,因为ContextCompat.getDrawable()调用是用于上下文和int而不是上下文和BitmapDrawable。
答案 0 :(得分:0)
很少改变你的代码我希望它对你有所帮助
更新:
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
Bitmap bitmap = BitmapFactory.decodeFile(picturePath);
BitmapDrawable background = new BitmapDrawable(getApplicationContext().getResources(),bitmap);
llmain.setBackground(background);
答案 1 :(得分:0)
将位图设置为线性布局的背景。
直接你不能将位图设置为布局,所以你应该使用BitmapDrawable将位图转换为drawable。
BitmapDrawable background = new BitmapDrawable(bmImg);
linearLayout.setBackgroundDrawable(background);