package com.yyquan.jzh.activity;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
import com.yyquan.jzh.R;
import com.yyquan.jzh.entity.Ip;
import com.yyquan.jzh.entity.User;
import com.yyquan.jzh.util.Base64Coder;
import com.yyquan.jzh.util.ImageCompressUtils;
import com.yyquan.jzh.util.PhotoSelectedHelper;
import com.yyquan.jzh.view.DialogView;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import cn.pedant.SweetAlert.SweetAlertDialog;
import cz.msebera.android.httpclient.Header;
import me.nereo.multi_image_selector.MultiImageSelectorActivity;
import me.nereo.multi_image_selector.adapter.MainGridAdapter;
import me.nereo.multi_image_selector.bean.Image;
import uk.co.senab.photoview.PhotoViewAttacher;
public class LuntanToStateActivity extends Activity implements View.OnClickListener, PopupWindow.OnDismissListener, MainGridAdapter.Callback {
private static final int REQUEST_IMAGE = 2;
public static final int RESULT_OK = -1;
LinearLayout ll_back;
LinearLayout ll_enter;
RelativeLayout rl_location;
boolean cb_bool = false;
EditText et_content;
PhotoViewAttacher mAttacher;
GridView mGridView;
MainGridAdapter mainGridAdapter;
public ArrayList<String> mSelectPath = new ArrayList<>();
public boolean isYuantu;
PopupWindow popupWindow;
ImageView popImageView;
String str_content;
String location;
PhotoSelectedHelper mPhotoSelectedHelper;
Intent intent;
public User user;
TextView tv_location;
String url = Ip.ip + "/YfriendService/DoGetLunTan?";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_luntan_to_state);
mPhotoSelectedHelper = new PhotoSelectedHelper(this);
intent = getIntent();
user = (User) intent.getSerializableExtra("user");
initialView();
initialPopups();
initialDialog();
}
/**
* 初始化状态框
*/
private void initialDialog() {
DialogView.Initial(this, "正在发表......");
}
@Override
protected void onDestroy() {
super.onDestroy();
}
private void initialView() {
ll_back = (LinearLayout) findViewById(R.id.luntan_state_layout_back);
ll_enter = (LinearLayout) findViewById(R.id.luntan_state_layout_enter);
rl_location = (RelativeLayout) findViewById(R.id.luntan_state_layout_location);
tv_location = (TextView) findViewById(R.id.luntan_state_textview_location);
et_content = (EditText) findViewById(R.id.luntan_state_edittext_content);
mGridView = (GridView) findViewById(R.id.luntan_state_gridview);
mainGridAdapter = new MainGridAdapter(LuntanToStateActivity.this, this, 9);
mGridView.setAdapter(mainGridAdapter);
mGridView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public void onGlobalLayout() {
final int width = mGridView.getWidth();
final int height = mGridView.getHeight();
final int desireSize = getResources().getDimensionPixelOffset(me.nereo.multi_image_selector.R.dimen.image_size);
final int numCount = width / desireSize;
final int columnSpace = getResources().getDimensionPixelOffset(me.nereo.multi_image_selector.R.dimen.space_size);
int columnWidth = (width - columnSpace * (numCount - 1)) / numCount;
mainGridAdapter.setItemSize(columnWidth);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mGridView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
mGridView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
});
mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == mSelectPath.size()) {
Intent intent = new Intent(LuntanToStateActivity.this, MultiImageSelectorActivity.class);
// 是否显示拍摄图片
intent.putExtra(MultiImageSelectorActivity.EXTRA_SHOW_CAMERA, true);
// 最大可选择图片数量
intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, 9);
// 选择模式
intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_MODE, 1);
// 默认选择
if (mSelectPath != null && mSelectPath.size() > 0) {
intent.putExtra(MultiImageSelectorActivity.EXTRA_DEFAULT_SELECTED_LIST, mSelectPath);
}
startActivityForResult(intent, REQUEST_IMAGE);
} else {
Picasso.with(LuntanToStateActivity.this).load(new File(mSelectPath.get(position))).into(popImageView, new Callback() {
@Override
public void onSuccess() {
mAttacher = new PhotoViewAttacher(popImageView);
popImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (popupWindow != null && popupWindow.isShowing()) {
popupWindow.dismiss();
}
}
});
}
@Override
public void onError() {
}
});
popupWindow.showAtLocation(LayoutInflater.from(LuntanToStateActivity.this).inflate(R.layout.activity_luntan_to_state, null)
, Gravity.CENTER, 0, 0);
}
}
});
ll_back.setOnClickListener(this);
ll_enter.setOnClickListener(this);
rl_location.setOnClickListener(this);
}
/**
* 初始化popupwindow
*/
private void initialPopups() {
popImageView = new ImageView(this);
// popImageView.setPadding(50, 50, 50, 50);
popupWindow = new PopupWindow(popImageView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
popupWindow.setBackgroundDrawable(new ColorDrawable(0xb0000000));
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.luntan_state_layout_back:
finish();
break;
case R.id.luntan_state_layout_enter:
upData();
break;
case R.id.luntan_state_layout_location:
Intent it = new Intent(this, LocationActivity.class);
startActivityForResult(it, 99);
break;
}
}
private void upData() {
str_content = et_content.getText().toString();
if (str_content.length() < 5) {
Toast.makeText(LuntanToStateActivity.this, "内容长度必须大于5", Toast.LENGTH_SHORT).show();
return;
}
Message m = h.obtainMessage(1);
h.sendMessage(m);
}
Handler h = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {
DialogView.show();
ll_enter.setEnabled(false);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(new Date());
RequestParams params = new RequestParams();
params.put("action", "save");
params.put("user", user.getUser());
params.put("time", time);
params.put("content", str_content);
if (cb_bool) {
params.put("location", location);
} else {
params.put("location", "");
}
if (mSelectPath != null && mSelectPath.size() > 0) {
params.put("image_size", mSelectPath.size());
for (int i = 0; i < mSelectPath.size(); i++) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ImageCompressUtils.getimage(mSelectPath.get(i)).compress(Bitmap.CompressFormat.JPEG,
80, stream);
byte[] b = stream.toByteArray();
// 将图片流以字符串形式存储下来
String file = new String(Base64Coder.encodeLines(b));
params.put("file" + i, file);
String filename = user.getUser() + "_" + new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()) + ".jpg";
params.put("filename" + i, i + filename);
}
} else {
params.put("image_size", "0");
}
// Toast.makeText(LuntanToStateActivity.this, params.toString(), Toast.LENGTH_SHORT).show();
AsyncHttpClient client = new AsyncHttpClient();
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
ll_enter.setEnabled(true);
DialogView.dismiss();
String str = new String(responseBody);
if (str != null) {
try {
JSONObject object = new JSONObject(str);
if (object.getString("code").equals("success")) {
Toast.makeText(LuntanToStateActivity.this, "发表成功", Toast.LENGTH_SHORT).show();
Intent intents = new Intent(LuntanToStateActivity.this, MainActivity.class);
setResult(200, intents);
finish();
//更新评论内容
} else {
Toast.makeText(LuntanToStateActivity.this, "发表失败,请重试", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
ll_enter.setEnabled(true);
DialogView.dismiss();
e.printStackTrace();
}
}
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
ll_enter.setEnabled(true);
DialogView.dismiss();
Toast.makeText(LuntanToStateActivity.this, "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show();
}
});
}
}
};
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 99) {
if (data == null) {
return;
} else {
location = data.getStringExtra("location");
if (location.equals("地点")) {
cb_bool = false;
tv_location.setText(location);
} else {
cb_bool = true;
tv_location.setText(location);
}
}
}
if (requestCode == REQUEST_IMAGE) {
if (resultCode == RESULT_OK) {
isYuantu = data.getBooleanExtra("YUANTU", false);
mSelectPath = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);
mainGridAdapter.setData(toImages(mSelectPath));
}
}
}
@Override
public void onDismiss() {
WindowManager.LayoutParams lp = getWindow()
.getAttributes();
lp.alpha = 1f;
getWindow().setAttributes(lp);
}
private List<Image> toImages(ArrayList<String> mmSelectPath) {
List<Image> images = new ArrayList<>();
for (int i = 0; i < mmSelectPath.size(); i++) {
Image image = new Image();
image.path = mmSelectPath.get(i);
images.add(image);
}
return images;
}
public void dataDelete(String str) {
if (str == null) {
return;
} else {
if (mSelectPath.contains(str)) {
mSelectPath.remove(str);
mainGridAdapter.setData(toImages(mSelectPath));
}
}
}
@Override
public void callbackDelete(String str) {
dataDelete(str);
}
@Override
public void onBackPressed() {
if (popupWindow.isShowing()) {
popupWindow.dismiss();
} else {
finish();
}
}
}