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>

更多相关文章

  1. android studio 引入另一个XML文件的布局控件
  2. android 我的功能模块模板布局之一
  3. 解决TabLayout+viewpager 滑动切换时 布局文件不是从头显示
  4. Android控件布局属性大全
  5. Android之LinearLayout(线性布局)
  6. Android 布局加载源代码分析
  7. Android UI布局

随机推荐

  1. Android的init过程(二):初始化语言(init.rc)解
  2. Android(安卓)界面中隐藏项目名称
  3. 新书内容连载(3):Android(安卓)SDK中常用命
  4. Android(安卓)学习小结
  5. [书目20101207]Google Android开发入门与
  6. android 中SoundPool总结
  7. Android事件分发机制 详解攻略
  8. Android平台简介
  9. android内存处理机制
  10. Android(安卓)相对布局 RelativeLayout