如何在Android中设置自定义背景?

时间:2012-02-27 09:56:45

标签: android

我想在我的应用中使用一种功能,用户可以从手机的内存中选择背景(.png/.jpg文件)。我想使用此链接http://www.dreamincode.net/forums/topic/190013-creating-simple-file-chooser/

完成了80%的任务

上面链接的代码只显示SD卡的视图,现在我想将那里的任何图像文件设置为我的应用程序背景。我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:1)

如果您只想选择图像并设置背景,我认为最简单的方法是这样的:

.....
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, SELECT_PICTURE_ACTIVITY_REQUEST_CODE);
....

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

    switch (requestCode) {
        case SELECT_PICTURE_ACTIVITY_REQUEST_CODE:
            if (resultCode == RESULT_OK) {
                Uri selectedImage = imageReturnedIntent.getData();
                String[] filePathColumn = {MediaStore.Images.Media.DATA};
                Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
                if (cursor.moveToFirst()) {
                    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                    String filePath = cursor.getString(columnIndex);

                    Bitmap bitmap = BitmapFactory.decodeFile(filePath);
                    setBackgroundDrawable(new BitmapDrawable(bitmap));
                }
                cursor.close();
            }
            break;
    }
}

答案 1 :(得分:0)

根据您的应用,在每个现有布局周围FrameLayout,以您正确设置的ImageView开头。

答案 2 :(得分:0)

如果你想动态使用

setBackgroundColor(int color)

setBackgroundResource(int resourceID)

在您的活动的父视图上。

答案 3 :(得分:0)

你可以试试这个:

Bitmap srcBitmap = BitmapFactory.decodeStream(new FileInputStream(new File("path/to/file.jpg")));
BitmapDrawable bmpDrawable = new BitmapDrawable(srcBitmap);
YourView.setBackgroundDrawable(bmpDrawable);

答案 4 :(得分:0)

我认为您的问题是您不知道如何加载从图库中挑选的图像。 @ appserv的答案解决了您的问题,但如果您需要从任何来源(包括您的应用资源)加载图片,请查看它是如何implemented in ImageView