package com.lan.nicehair.activity; import android.content.ContentValues; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.view.Gravity; import android.view.View; import android.widget.LinearLayout; import butterknife.ButterKnife; import butterknife.InjectView; import butterknife.OnClick; import com.lan.nicehair.R; import com.lan.nicehair.common.CircleImageView; import com.lan.nicehair.utils.AppToast; import com.lan.nicehair.widget.ModelPopup; import com.lan.nicehair.widget.ModelPopup.OnDialogListener; public class MeActivity extends BaseActivity implements OnDialogListener { @OnClick(R.id.my_messageRl) public void onMessageClicked(View v) { // startActivity(new Intent(DisCoverActivity.this, // DisCoverActivity.class)); } @OnClick(R.id.my_topicRl) public void onTopicClicked(View v) { // startActivity(new Intent(DisCoverActivity.this, // DisCoverActivity.class)); } @OnClick(R.id.my_collectionRl) public void onCollectionClicked(View v) { // startActivity(new Intent(DisCoverActivity.this, // DisCoverActivity.class)); } @OnClick(R.id.my_hairhistoryRl) public void onHairHistoryClicked(View v) { // startActivity(new Intent(DisCoverActivity.this, // DisCoverActivity.class)); } @OnClick(R.id.my_albumRl) public void onAlbumClicked(View v) { // startActivity(new Intent(DisCoverActivity.this, // DisCoverActivity.class)); } @OnClick(R.id.my_userinfoRl) public void onUserInfoClicked(View v) { // startActivity(new Intent(DisCoverActivity.this, // DisCoverActivity.class)); } @OnClick(R.id.my_setting) public void onSettingClicked(View v) { startActivity(new Intent(MeActivity.this, SettingActivity.class)); } @OnClick(R.id.miv_user_header) public void onUserHeadClicked(View v) { mPopup.showAtLocation(layout_root, Gravity.BOTTOM, 0, 0); } @InjectView(R.id.layout_root) LinearLayout layout_root; @InjectView(R.id.miv_user_header) CircleImageView mHeadIv; private ModelPopup mPopup; /*** * 使用照相机拍照获取图片 */ public static final int SELECT_PIC_BY_TACK_PHOTO = 1; /*** * 使用相册中的图片 */ public static final int SELECT_PIC_BY_PICK_PHOTO = 2; private static final int CUT_PHOTO = 3; private Uri photoUri; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_me); ButterKnife.inject(this); mPopup = new ModelPopup(this, this, false); } /** * * 系统相机拍照 */ private void takePhoto() { // TODO Auto-generated method stub // 执行拍照前,应该先判断SD卡是否存在 String SDState = Environment.getExternalStorageState(); if (!SDState.equals(Environment.MEDIA_MOUNTED)) { AppToast.showShortText(MeActivity.this, "内存卡不存在"); return; } try { photoUri = getContentResolver().insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues()); if (photoUri != null) { Intent i = new Intent( android.provider.MediaStore.ACTION_IMAGE_CAPTURE); i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, photoUri); startActivityForResult(i, SELECT_PIC_BY_TACK_PHOTO); } else { AppToast.showShortText(MeActivity.this, "发生意外,无法写入相册"); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); AppToast.showShortText(MeActivity.this, "发生意外,无法写入相册"); } } protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); if (resultCode == RESULT_OK) { switch (requestCode) { case SELECT_PIC_BY_TACK_PHOTO: // 选择自拍结果 beginCrop(photoUri); break; case SELECT_PIC_BY_PICK_PHOTO: // 选择图库图片结果 beginCrop(intent.getData()); break; case CUT_PHOTO: handleCrop(intent); break; } } } /** * 裁剪图片方法实现 * * @param uri */ public void beginCrop(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); // 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高,注意如果return-data=true情况下,其实得到的是缩略图,并不是真实拍摄的图片大小, // 而原因是拍照的图片太大,所以这个宽高当你设置很大的时候发现并不起作用,就是因为返回的原图是缩略图,但是作为头像还是够清晰了 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); //返回图片数据 intent.putExtra("return-data", true); startActivityForResult(intent, CUT_PHOTO); } /** * 保存裁剪之后的图片数据 * * @param result */ private void handleCrop(Intent result) { Bundle extras = result.getExtras(); if (extras != null) { Bitmap photo = extras.getParcelable("data"); mHeadIv.setImageBitmap(photo); } } @Override public void onChoosePhoto() { // TODO Auto-generated method stub // 从相册中取图片 Intent choosePictureIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(choosePictureIntent, SELECT_PIC_BY_PICK_PHOTO); } @Override public void onTakePhoto() { // TODO Auto-generated method stub takePhoto(); } @Override public void onModel() { // TODO Auto-generated method stub } @Override public void onCancel() { // TODO Auto-generated method stub } }