package com.amlogic.tzr.charismatic_yichang.activity;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewTreeObserver;
import android.view.animation.OvershootInterpolator;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.amlogic.tzr.charismatic_yichang.BaseActivity;
import com.amlogic.tzr.charismatic_yichang.R;
import com.amlogic.tzr.charismatic_yichang.Tool.BitmapUtil;
import com.amlogic.tzr.charismatic_yichang.Tool.KeyBoardUtil;
import com.amlogic.tzr.charismatic_yichang.bean.Feed;
import com.amlogic.tzr.charismatic_yichang.bean.User;
import com.amlogic.tzr.charismatic_yichang.event.LoginEvent;
import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
import java.io.File;
import java.io.FileNotFoundException;
import cn.bmob.v3.BmobUser;
import cn.bmob.v3.datatype.BmobFile;
import cn.bmob.v3.listener.SaveListener;
import cn.bmob.v3.listener.UploadFileListener;
import de.greenrobot.event.EventBus;
public class PublishActivity extends BaseActivity {
private static final String TAG = "PublishActivity";
public static final String ARG_TAKEN_PHOTO_URI = "post_img";
private Context mContext;
private Uri photoUri;
private int photoSize;
private Toolbar mToolbar;
private ImageView photoView;
private EditText contentText;
/**
* 用户登录进行网络请求时弹出的进度提示
*/
private Dialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_publish);
mContext=PublishActivity.this;
if (savedInstanceState == null) {
// BitmapPath = getIntent().getStringExtra(ARG_TAKEN_PHOTO_URI);
photoUri=getIntent().getParcelableExtra(ARG_TAKEN_PHOTO_URI);
} else {
// BitmapPath = savedInstanceState.getString(ARG_TAKEN_PHOTO_URI);
photoUri=savedInstanceState.getParcelable(ARG_TAKEN_PHOTO_URI);
}
photoSize = getResources().getDimensionPixelSize(R.dimen.publish_photo_thumbnail_size);
initVIew();
initLoadDialog();
}
private void initVIew() {
mToolbar = (Toolbar) findViewById(R.id.tl_ap_toolBar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("分享感受");
photoView= (ImageView) findViewById(R.id.iv_ap_Photo);
contentText= (EditText) findViewById(R.id.et_ap_Description);
photoView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
photoView.getViewTreeObserver().removeOnPreDrawListener(this);
loadThumbnailPhoto();
return true;
}
});
}
private void loadThumbnailPhoto() {
photoView.setScaleX(0);
photoView.setScaleY(0);
Picasso.with(this)
.load(photoUri)
.centerCrop()
.resize(photoSize, photoSize)
.into(photoView, new Callback() {
@Override
public void onSuccess() {
photoView.animate()
.scaleX(1.f).scaleY(1.f)
.setInterpolator(new OvershootInterpolator())
.setDuration(400)
.setStartDelay(200)
.start();
}
@Override
public void onError() {
}
});
}
private void initLoadDialog(){
progressDialog = new Dialog(mContext, R.style.progress_dialog);
progressDialog.setContentView(R.layout.load_progress_with_text);
progressDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
TextView msg = (TextView)progressDialog.findViewById(R.id.id_tv_loadingmsg);
msg.setText("正在上传中");
progressDialog.setCanceledOnTouchOutside(false);
}
private void publishContent() throws FileNotFoundException {
// Bitmap bitmap=BitmapUtil.decodeUriAsBitmap(mContext,photoUri);
// Bitmap photoBitmap=BitmapUtil.compressImage(BitmapUtil.decodeUriAsBitmap(mContext, photoUri));
Bitmap photoBitmap=BitmapUtil.compressImage(BitmapUtil.decodeSampledBitmapFromResource(mContext,photoUri,360,480));
String BitmapPath = BitmapUtil.saveBitmap(photoBitmap, mContext);
if (!photoBitmap.isRecycled()){
photoBitmap.recycle();
}
final BmobFile file = new BmobFile(new File(BitmapPath));
file.upload(mContext, new UploadFileListener() {
@Override
public void onSuccess() {
Log.e(TAG, " feed upload is onSuccess");
publish(file);
}
@Override
public void onFailure(int i, String s) {
progressDialog.dismiss();
Log.e(TAG, " feed upload is onFailure");
}
});
}
private void publish(BmobFile file) {
final User user = BmobUser.getCurrentUser(mContext, User.class);
// Log.e(TAG, " feed publish user=="+user.toString());
Feed feed = new Feed();
if (file != null) {
feed.setPhoto(file);
}
feed.setContent(contentText.getText().toString());
feed.setUser(user);
feed.setComment(0);
feed.save(mContext, new SaveListener() {
@Override
public void onSuccess() {
progressDialog.dismiss();
EventBus.getDefault().post(new LoginEvent(true,user));
Log.e(TAG, " feed publish is onSuccess");
finish();
}
@Override
public void onFailure(int i, String s) {
progressDialog.dismiss();
Log.e(TAG, " feed publish is onFailure");
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable(ARG_TAKEN_PHOTO_URI, photoUri);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_publish, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.home:
finish();
break;
case R.id.action_publish:
KeyBoardUtil.closeKeybord(contentText,mContext);
progressDialog.show();
try {
publishContent();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
break;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onDestroy() {
super.onDestroy();
// EventBus.getDefault().unregister(this);
}
}