xml如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"     android:orientation="vertical">    <Button        android:id="@+id/selectImageBtn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="selectImageBtn" />    <Button        android:id="@+id/catImageBtn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="catImageBtn" />    <ImageView        android:id="@+id/imageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/ic_action_search" /></LinearLayout>



package com.xy.caijiantupian;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends Activity implements View.OnClickListener {/** Called when the activity is first created. */private Button selectImageBtn;private Button cutImageBtn;private ImageView imageView;private static final int IMAGE_SELECT = 1;private static final int IMAGE_CUT = 2;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);selectImageBtn = (Button) findViewById(R.id.selectImageBtn);cutImageBtn = (Button) findViewById(R.id.catImageBtn);imageView = (ImageView) findViewById(R.id.imageView);cutImageBtn.setOnClickListener(this);selectImageBtn.setOnClickListener(this);}public void onClick(View v) {// 截取适合屏幕大小的图片if (v == selectImageBtn) {Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);startActivityForResult(intent, IMAGE_SELECT);}// 一般用于头像等需要设置指定大小else if (v == cutImageBtn) {Intent intent = getImageClipIntent();startActivityForResult(intent, IMAGE_CUT);}}@Overrideprotected void onActivityResult(int requestCode, int resultCode,Intent intent) {// TODO Auto-generated method stubif (resultCode == RESULT_OK) {if (requestCode == IMAGE_SELECT) {Uri imageFileUri = intent.getData();int dw = getWindowManager().getDefaultDisplay().getWidth();int dh = getWindowManager().getDefaultDisplay().getHeight() / 2;// 已屏幕宽 和一般的高作为图片显示的最大尺寸try {BitmapFactory.Options factory = new BitmapFactory.Options();factory.inJustDecodeBounds = true; // 当为true时 允许查询图片不为// 图片像素分配内存Bitmap bmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageFileUri),null, factory);int hRatio = (int) Math.ceil(factory.outHeight / (float) dh); // 图片是高度的几倍int wRatio = (int) Math.ceil(factory.outWidth / (float) dw); // 图片是宽度的几倍System.out.println("hRatio:" + hRatio + "  wRatio:"+ wRatio);// 缩小到 1/ratio的尺寸和 1/ratio^2的像素if (hRatio > 1 || wRatio > 1) {if (hRatio > wRatio) {factory.inSampleSize = hRatio;} elsefactory.inSampleSize = wRatio;}factory.inJustDecodeBounds = false;bmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageFileUri), null, factory);imageView.setImageBitmap(bmp);} catch (Exception ex) {}} else if (requestCode == IMAGE_CUT) {Bitmap bmp = intent.getParcelableExtra("data");imageView.setImageBitmap(bmp);}}}/** * 获取剪切后的图片 */public static Intent getImageClipIntent() {Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);intent.setType("image/*");intent.putExtra("crop", "true");intent.putExtra("aspectX", 1);// 裁剪框比例intent.putExtra("aspectY", 1);intent.putExtra("outputX", 80);// 输出图片大小intent.putExtra("outputY", 80);intent.putExtra("return-data", true);return intent;}}



   

更多相关文章

  1. android 图片的自由缩放和旋转
  2. Android涂鸦
  3. android左右滑动翻页查看图片
  4. First project in android
  5. android ImageView的scaleType属性
  6. Android(安卓)缓存的工具类
  7. android widget桌面时钟
  8. Android(安卓)图片处理工具类汇总
  9. Android根据不同语言切换图片

随机推荐

  1. 分享GTS-800二次开发流程步骤
  2. socket传输protobuf字节流的实例详解
  3. C# 定时器Timer的实例介绍
  4. C# Md5Hash的用法及实例
  5. 用Shape做动画实例代码
  6. httpHelper 从URL获取值的实例代码
  7. 分享PART_Editor的使用实例
  8. .net是怎么发送邮件的?
  9. 分享一个手机微网站的设计与实现
  10. socket传输protobuf字节流实例教程