Android:单击相机中的图像并在对话框中显示图像

时间:2012-07-11 11:42:04

标签: android android-camera android-imageview android-gallery android-dialog

我正在使用包含ImageView和2 Button的自定义对话框。

  1. 从图库中选择图片的第一个按钮
  2. 点击相机中的图像的第二个按钮
  3. 我想在对话框的ImageView中显示图片..

    btn1.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
            Dialog();   
            }
    
            private void Dialog() {
                // TODO Auto-generated method stub
                final Dialog dialog=new Dialog(editevent1.this);
                dialog.setContentView(R.layout.promote2);
                ImageView image =(ImageView)findViewById(R.id.image_camera);
                Button d=(Button)dialog.findViewById(R.id.button2);
                Button f=(Button)dialog.findViewById(R.id.button3);
    
                dialog.show();
                d.setOnClickListener(new View.OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent intent = new Intent(Intent.ACTION_PICK);
                        intent.setType("image/*");
                        startActivityForResult(intent, 1);
    
    
                    }
                });
                f.setOnClickListener(new View.OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent cameraintent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    
                        startActivityForResult(cameraintent, CAMERA_PIC_REQUEST);
                    }
                });
    
    
                }
    
    
    });
    
    
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
        super.onActivityResult(requestCode, resultCode, data);
        if( requestCode == CAMERA_PIC_REQUEST)
        {   
            Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
            ImageView image =(ImageView)findViewById(R.id.image_camera);
            image.setImageBitmap(thumbnail);
        }
        else 
        {
            Toast.makeText(this, "Picture NOt taken", Toast.LENGTH_LONG);            
        }
    
    }
    

    请告诉我如何在ImageView中获取DialogBox中的图片,以便在从图库中选择和从相机点击时获取图像。感谢

2 个答案:

答案 0 :(得分:2)

我不确定是否可以使用Dialog完成此操作,但不是自定义对话框,请尝试使用具有UI对话框的活动。要将Activity用作对话框,您需要在AndroidManifest.xml

中对其进行定义

<activity android:theme="@android:style/Theme.Dialog" />

编辑评论

  1. 如果您使用了我的建议(Activity的用户界面为Dialog,我们将其命名为DialogActivity用于我们的目的),您不必这样做,因为您可以覆盖onActivityResult。{/ li>中的DialogActivity方法
  2. 如果您没有使用我的建议或使用过它,但需要将拍摄的图像传递给另一个Activity。要将相机应用从一个Activity拍摄的图像传递到另一个{i},我相信最有效的方法是将Intent作为String传递到该图像的路径访问第二个Activity上的路径。这样的事情:
  3. 在第一个Activity(来电者Activity)中,我们称之为A:

    Intent i = new Intent(A.this, B.class);
    i.putExtra("path", path); //The path is a String variable holding the path where the image was saved.
    startActivity(i);
    

    在第二个Activity(被调用的Activity)中,我们称之为B:

    String image_path = getIntent().getExtras().getString("path");
    Bitmap bitmap = BitmapFactory.decodeFile(image_path);
    

答案 1 :(得分:0)

我想你再次显示你的对话框。

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
        super.onActivityResult(requestCode, resultCode, data);
        if( requestCode == CAMERA_PIC_REQUEST)
        {   
            Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
            ImageView image =(ImageView)findViewById(R.id.image_camera);
            image.setImageBitmap(thumbnail);
            **dialog.show();**


        }
    else 
    {
        Toast.makeText(this, "Picture NOt taken", Toast.LENGTH_LONG);            
    }

}