package com.hpw.myapp.ui.publish;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.hpw.mvpframe.base.CoreBaseActivity;
import com.hpw.mvpframe.utils.StatusBarUtil;
import com.hpw.mvpframe.utils.StringUtils;
import com.hpw.mvpframe.widget.recyclerview.BaseQuickAdapter;
import com.hpw.mvpframe.widget.recyclerview.BaseViewHolder;
import com.hpw.mvpframe.widget.recyclerview.CoreRecyclerView;
import com.hpw.mvpframe.widget.recyclerview.listener.OnItemClickListener;
import com.hpw.myapp.R;
import com.hpw.myapp.ui.publish.utils.PublishUtils;
import com.hpw.myapp.widget.emoticonskeyboard.adpater.PageSetAdapter;
import com.hpw.myapp.widget.emoticonskeyboard.interfaces.EmoticonClickListener;
import com.hpw.myapp.widget.emoticonskeyboard.widget.EmoticonsEditText;
import com.hpw.myapp.widget.emoticonskeyboard.widget.FuncLayout;
import com.hpw.myapp.widget.imageselector.model.LocalMedia;
import com.hpw.myapp.widget.imageselector.view.ImagePreviewActivity;
import com.hpw.myapp.widget.imageselector.view.ImageSelectorActivity;
import java.util.ArrayList;
import butterknife.BindView;
import butterknife.OnClick;
/**
* Created by hpw on 16/11/22.
*/
public class PublishActivity extends CoreBaseActivity implements FuncLayout.OnFuncKeyBoardListener {
@BindView(R.id.tv_publish)
TextView tvPublish;
@BindView(R.id.et_content)
EmoticonsEditText etContent;
@BindView(R.id.et_limit)
TextView tvLimit;
@BindView(R.id.ek_bar)
DefEmoticonsKeyBoard ekBar;
private static int inputLength = 300;
StringBuilder publishString;
private static final int REQUEST_IMAGE = 2;
private static ArrayList<String> mSelectPath = new ArrayList<>();
private static Activity activity;
@BindView(R.id.result_recycler)
CoreRecyclerView recyclerView;
@Override
public int getLayoutId() {
return R.layout.activity_publish;
}
@Override
public void initView(Bundle savedInstanceState) {
mSelectPath.clear();
StatusBarUtil.setTransparent(this);
activity = this;
tvPublish.setEnabled(false);
initEmoticonsKeyBoardBar();
initEmoticonsEditText();
recyclerView.init(new GridLayoutManager(mContext, 5), new BaseQuickAdapter<String, BaseViewHolder>(R.layout.item_photo_result) {
@Override
protected void convert(BaseViewHolder helper, String item) {
Glide.with(mContext).load(item).crossFade().centerCrop().into((ImageView) helper.getView(R.id.image));
}
}).addOnItemClickListener(new OnItemClickListener() {
@Override
public void SimpleOnItemClick(BaseQuickAdapter adapter, View view, int position) {
ArrayList<LocalMedia> mSelect = new ArrayList<>();
for (String string : mSelectPath) {
mSelect.add(new LocalMedia(string));
}
ImagePreviewActivity.startPreview(activity, mSelect, mSelect, mSelect.size(), position);
}
});
}
private void initEmoticonsEditText() {
publishString = new StringBuilder();
PublishUtils.initEmoticonsEditText(etContent);
etContent.setFocusable(true);
etContent.setFocusableInTouchMode(true);
etContent.requestFocus();
etContent.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
publishString.setLength(0);
publishString.append(s);
if (s == null) return;
String str = s.toString().trim();
if (isInputLengthOutOfRange(str) || str.equals("")) {
tvPublish.setEnabled(false);
tvPublish.setTextColor(getResources().getColor(R.color.font_dark_gery));
setTextInputCount(str, true);
} else {
tvPublish.setEnabled(true);
tvPublish.setTextColor(getResources().getColor(R.color.white));
setTextInputCount(str, false);
}
}
});
}
/**
* 设置当前输入框中文字的颜色
*
* @param input
*/
private void setTextInputCount(String input, boolean isOutOfRange) {
int count = (int) Math.ceil((double) StringUtils.getChineseCount(input) / 2d);
tvLimit.setText(" 还可以输入" + (inputLength - count) + "字");
if (isOutOfRange) {
if (input.equals("")) {
tvLimit.setTextColor(getResources().getColor(R.color.font_dark_gery));
} else {
tvLimit.setTextColor(getResources().getColor(R.color.md_red_500));
}
} else {
tvLimit.setTextColor(getResources().getColor(R.color.font_dark_gery));
}
}
/**
* 判断当前输入框中文字是否超过规定长度
*
* @param input
* @return
*/
private boolean isInputLengthOutOfRange(String input) {
return Math.ceil((double) StringUtils.getChineseCount(input) / 2d) > inputLength;
}
private void initEmoticonsKeyBoardBar() {
EmoticonClickListener emoticonClickListener = PublishUtils.getCommonEmoticonClickListener(etContent);
PageSetAdapter pageSetAdapter = new PageSetAdapter();
PublishUtils.addXhsPageSetEntity(pageSetAdapter, this, emoticonClickListener);
ekBar.setAdapter(pageSetAdapter);
ekBar.addOnFuncKeyBoardListener(this);
}
public static void startActivity(Context mContext) {
Intent intent = new Intent(mContext, PublishActivity.class);
mContext.startActivity(intent);
}
@OnClick({R.id.tv_cancel, R.id.tv_publish})
public void onClick(View view) {
switch (view.getId()) {
case R.id.tv_cancel:
finish();
break;
case R.id.tv_publish:
publish();
break;
}
}
private void publish() {
}
@Override
public void OnFuncPop(int height) {
}
@Override
public void OnFuncClose() {
}
@Override
public void onPause() {
super.onPause();
ekBar.reset();
}
public static void pickImage() {
ImageSelectorActivity.start(activity, 9 - mSelectPath.size(), ImageSelectorActivity.MODE_MULTIPLE, true, true, false);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == ImageSelectorActivity.REQUEST_IMAGE) {
mSelectPath.addAll((ArrayList<String>) data.getSerializableExtra(ImageSelectorActivity.REQUEST_OUTPUT));
} else if (resultCode == RESULT_OK && requestCode == ImagePreviewActivity.REQUEST_PREVIEW) {
mSelectPath.clear();
for (LocalMedia localMedia : (ArrayList<LocalMedia>) data.getSerializableExtra(ImageSelectorActivity.REQUEST_OUTPUT)) {
mSelectPath.add(localMedia.getPath());
}
}
recyclerView.getAdapter().setNewData(mSelectPath);
}
}