package com.pets.activity;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.MediaStore.Images;
import android.provider.MediaStore.Images.Media;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.Toast;
import com.example.actionbar.R;
/**
* 发表新说说
*
* @author Administrator
*
*/
public class NewDailyShareActivity extends Activity implements OnClickListener {
// 拍照获取
private static final int CAMERA_REQUEST = 100;
// 从相册中获取
private static final int PHOTO_REQUEST = 200;
// 裁剪图片
private static final int CROP_REQUEST = 300;
private ImageView img;
private PopupWindow window;
private Button fromPhoto;
private Button fromCamera;
private Button cropImg;
private Uri imgUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
// 获取发表说说的类型
setContentView(R.layout.pets_daily_share_new);
img = (ImageView) findViewById(R.id.daily_share_new_img);
img.setOnClickListener(this);
window = new PopupWindow();
View view = getLayoutInflater().inflate(R.layout.pets_img_select, null);
fromCamera = (Button) view.findViewById(R.id.fromCamera);
fromPhoto = (Button) view.findViewById(R.id.fromPhotoStorage);
cropImg = (Button) view.findViewById(R.id.cropImg);
fromCamera.setOnClickListener(this);
fromPhoto.setOnClickListener(this);
cropImg.setOnClickListener(this);
cropImg.setVisibility(View.INVISIBLE);
window.setContentView(view);
window.setClippingEnabled(true);
window.setOutsideTouchable(true);
window.setTouchable(true);
window.setWidth(LayoutParams.MATCH_PARENT);
WindowManager wm = this.getWindowManager();
// 获取屏幕高度
int height = wm.getDefaultDisplay().getHeight();
window.setHeight(height / 2);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST) {
if (RESULT_OK == resultCode) {
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
img.setImageBitmap(bitmap);
cropImg.setVisibility(View.VISIBLE);
imgUri = Uri.parse(Images.Media.insertImage(
getContentResolver(), bitmap, null, null));
Toast.makeText(
this,
"图片大小:" + bitmap.getWidth() + ":" + bitmap.getHeight()
+ ":" + bitmap.getByteCount() / 1024,
Toast.LENGTH_LONG).show();
}
} else if (requestCode == PHOTO_REQUEST) {
if (resultCode == RESULT_OK) {
imgUri = data.getData();
img.setImageBitmap(measure(imgUri));
Toast.makeText(this, "图片大小:" + imgUri.toString(),
Toast.LENGTH_LONG).show();
}
}
}
private Bitmap measure(Uri uri) {
Cursor cursor = getContentResolver().query(uri,
new String[] { Images.Media.DATA }, null, null, null);
if (cursor.moveToNext()) {
if ("content".equalsIgnoreCase(uri.getScheme())) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap temp = BitmapFactory.decodeFile(cursor.getString(cursor
.getColumnIndex(Images.Media.DATA)), options);
Log.i("conn2", "图片字节大小:" + temp.getByteCount());
int width = temp.getWidth();
int height = temp.getHeight();
int defaultHeight = getWindowManager().getDefaultDisplay()
.getHeight();
int defaultWidth = getWindowManager().getDefaultDisplay()
.getWidth();
float widthRate = defaultWidth / width;
float heightRate = defaultHeight / height;
Log.i("conn2", "width:" + width + ":" + height + ",defaut:"
+ defaultWidth + ":" + defaultHeight);
options.inSampleSize = (int) widthRate;
} else if ("file".equalsIgnoreCase(uri.getScheme())) {
// uri.getPath()
}
}
cursor.close();
return null;
}
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (v == fromCamera) {
startActivityForResult(intent, CAMERA_REQUEST);
} else if (v == fromPhoto) {
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, PHOTO_REQUEST);
} else if (v == cropImg && null != imgUri) {
intent.setAction("com.android.camera.action.CROP");
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.setData(imgUri);
intent.putExtra("aspectX", 2);// 裁剪框比例
intent.putExtra("aspectY", 3);
intent.putExtra("outputX", 320);// 输出图片大小
intent.putExtra("outputY", 480);
intent.putExtra("return-data", true);
startActivityForResult(intent, CROP_REQUEST);
return;
} else if (v == img) {
if (window.isShowing()) {
window.dismiss();
} else {
window.showAtLocation(getRootView(this), Gravity.BOTTOM
| Gravity.LEFT, 0, 0);
}
}
}
private View getRootView(Activity context) {
return ((ViewGroup) context.findViewById(android.R.id.content))
.getChildAt(0);
}
}