您的位置:首页 > 移动开发 > Android开发

Android调用图库选择本地图片的功能

2015-05-22 22:05 239 查看
转自:http://www.2cto.com/kf/201212/179522.html

先上实现代码:



”分享本地图片“按钮事件:

[java]  

//选择图片,调用图库  

bt4.setOnClickListener(new OnClickListener() {  

  

    @Override  

    public void onClick(View v) {  

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);  

        intent.setType("image/*");  

        intent.putExtra("crop", true);  

         intent.putExtra("return-data", true);  

        startActivityForResult(intent, 2);  

    }  

});  

 

点击之后跳转到图库:



这是一个回调函数,选择完图片,第一个if 判断是否返回成功,第二个if  判断requestCode和上面 startActivity(),里的参数相同,就获取图片  ,注意:在上面按钮里一定要加上这句话: intent.putExtra("return-data", true);  否则返回的data 为空,稍后详 细讲解参数的作用

[html] 

 @Override  

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {  

     super.onActivityResult(requestCode, resultCode, data);   

    if (resultCode == RESULT_OK) {  

        System.out.println("requestCode"+requestCode);  

     if (requestCode == 2) {  

         Uri uri = data.getData();  

         System.out.println(uri.getPath());  

           

           ContentResolver cr = this.getContentResolver();  

             

           try {  

    bmp = BitmapFactory.decodeStream(cr.openInputStream(uri));  

        MCShareLaunchShareHelper.shareContentWithBitmap("测试分享本地图片", bmp, "your share url", "", MoxunActivity.this);  

} catch (FileNotFoundException e) {  

    // TODO Auto-generated catch block  

    e.printStackTrace();  

}  

  

    }  

 }  

  

 }  

 

回调函数跳转返回成功,跳转到分享界面(回调函数中这句话 是我调用的摩讯的分享SDK的功能,跟本文无关 MCShareLaunchShareHelper.shareContentWithBitmap("测试分享本地图片", bmp, "your share url", "", MoxunActivity.this);), 中部那个android图片就是所选的那张图片



 

 

Android中 调用图库选择图片的参数详解

 

Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);  

 intent.setType("image/*");    //这个参数是确定要选择的内容为图片,

intent.putExtra("crop", "circle");   //设置了参数,就会调用裁剪,如果不设置,就会跳过裁剪的过程。

intent.putExtra("aspectX", 33);  //这个是裁剪时候的 裁剪框的 X 方向的比例。

intent.putExtra("aspectY",43);  //同上Y 方向的比例. (注意: aspectX, aspectY ,两个值都需要为 整数,如果有一个为浮点数,就会导致比例失效。)

//设置aspectX 与 aspectY 后,裁剪框会按照所指定的比例出现,放大缩小都不会更改。如果不指定,那么 裁剪框就可以随意调整了。

intent.putExtra("outputX", 50);  //返回数据的时候的 X 像素大小。

 intent.putExtra("outputY", 100);  //返回的时候 Y 的像素大小。

//以上两个值,设置之后会按照两个值生成一个Bitmap, 两个值就是这个bitmap的横向和纵向的像素值,如果裁剪的图像和这个像素值不符合,那么空白部分以黑色填充。

intent.putExtra("noFaceDetection", true); // 是否去除面部检测, 如果你需要特定的比例去裁剪图片,那么这个一定要去掉,因为它会破坏掉特定的比例。

 intent.putExtra("return-data", true);  //是否要返回值。 一般都要。我第一次忘加了,总是取得空值,囧!

startActivityForResult(intent, 1);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: