android 从相册中获取图片
2016-04-13 23:29
435 查看
首先是布局,放一个button(btn_xiangce)和imgview (img_xiangce)
主代码
最后添加权限
主代码
Button btn_xiangce; // 从相册中获取图片按钮 ImageView img_xiangce; // 显示从相册里获取的图片 String imageId_xiangCe; // 相册中获取图片的id Uri uri_xiangCe; // 从相册里获取图片的路径 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); // 得到控件。并设置监听 } // 得到控件,并设置监听 public void init() { btn_xiangce = (Button) findViewById(R.id.btn_xiangce); img_xiangce = (ImageView) findViewById(R.id.img_xiangce); btn_xiangce.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.btn_xiangce: // 相册中获取图片 // 从相册中获取图片 Intent i = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, 100); break; default: break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); /********************************** 从相册中获取图片 *******************************************/ // 获取相册照片返回 if (requestCode == 100 && resultCode == RESULT_OK) { // /////////////////获取照片后进行裁剪////////// uri_xiangCe = data.getData(); caiJianImage(); } // 裁剪返回 if (requestCode == 113 && resultCode == RESULT_OK) { // 取得SDCard图片路径做显示 Bundle extras = data.getExtras(); // 得到图片 Bitmap photo = extras.getParcelable("data"); img_xiangce.setImageBitmap(photo); } } /** * 裁剪 */ public void caiJianImage() { // /////////////////获取照片后进行裁剪////////// Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri_xiangCe, "image/*"); Log.i("xlp", "uri_xiangCe>>" + uri_xiangCe); // 截取最后一个/后面的字符(图片id) String[] u = uri_xiangCe.toString().split("/"); imageId_xiangCe = u[u.length - 1].toString(); Log.i("xlp", ">>>u1:" + imageId_xiangCe); // crop=true是设置在开启的Intent中设置显示的VIEW可裁剪 intent.putExtra("crop", true); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 300); intent.putExtra("outputY", 300); intent.putExtra("return-data", true); startActivityForResult(intent, 113); }
最后添加权限
<!-- 由于涉及到SD卡中写数据操作和Camera操作,需要在AndroidMainfest.xml文件中声明权限: --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
相关文章推荐
- android事件的分发和消费机制(onTouchEvent())
- Android开发:ListView控件:Your content must have a ListView whose id attribute is'android.R.id.list'
- Android开发基础第一章——Activity
- Android VectorDrawable SVG矢量图 xml格式
- Android Service详解
- AS插件-android-selector-chapek
- Android 自定义View (四) 视频音量调控
- Android 利用SurfaceView实现一个简单的计时器
- Android 自定义View (三) 圆环交替 等待效果
- Vs2015新建Android程序启动调试无响应
- Android开发系列(十一) QQ登陆界面——Android控件使用实例
- Android 自定义View (二) 进阶
- android Handler使用
- android实现不同样式的日历控件(MaterialCalendarView的改造工程)
- Android View框架的measure机制
- Android各个版本API的区别
- Android—自定义控件实现ListView下拉刷新
- AS插件-Android Parcelable code generator.
- Android温故之-BroadcastReceiver
- Android判断是否挂载外置sd卡