我的代码中有一个按钮可以拍照:
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/cameralogo"
android:id="@+id/buttonCamera" />
当我点击它时会打开相机并保存图片,路径是String mCurrentPhotoPath;
显示相机意图后,我希望按钮将图像显示为背景(android:background =“mCurrent .....”)???
怎么做?
答案 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