2013-11-25 152 views
4

我面临从图库中选择图像并将其设置为imageview的问题。假设我有两项活动; mainActivity包含图库的按钮和secondactivity包含imageview其中的图像必须显示。从图库中选择图像到imageview

b1.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
    Intent i = new Intent(
    Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(i, RESULT_LOAD_IMAGE); 
    } 
    }); 

请给我两个单独的代码....

+0

SO不是找人写代码给你。告诉我们您收到的错误或意外结果,并发布更多代码,以便我们提供帮助。 –

回答

15

这里是从画廊加载图像的代码:

public class ImageGalleryDemoActivity extends Activity { 


    private static int RESULT_LOAD_IMAGE = 1; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button buttonLoadImage = (Button) findViewById(R.id.buttonLoadPicture); 
     buttonLoadImage.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

       Intent i = new Intent(
         Intent.ACTION_PICK, 
         android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

       startActivityForResult(i, RESULT_LOAD_IMAGE); 
      } 
     }); 
    } 


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

     if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
      Uri selectedImage = data.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

      Cursor cursor = getContentResolver().query(selectedImage, 
        filePathColumn, null, null, null); 
      cursor.moveToFirst(); 

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String picturePath = cursor.getString(columnIndex); 
      cursor.close(); 

      ImageView imageView = (ImageView) findViewById(R.id.imgView); 
      imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 

     } 


    } 
} 
+0

真的,我很欣赏你的答案,但我想打开或通过新的活动中的图像..... – amanjain4all

+0

@ amanjain4all然后farward这两个selectedImage和filePathColumn在意图的额外和接收在下一个加载所选图像的活动中。 – Hamad

1

试试这个。

b1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       startActivityForResult(i, RESULT_LOAD_IMAGE); 
      } 
     }); 



    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
      Uri selectedImage = data.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null); 
      cursor.moveToFirst(); 
      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String picturePath = cursor.getString(columnIndex); 
      cursor.close(); 
      ImageView imageView = (ImageView) findViewById(R.id.imgView); 
      imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
     } 
    } 

下面一些例子

http://viralpatel.net/blogs/pick-image-from-galary-android-app/

http://www.coderzheaven.com/2012/04/20/select-an-image-from-gallery-in-android-and-show-it-in-an-imageview/

+0

我想打开画廊图像到不同的活动?所以PLZ单独给代码......... – amanjain4all

+0

@ amanjain4all是的,你可以做到这一点。 – Hariharan

+0

它不起作用.... – amanjain4all

4

Picasso它可以完成单行和Y OU不需要做cursor query

我已经扩展它更好的理解: -

挑选图片

public void pickImage() { 

     Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE); 

    } 

加载图像

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      if (resultCode == RESULT_OK) { 
       if (requestCode == SELECT_PICTURE) { 

        Uri selectedImageURI = data.getData(); 

        Picasso.with(MainActivity1.this).load(selectedImageURI).noPlaceholder().centerCrop().fit() 
          .into((ImageView) findViewById(R.id.imageView1)); 
       } 

      } 
     } 
+0

SELECT_PICTURE ??这是什么 ? –

+0

用于ID onActivityResult()回调的随机整数常量。在startActivityForResult方法中传递的SELECT_PICTURE的常量值应该与onActivityResult的resultCode相匹配。 –

+0

有没有类似的滑行方式? –

相关问题