package com.example.dremone.fragment;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
import com.edmodo.cropper.CropImageView;
import com.example.dremone.R;
import com.example.http.UserHttp;
public class FragmentCuttingHead extends Fragment {
private ImageView iv_cutting;
private CropImageView cImageView;
private ImageView image_button_cutting_left;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragement_cutting_head,
container, false);
init(view);
listener();
return view;
}
// 绑定单击事件
private void listener() {
iv_cutting.setOnClickListener(new CuttingOnClickListener());
image_button_cutting_left.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
getActivity().finish();
}
});
}
// 初始化方法
private void init(View view) {
iv_cutting = (ImageView) view.findViewById(R.id.iv_cutting);
cImageView = (CropImageView) view.findViewById(R.id.ci_CropImageView);
image_button_cutting_left = (ImageView) view
.findViewById(R.id.image_button_cutting_left);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, 0);
}
/**
* 单击裁剪时
*
* @author Administrator
*
*/
private class CuttingOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
Bitmap bitmap = cImageView.getCroppedImage();// 得到裁剪好的图片
// 将裁剪好的图片进行格式转换后保存
String filename = bitmapToPng(bitmap);
if (filename != null) {
// 将头像上传到服务器
UserHttp.uploadHeadImage(filename, getActivity());
// 修改用户的头像Id
Intent intentload = getActivity().getIntent();
String id = intentload.getStringExtra("id");
UserHttp.updateHeadImageId(id, filename, getActivity());
// 设置返回值并关闭activity
FragmentActivity activity = getActivity();
Intent intent = new Intent();
intent.putExtra("path", filename);
activity.setResult(2, intent);
activity.finish();
}
}
}
/**
* 由bitmap转为png
*/
private String bitmapToPng(Bitmap capturedBitmap) {
String path = getActivity().getCacheDir().getPath().toString();
OutputStream fOutputStream = null;
String filename = System.currentTimeMillis() + ".png";// 头像名称
File file = new File(path + "/", filename);
try {
file.createNewFile();
fOutputStream = new FileOutputStream(file);
capturedBitmap.compress(Bitmap.CompressFormat.PNG, 100,
fOutputStream);
fOutputStream.flush();
fOutputStream.close();
return filename;
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getActivity(), "保存头像失败", Toast.LENGTH_SHORT).show();
}
return null;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0 & data != null) {
Uri uri = data.getData();
Bitmap bitmap = null;
try {
bitmap = MediaStore.Images.Media.getBitmap(getActivity()
.getContentResolver(), uri);
} catch (Exception e) {
Toast.makeText(getActivity(), "Uri转换为图片失败", Toast.LENGTH_SHORT)
.show();
}
if (bitmap != null) {
cImageView.setImageBitmap(bitmap);
cImageView.setFixedAspectRatio(true);// 设置允许按比例截图,如果不设置就是默认的任意大小截图
cImageView.setAspectRatio(1, 1);// 设置比例为一比一
cImageView.setGuidelines(2);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
}