package com.shaweibo.biu.ui.post; import android.app.Activity; import android.app.Fragment; import android.graphics.Bitmap; import android.os.Bundle; import android.text.Spannable; import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; import com.shaweibo.biu.R; import com.shaweibo.biu.adapter.common.EmoticonAdapter; import com.shaweibo.biu.dao.emoticons.EmoticonsDao; import com.shaweibo.biu.widget.StickerImageSpan; public class EmoticonFragment extends Fragment { private GridView gv_emoji; private EmoticonAdapter mAdapter; OnEmoticonOnClinckListener mListener; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View mView = null; mView = inflater.inflate(R.layout.fragment_emoji_panel, null); gv_emoji = (GridView) mView.findViewById(R.id.gv_emoji); return mView; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mAdapter = new EmoticonAdapter(getActivity()); gv_emoji.setAdapter(mAdapter); gv_emoji.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stubf onClickItem(arg2, mAdapter.getItem(arg2)); } }); } private void onClickItem(int position, String emoctionName) { // delete button pressed Bitmap bitmap = EmoticonsDao.getInstance().bitmaps.get(emoctionName); StickerImageSpan imageSpan = new StickerImageSpan(getActivity(), bitmap); SpannableString spannableString = new SpannableString( emoctionName .substring(0, emoctionName.length())); spannableString.setSpan(imageSpan, 0, emoctionName.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // onEmojiClick(spannableString); if(mListener!=null) { mListener.onEmoticonClick(spannableString); } } public void setOnEmoticonListener(OnEmoticonOnClinckListener listener){ mListener=listener; } @Override public void onAttach(Activity activity) { super.onAttach(activity); if(activity instanceof OnEmoticonOnClinckListener){ mListener= (OnEmoticonOnClinckListener) activity; } } public void onEmojiClick(SpannableString spannableString) { // int maxLength; // // // if (et_content.getText().toString().length() + spannableString.length() <= maxLength) { // Spannable contentSpann = et_content.getText(); // int select = et_content.getSelectionStart(); // SpannableStringBuilder strBuilder = new SpannableStringBuilder(); // strBuilder.append(contentSpann.subSequence(0, select)); // strBuilder.append(spannableString); // strBuilder.append(contentSpann.subSequence(select, contentSpann.length())); // // et_content.setText(strBuilder); // int length = select + spannableString.length(); // if (length > et_content.length()) { // length = et_content.length(); // } // et_content.setSelection(length); // } else { // String msg = String.format(getString(R.string.moment_comment_length_error), // maxLength); // // Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show(); // } } // public void onEmojiDelete() { // int start = et_content.getSelectionStart(); // int end = et_content.getSelectionEnd(); // String s = et_content.getText().toString(); // if (start == end && start != 0) { // start--; // } // // if (start == end && start == 0) { // return; // } // // String deStr = getDeleteSub(s, start); // // make sure that the string is like the name // if (!TextUtils.isEmpty(deStr) && deStr.length() > 1) { // int id = EmojiUtil.getResIdByName(deStr); // if (id != 0) { // start = start - deStr.length(); // et_content.setText(EmojiUtil.getExpressionString(getActivity(), // s.substring(0, start + 1) + s.substring(end, s.length()))); // // } else { // et_content.setText(EmojiUtil.getExpressionString(getActivity(), // s.substring(0, start) + s.substring(end, s.length()))); // } // // } else { // et_content.setText(EmojiUtil.getExpressionString(getActivity(), // s.substring(0, start) + s.substring(end, s.length()))); // } // // if (s.length() > 0) { // et_content.setSelection(et_content.getText().toString().length()); // } // // } // // private String getDeleteSub(String s, int start) { // String deStr = s.substring(start, start + 1); // // get the emoji's temp str // if (!TextUtils.isEmpty(deStr) && deStr.equals(")")) { // for (int i = start - 1; i >= 0; i--) { // String ch = s.substring(i, i + 1); // if (TextUtils.isEmpty(ch)) { // deStr = null; // break; // } // // if (ch.equals(")")) { // deStr = null; // break; // } // // if (ch.equals("(")) { // deStr = ch + deStr; // break; // } // // if (!Utils.isEnglishChar(ch.charAt(0)) && !ch.equals("/")) { // deStr = null; // break; // } // // deStr = ch + deStr; // } // } // // return deStr; // } public interface OnEmoticonOnClinckListener{ void onEmoticonClick(SpannableString emojiSpane); } }