package com.xhsemoticonskeyboard.activity;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.AbsListView;
import android.widget.ListView;
import android.widget.Toast;
import com.sj.emoji.EmojiBean;
import com.xhsemoticonskeyboard.R;
import com.xhsemoticonskeyboard.common.Constants;
import com.xhsemoticonskeyboard.common.SimpleCommonUtils;
import com.xhsemoticonskeyboard.common.adapter.ChattingListAdapter;
import com.xhsemoticonskeyboard.common.data.ImMsgBean;
import com.xhsemoticonskeyboard.common.widget.SimpleAppsGridView;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import sj.keyboard.XhsEmoticonsKeyBoard;
import sj.keyboard.data.EmoticonEntity;
import sj.keyboard.interfaces.EmoticonClickListener;
import sj.keyboard.utils.EmoticonsKeyboardUtils;
import sj.keyboard.widget.EmoticonsEditText;
import sj.keyboard.widget.FuncLayout;
public class SimpleTranslucentChatActivity extends AppCompatActivity implements FuncLayout.OnFuncKeyBoardListener {
@Bind(R.id.toolbar) Toolbar toolbar;
@Bind(R.id.lv_chat) ListView lvChat;
@Bind(R.id.ek_bar) XhsEmoticonsKeyBoard ekBar;
private ChattingListAdapter chattingListAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
setContentView(R.layout.activity_simple_chat_translucent);
ButterKnife.bind(this);
toolbar.setTitle("Simple Chat Keyboard");
initView();
}
private void initView() {
initEmoticonsKeyBoardBar();
initListView();
}
private void initEmoticonsKeyBoardBar() {
SimpleCommonUtils.initEmoticonsEditText(ekBar.getEtChat());
ekBar.setAdapter(SimpleCommonUtils.getCommonAdapter(this, emoticonClickListener));
ekBar.addOnFuncKeyBoardListener(this);
ekBar.addFuncView(new SimpleAppsGridView(this));
ekBar.getEtChat().setOnSizeChangedListener(new EmoticonsEditText.OnSizeChangedListener() {
@Override
public void onSizeChanged(int w, int h, int oldw, int oldh) {
scrollToBottom();
}
});
ekBar.getBtnSend().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
OnSendBtnClick(ekBar.getEtChat().getText().toString());
ekBar.getEtChat().setText("");
}
});
ekBar.getEmoticonsToolBarView().addFixedToolItemView(false, R.mipmap.icon_add, null, new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SimpleTranslucentChatActivity.this, "ADD", Toast.LENGTH_SHORT).show();
}
});
ekBar.getEmoticonsToolBarView().addToolItemView(R.mipmap.icon_setting, new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SimpleTranslucentChatActivity.this, "SETTING", Toast.LENGTH_SHORT).show();
}
});
}
EmoticonClickListener emoticonClickListener = new EmoticonClickListener() {
@Override
public void onEmoticonClick(Object o, int actionType, boolean isDelBtn) {
if (isDelBtn) {
SimpleCommonUtils.delClick(ekBar.getEtChat());
} else {
if(o == null){
return;
}
if(actionType == Constants.EMOTICON_CLICK_BIGIMAGE){
if(o instanceof EmoticonEntity){
OnSendImage(((EmoticonEntity)o).getIconUri());
}
} else {
String content = null;
if(o instanceof EmojiBean){
content = ((EmojiBean)o).emoji;
} else if(o instanceof EmoticonEntity){
content = ((EmoticonEntity)o).getContent();
}
if(TextUtils.isEmpty(content)){
return;
}
int index = ekBar.getEtChat().getSelectionStart();
Editable editable = ekBar.getEtChat().getText();
editable.insert(index, content);
}
}
}
};
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(EmoticonsKeyboardUtils.isFullScreen(this)){
boolean isConsum = ekBar.dispatchKeyEventInFullScreen(event);
return isConsum ? isConsum : super.dispatchKeyEvent(event);
}
return super.dispatchKeyEvent(event);
}
private void initListView() {
chattingListAdapter = new ChattingListAdapter(this);
List<ImMsgBean> beanList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
ImMsgBean bean = new ImMsgBean();
bean.setContent("Test:" + i);
beanList.add(bean);
}
chattingListAdapter.addData(beanList);
lvChat.setAdapter(chattingListAdapter);
lvChat.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case SCROLL_STATE_FLING:
break;
case SCROLL_STATE_IDLE:
break;
case SCROLL_STATE_TOUCH_SCROLL:
ekBar.reset();
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
}
private void OnSendBtnClick(String msg) {
if (!TextUtils.isEmpty(msg)) {
ImMsgBean bean = new ImMsgBean();
bean.setContent(msg);
chattingListAdapter.addData(bean, true, false);
scrollToBottom();
}
}
private void OnSendImage(String image) {
if (!TextUtils.isEmpty(image)) {
OnSendBtnClick("[img]" + image);
}
}
private void scrollToBottom() {
lvChat.requestLayout();
lvChat.post(new Runnable() {
@Override
public void run() {
lvChat.setSelection(lvChat.getBottom());
}
});
}
@Override
public void OnFuncPop(int height) {
scrollToBottom();
}
@Override
public void OnFuncClose() { }
@Override
protected void onPause() {
super.onPause();
ekBar.reset();
}
}