将画廊图像设置为按钮背景

时间:2014-10-21 08:02:35

标签: android button

我的代码中有一个按钮可以拍照:

<Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="@drawable/cameralogo"

            android:id="@+id/buttonCamera" />

当我点击它时会打开相机并保存图片,路径是String mCurrentPhotoPath;

显示相机意图后,我希望按钮将图像显示为背景(android:background =“mCurrent .....”)???

怎么做?

3 个答案:

答案 0 :(得分:1)

这是解决方案。

您不能仅通过路径或URI设置背景,您需要创建一个Bitmap(并使用ImageButton)或Drawable。

使用Bitmap和ImageButton:

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
yourImageButton.setImageBitmap(bitmap);

使用Drawable和Button:

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
Drawable d = new BitmapDrawable(getResources(),bitmap);
yourButton.setBackground(d);

答案 1 :(得分:0)

你看过这个问题了吗? How to set the button background image through code

您无法在xml中执行此操作,但只能以编程方式执行此操作。只需获得对新创建的图片的引用,如下所述: How to get path of a captured image in android

答案 2 :(得分:0)

启动相机意图:

...
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
activity.startActivityForResult(takePictureIntent, PHOTO_ACTIVITY_REQUEST_CODE);
...

其中PHOTO_ACTIVITY_REQUEST_CODE只是活动中唯一的整数常量,在启动结果意图时用作请求代码。

在onActivityResult中接收照片,并更新视图背景

public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PHOTO_ACTIVITY_REQUEST_CODE && data != null) {
    Bundle extras = data.getExtras();
    if (extras != null) {
        Bitmap photo = (Bitmap) extras.get("data");
        if (photo != null) {
            // mView should refer to view whose reference is obtained in onCreate() using findViewById(), and whose background you want to update
            mView.setBackground(new BitmapDrawable(getResources(), photo));
        }
    }
}

以上代码不使用全尺寸照片。为此,您必须要求Photo intent将其保存到文件中,然后读取该文件。详情存在here