package com.andbase.demo.activity; import java.io.File; import java.util.Random; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; import com.andbase.demo.R; import com.andbase.library.util.AbFileUtil; import com.andbase.library.util.AbImageUtil; import com.andbase.library.view.cropimage.AbCropHelper; import com.andbase.library.view.cropimage.AbCropImageView; /** * 裁剪界面 * */ public class CropImageActivity extends Activity implements OnClickListener{ private AbCropImageView cropImageView; private Bitmap mBitmap; private AbCropHelper cropHelper; private Button mSave; private Button mCancel,rotateLeft,rotateRight; private String mPath = null; public int screenWidth = 0; public int screenHeight = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_crop_image); init(); } @Override protected void onStop(){ super.onStop(); if(mBitmap!=null){ mBitmap=null; } } private void init(){ getWindowWH(); mPath = getIntent().getStringExtra("PATH"); Log.d("TAG", "将要进行裁剪的图片的路径是 = " + mPath); cropImageView = (AbCropImageView) findViewById(R.id.crop_image); mSave = (Button) this.findViewById(R.id.okBtn); mCancel = (Button) this.findViewById(R.id.cancelBtn); rotateLeft = (Button) this.findViewById(R.id.rotateLeft); rotateRight = (Button) this.findViewById(R.id.rotateRight); mSave.setOnClickListener(this); mCancel.setOnClickListener(this); rotateLeft.setOnClickListener(this); rotateRight.setOnClickListener(this); //相册中原来的图片 File mFile = new File(mPath); try{ mBitmap = AbFileUtil.getBitmapFromSD(mFile, AbImageUtil.SCALEIMG,-1,-1); if(mBitmap==null){ Toast.makeText(CropImageActivity.this, "没有找到图片", Toast.LENGTH_SHORT).show(); finish(); }else{ resetImageView(mBitmap); } }catch (Exception e) { Toast.makeText(CropImageActivity.this, "没有找到图片", Toast.LENGTH_SHORT).show(); finish(); } } /** * 获取屏幕的高和宽 */ private void getWindowWH(){ DisplayMetrics dm=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); screenWidth = dm.widthPixels; screenHeight = dm.heightPixels; } private void resetImageView(Bitmap b){ cropImageView.clear(); cropImageView.setImageBitmap(b); cropImageView.setImageBitmapResetBase(b, true); cropHelper = new AbCropHelper(this, cropImageView); cropHelper.initCropBitmap(b); } public void onClick(View v){ switch (v.getId()){ case R.id.cancelBtn: finish(); break; case R.id.okBtn: Bitmap bitmap = cropHelper.getCropBitmap(360,360); String fileName = "crop_"+new Random().nextInt(1000) + "-" + System.currentTimeMillis(); String path = AbFileUtil.getImageDownloadDir(this) +"/crop/"+fileName+".png"; AbFileUtil.writeBitmapToSD(path,bitmap, Bitmap.CompressFormat.PNG,70); Intent intent = new Intent(); intent.putExtra("PATH", path); setResult(RESULT_OK, intent); finish(); break; case R.id.rotateLeft: cropHelper.startRotate(270.f); break; case R.id.rotateRight: cropHelper.startRotate(90.f); break; } } }