AndroidManifest.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:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity"     android:orientation="vertical"    >    <Button        android:id="@+id/selectImageBtn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/buttton_seleclocal" />         <Button         android:id="@+id/cutImageBtn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/buttton_cutImg" />    <ImageView  android:id="@+id/imageView"        android:contentDescription="@string/imageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/></LinearLayout>

MainActivity.java

package com.example.ImageView2;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.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends Activity implements OnClickListener {private Button selectImageBtn;private Button cutImageBtn;private ImageView imageView;/** * 声明两个静态变量,主要用于意图的返回的标志 */private static final int IMAGE_SELECT = 1;private static final int IMAGE_CUT = 2;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);selectImageBtn = (Button) findViewById(R.id.selectImageBtn);cutImageBtn = (Button) findViewById(R.id.cutImageBtn);selectImageBtn.setOnClickListener(this) ;cutImageBtn.setOnClickListener(this) ;} protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(resultCode == RESULT_OK){//选取图片,按照手机的屏幕大小显示if(requestCode== IMAGE_SELECT){Uri uri = data.getData();//获得屏幕的宽度int dw = getWindowManager().getDefaultDisplay().getWidth();int dh = getWindowManager().getDefaultDisplay().getHeight()/2;try{//实现对图片进行裁剪的是一个匿名内部类BitmapFactory.Options factory = new BitmapFactory.Options();factory.inJustDecodeBounds = true;//设置为true,允许查询图片不是按照像素分配给内存//获取图片 Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri), null, factory); //对图片的宽度和高度对应手机的屏幕进行匹配 //如果大于1,表示图片高度大小大于手机高度 int hRatio = (int) Math.ceil(factory.outHeight/(float)dh);//如果大于1,表示图片宽度大小大于手机宽度 int wRatio = (int) Math.ceil(factory.outWidth/(float)dw);  //缩放到宽度为1/radio的尺寸和1/radio^2像素 if(hRatio>1 || wRatio>1) { if(hRatio>wRatio){ factory.inSampleSize=hRatio; }else  { factory.inSampleSize=wRatio; } } factory.inJustDecodeBounds = false; //裁剪图片,进行适屏的操作 bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri), null, factory); imageView.setImageBitmap(bitmap);}catch(Exception e){}}else if(requestCode== IMAGE_CUT){//进行裁剪操作Bitmap bitmap = data.getParcelableExtra("data");imageView.setImageBitmap(bitmap);}}}public void onClick(View v) {switch(v.getId()){case R.id.selectImageBtn://声明一个意图,使用android自身带的一个意图说明,提取手机的图片.//参数指定提取路径Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);startActivityForResult(intent, IMAGE_SELECT);break;case R.id.cutImageBtn:Intent  intent2 = getImageClipIntent();startActivityForResult(intent2,IMAGE_CUT);break;}}private 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中获取(RAM)总运存大小和可用运存大小
  2. 【android】把view保存为图片的方法以及解决保存后图片背景变黑
  3. 适配 Android10 内部存储图片显示问题
  4. 图片旋转的两种方法
  5. Android 使用颜色矩阵改变图片颜色,透明度,亮度
  6. android 显示gif格式的图片
  7. 详细讲解Android的图片下载框架UniversialImageLoader之磁盘缓存
  8. OOM的出现及解决(加载图片)
  9. 【Android 开发】:UI控件之 ImageView 实现适屏和裁剪图片的功能

随机推荐

  1. 将Android封装库通过gradle部署到maven私
  2. 使用命令行签名Android应用程序
  3. ContentProvider和Uri详解
  4. Android中Handler小例子
  5. android之从Bmob获取数据显示在ListView
  6. Android 屏幕截图
  7. Awesome Adb——一份超全超详细的 ADB 用
  8. 如何防止android Toast重复显示?
  9. 动态修改Android参数信息的方法绕过改机
  10. Android 利用url获取Bitmap图片