android 抉择图片(从手机照相机或手机图片)
android 选择图片(从手机照相机或手机图片)
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() { @Override public void onClick(View v) { dialog.show(); } }); } @Override protected 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 Manager if (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>
1 楼
xici_magic
2011-11-29
多谢分享啦 看看