2016-05-20 109 views
0

我想用我的相机拍摄的照片在我的Android应用程序上创建一个画廊。我已经有了意图和Manifest许可的相机活动,但我只能拍摄1张照片。这里是我的代码:如何在Android上创建照片库?

MyCameraAction.java

package com.example.android.navigationdrawer; 

import android.content.Intent; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.ImageView; 

public class MyCameraActivity extends AppCompatActivity { 


    private static final int CAMERA_REQUEST = 1888; 
    private ImageView imageView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.content_my_camera); 
     this.imageView = (ImageView)this.findViewById(R.id.imageView1); 
     ImageView photoButton = (ImageView) this.findViewById(R.id.button1); 
     photoButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(cameraIntent, CAMERA_REQUEST); 
      } 
     }); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 
      Bitmap photo = (Bitmap) data.getExtras().get("data"); 
      imageView.setImageBitmap(photo); 
     } 
    } 

} 

content_my_camera.xml(很简单,只有一个按钮和一个ImageView的)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <ImageView android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_menu_camera" 
     android:layout_gravity="center_horizontal" 
     android:clickable="true" 
     android:contentDescription="@string/photoButtonUse" 
     /> 

    <ImageView android:id="@+id/imageView1" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:contentDescription="@string/ImageViewGallery" 
     /> 

</LinearLayout> 
+0

您正在设置您的图像视图为可绘制返回,但您只有1个imageview。您需要动态地将图像视图添加到屏幕上。 –

+0

我该怎么做? @paul_hundal – Adir

+0

另外,当我重新打开应用程序时,我希望照片在那里,我该怎么做? @paul_hundal – Adir

回答

0

我已经找到了解决办法,我张贴代码:

MyCameraActivity

import android.content.Intent; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 

public class MyCameraActivity extends AppCompatActivity { 


    private static final int CAMERA_REQUEST = 1888; 



    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.content_my_camera); 
     ImageView photoButton = (ImageView) this.findViewById(R.id.button1); 


     //OnClick camera button 
     photoButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(cameraIntent, CAMERA_REQUEST); 
      } 
     }); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 

      //Cast LinearLayout of .xml 
      LinearLayout CamaraLayout = (LinearLayout) findViewById(R.id.CameraLayout); 

      //Create imageView to put Bitmap 
      ImageView imageView = new ImageView(this); 

      //Adding the Bitmap 
      Bitmap photo = (Bitmap) data.getExtras().get("data"); 
      imageView.setImageBitmap(photo); 

      //Set the imageView to layout 
      CamaraLayout.addView(imageView); 

      //Show layout 

     } 
    } 

} 

当你的图像,它创建一个新的ImageView并将其位图设置为拍摄的图像