android 选择图片(从手机照相机或手机图片)
16lz
2022-04-21
package com.app.imagechooser;import java.io.File;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.database.Cursor;import android.provider.MediaStore;import android.net.Uri;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.Button;/** * This example shows how to create and handle image picker in Android. * * @author Lorensius W. L. T <lorenz@londatiga.net> * */public class MainActivity extends Activity {private Uri mImageCaptureUri;private ImageView mImageView;private static final int PICK_FROM_CAMERA = 1;private static final int PICK_FROM_FILE = 2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final String [] items= new String [] {"From Camera", "From SD Card"};ArrayAdapter<String> adapter= new ArrayAdapter<String> (this, android.R.layout.select_dialog_item,items);AlertDialog.Builder builder= new AlertDialog.Builder(this);//android.R.layout.select_dialog_item 这是android内置布局builder.setTitle("Select Image");builder.setAdapter( adapter, new DialogInterface.OnClickListener() {public void onClick( DialogInterface dialog, int item ) {if (item == 0) {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);File file = new File(Environment.getExternalStorageDirectory(), "tmp_avatar_" + String.valueOf(System.currentTimeMillis()) + ".jpg");mImageCaptureUri = Uri.fromFile(file);try {intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);intent.putExtra("return-data", true);startActivityForResult(intent, PICK_FROM_CAMERA);} catch (Exception e) {e.printStackTrace();}dialog.cancel();} else {Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_FILE);}}} );final AlertDialog dialog = builder.create();mImageView = (ImageView) findViewById(R.id.iv_pic);((Button) findViewById(R.id.btn_choose)).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialog.show();}}); } @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) return; Bitmap bitmap = null;String path= "";if (requestCode == PICK_FROM_FILE) {mImageCaptureUri = data.getData(); path = getRealPathFromURI(mImageCaptureUri); //from Gallery if (path == null)path = mImageCaptureUri.getPath(); //from File Managerif (path != null) bitmap = BitmapFactory.decodeFile(path);} else {path= mImageCaptureUri.getPath();bitmap = BitmapFactory.decodeFile(path);}mImageView.setImageBitmap(bitmap);}public String getRealPathFromURI(Uri contentUri) { String [] proj = {MediaStore.Images.Media.DATA}; Cursor cursor = managedQuery( contentUri, proj, null, null,null); if (cursor == null) return null; int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index);}}
<?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" android:padding="10dp"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Android Image Choose Example"/> <Button android:id="@+id/btn_choose"android:text="Choose Image" android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_marginTop="10dp"/><ImageView android:id="@+id/iv_pic"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"/></LinearLayout>
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer