package com.partynetwork.iparty.iparty;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.MediaStore.Images.Media;
import android.text.format.DateFormat;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.partynetwork.dataprovider.json.struct.Iparty_releaseIpartyRequest;
import com.partynetwork.dataprovider.util.BitmapUtil;
import com.partynetwork.iparty.R;
import com.partynetwork.iparty.app.common.BitmapManager;
import com.partynetwork.myview.mytoast.MenuBottomPop;
import com.partynetwork.myview.mytoast.OkPopup;
import com.baidu.mobstat.StatService;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;
public class IpartyPublishTwoActivity extends Activity {
private static final int SELECT_PICTURE = 100;
private static final int SELECT_CAMER = 101;
/**
* 初始上传海报图片
*/
@ViewInject(R.id.choose_photo_rl)
private RelativeLayout choosePhoto;
/**
* 用来显示图片的布局
*/
@ViewInject(R.id.choose_photo_content)
private LinearLayout photoContent;
/**
* 照片数量
*/
@ViewInject(R.id.photo_number)
private TextView photoNumber;
/**
* 放照片的存放布局
*/
@ViewInject(R.id.choose_photo_body)
private LinearLayout chooseBody;
/** 底部弹出窗 */
private MenuBottomPop menuBottonPop;
private String[] menuStr = new String[] { "拍照", "从手机相册选择" };
/**
* 存放选择的照片布局的list
*/
private List<RelativeLayout> choosePhotoList = new ArrayList<RelativeLayout>();
/**
* 照片的列表
*/
private List<String> photoList = new ArrayList<String>();
/**
* 请求对象
*/
private Iparty_releaseIpartyRequest request;
/** 消息提示框 */
private OkPopup mOkPopup;
/** 本次生成的图片存放路径 */
private String imagePath;
private BitmapManager bitmapManager;
/**
*
* 覆盖方法
*
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.iparty_publish_two);
ViewUtils.inject(this);
init();
}
/**
* 初始化数据、控件
*/
private void init() {
bitmapManager=new BitmapManager();
request = getIntent().getParcelableExtra(
IpartyPublishOneActivity.REQUEST);
mOkPopup = new OkPopup(this);
}
/**
* 设置监听
*
* @param view
*/
@OnClick({ R.id.menu_head_left, R.id.choose_photo_rl,
R.id.iparty_publish_next })
public void onClick(View view) {
switch (view.getId()) {
case R.id.menu_head_left:
// 返回
finish();
break;
case R.id.iparty_publish_next:
// 下一步
int size = photoList.size();
if (size > 0) {
Intent intent = new Intent(this,
IpartyPublishThreeActivity.class);
request.setEventPosterArray((String[]) photoList
.toArray(new String[size]));
intent.putExtra(IpartyPublishOneActivity.REQUEST, request);
startActivity(intent);
} else {
mOkPopup.setTitle("海报都没有还想发布派对?");
mOkPopup.showAtLocation(choosePhoto);
}
break;
case R.id.choose_photo_rl:
// 选择照片
showPopMenu(menuStr, menuClick);
break;
default:
break;
}
}
private OnClickListener menuClick = new OnClickListener() {
public void onClick(View v) {
menuBottonPop.dismiss();
if (v.getTag().equals(menuStr[0])) {
// 相机拍照
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imagePath = BitmapUtil.getImagePath();
Uri uri = Uri.fromFile(new File(imagePath));
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
IpartyPublishTwoActivity.this.startActivityForResult(intent,
SELECT_CAMER);
} else if (v.getTag().equals(menuStr[1])) {
// 相册选取
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
IpartyPublishTwoActivity.this.startActivityForResult(intent,
SELECT_PICTURE);
}
}
};
/**
* 显示底部菜单
*/
private void showPopMenu(String[] str, OnClickListener menuClick) {
menuBottonPop = new MenuBottomPop(this, str, menuClick);
menuBottonPop.showAtLocation(choosePhoto);
}
/**
* 覆盖方法
*
* @see android.app.Activity#onActivityResult(int, int,
* android.content.Intent)
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String filePath = "";
Object object = null;
// 选择照片的返回结果
if (data == null) {
if (requestCode == SELECT_CAMER) {
filePath = imagePath;
if (filePath != "") {
choosePhoto.setVisibility(View.GONE);
photoContent.setVisibility(View.VISIBLE);
addPhoto(filePath);
}
}
return;
}
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case SELECT_PICTURE:
// 相册
try {
Uri uri = data.getData();
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = this.managedQuery(uri, proj, null, null,
null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
filePath = cursor.getString(column_index);
} catch (Exception e) {
e.printStackTrace();
}
break;
case SELECT_CAMER:
// 相机
// 相机拍照
if (data.getData() != null) {
// 根据返回的URI获取对应的SQLite信息
Cursor cursor = this.getContentResolver().query(
data.getData(), null, null, null, null);
if (cursor.moveToFirst()) {
filePath = cursor.getString(cursor
.getColumnIndex(Media.DATA));// 获取绝对路径
}
cursor.close();
} else {// 三星 小米(小米手机不会自动存储DCIM... 这点让哥又爱又恨...)
object = (Bitmap) (data.getExtras() == null ? null : data
.getExtras().get("data"));
Bitmap bitmap = object == null ? null : (Bitmap) object;
if (bitmap != null) {
try {
filePath = BitmapUtil.saveImg(bitmap, DateFormat
.format("yyyy-MM-dd-hh-mm-ss", new Date())
.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
filePath = !filePath.equals("") ? filePath : getRealFilePath();
break;
default:
break;
}
if (filePath != "") {
choosePhoto.setVisibility(View.GONE);
photoContent.setVisibility(View.VISIBLE);
addPhoto(filePath);
}
} else {
Toast.makeText(this, "请重新选择图片", Toast.LENGTH_SHORT).show();
}
}
/**
* 获取系统默认存储真实文件路径 两个路径 一个是最后一张所拍图片路径
* (由于设置了存储路径所以DCIM中会存储两张一模一样的图片,所以在此获取两张图片路径以便于缩放处理后全部删除)
*
* @param filePath
* @return
*/
protected String getRealFilePath() {
String filePath = "";
// MediaStore.Images.Media.EXTERNAL_CONTENT_URI
// content://media/external/images/media
Cursor cursor = this.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null,
Media.DATE_MODIFIED + " desc");
if (cursor.moveToNext()) {
/**
* _data:文件的绝对路径 Media.DATA='_data'
*/
filePath = cursor.getString(cursor.getColumnIndex(Media.DATA));
}
return filePath;
}
/**
* 添加图片
*
* @param filePath
*/
private void addPhoto(final String filePath) {
final RelativeLayout layout = new RelativeLayout(this);
ImageView iv = new ImageView(this);
bitmapManager.loadBitmap(filePath, iv);
RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.FILL_PARENT,
RelativeLayout.LayoutParams.FILL_PARENT);
iv.setScaleType(ScaleType.CENTER_CROP);
layout.addView(iv, params2);
ImageView close = new ImageView(this);
close.setImageResource(R.drawable.iparty_publish_delete);
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
params1.leftMargin = 5;
params1.topMargin = 5;
close.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
choosePhotoList.remove(layout);
photoList.remove(filePath);
showPhotoList();
}
});
layout.addView(close, params1);
photoList.add(filePath);
choosePhotoList.add(layout);
showPhotoList();
}
/**
* 显示选中列表的图片
*/
private void showPhotoList() {
LayoutParams param = new LayoutParams(120, LayoutParams.FILL_PARENT);
param.rightMargin = 10;
chooseBody.removeAllViews();
int size = choosePhotoList.size();
if (size == 0) {
choosePhoto.setVisibility(View.VISIBLE);
photoContent.setVisibility(View.GONE);
}
photoNumber.setText(size + "张照片");
for (int i = 0; i < size; i++) {
chooseBody.addView(choosePhotoList.get(i), param);
}
addChoosePhoto();
}
/**
* 添加最后的选择图片控件
*/
private void addChoosePhoto() {
RelativeLayout layout = new RelativeLayout(this);
layout.setGravity(Gravity.CENTER);
layout.setBackgroundColor(Color.parseColor("#EF6565"));
ImageView iv = new ImageView(this);
iv.setId(1);
iv.setImageResource(R.drawable.iparty_publish_add_photo_icon);
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
params1.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
layout.addView(iv, params1);
TextView tv = new TextView(this);
RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
params2.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
params2.addRule(RelativeLayout.BELOW, 1);
tv.setText("添加照片");
tv.setTextColor(Color.WHITE);
tv.setTextSize(12);
layout.addView(tv, params2);
layout.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
showPopMenu(menuStr, menuClick);
}
});
LayoutParams param = new LayoutParams(120, LayoutParams.FILL_PARENT);
param.rightMargin = 10;
chooseBody.addView(layout, param);
}
@Override
protected void onResume() {
StatService.onResume(this);
super.onResume();
}
@Override
protected void onPause() {
StatService.onPause(this);
super.onPause();
}
}