package net.coding.program.message; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.GridView; import net.coding.program.R; import net.coding.program.common.MyImageGetter; import net.coding.program.common.enter.EnterLayout; import net.coding.program.common.widget.input.InputAction; import java.util.HashMap; /** * Created by chaochen on 14-10-30. */ public class EmojiFragment extends Fragment { public enum Type { Small, Big, Zhongqiu } private LayoutInflater mInflater; private String[] mEmojiData; private MyImageGetter myImageGetter; private int deletePos; private InputAction mEnterLayout; private Type mType; private int mItemLayout = R.layout.gridview_emotion_emoji; private int mGridViewColumns; public static HashMap<String, String> emojiMonkeyMap = new HashMap<String, String>(); public static HashMap<String, String> textToMonkdyMap = new HashMap<String, String>(); static { emojiMonkeyMap.put("coding_emoji_01", "哈哈"); emojiMonkeyMap.put("coding_emoji_02", "吐"); emojiMonkeyMap.put("coding_emoji_03", "压力山大"); emojiMonkeyMap.put("coding_emoji_04", "忧伤"); emojiMonkeyMap.put("coding_emoji_05", "坏人"); emojiMonkeyMap.put("coding_emoji_06", "酷"); emojiMonkeyMap.put("coding_emoji_07", "哼"); emojiMonkeyMap.put("coding_emoji_08", "你咬我啊"); emojiMonkeyMap.put("coding_emoji_09", "内急"); emojiMonkeyMap.put("coding_emoji_10", "32个赞"); emojiMonkeyMap.put("coding_emoji_11", "加油"); emojiMonkeyMap.put("coding_emoji_12", "闭嘴"); emojiMonkeyMap.put("coding_emoji_13", "wow"); emojiMonkeyMap.put("coding_emoji_14", "泪流成河"); emojiMonkeyMap.put("coding_emoji_15", "NO!"); emojiMonkeyMap.put("coding_emoji_16", "疑问"); emojiMonkeyMap.put("coding_emoji_17", "耶"); emojiMonkeyMap.put("coding_emoji_18", "生日快乐"); emojiMonkeyMap.put("coding_emoji_19", "求包养"); emojiMonkeyMap.put("coding_emoji_20", "吹泡泡"); emojiMonkeyMap.put("coding_emoji_21", "睡觉"); emojiMonkeyMap.put("coding_emoji_22", "惊讶"); emojiMonkeyMap.put("coding_emoji_23", "Hi"); emojiMonkeyMap.put("coding_emoji_24", "打发点咯"); emojiMonkeyMap.put("coding_emoji_25", "呵呵"); emojiMonkeyMap.put("coding_emoji_26", "喷血"); emojiMonkeyMap.put("coding_emoji_27", "Bug"); emojiMonkeyMap.put("coding_emoji_28", "听音乐"); emojiMonkeyMap.put("coding_emoji_29", "垒码"); emojiMonkeyMap.put("coding_emoji_30", "我打你哦"); emojiMonkeyMap.put("coding_emoji_31", "顶足球"); emojiMonkeyMap.put("coding_emoji_32", "放毒气"); emojiMonkeyMap.put("coding_emoji_33", "表白"); emojiMonkeyMap.put("coding_emoji_34", "抓瓢虫"); emojiMonkeyMap.put("coding_emoji_35", "下班"); emojiMonkeyMap.put("coding_emoji_36", "冒泡"); emojiMonkeyMap.put("coding_emoji_38", "2015"); emojiMonkeyMap.put("coding_emoji_39", "拜年"); emojiMonkeyMap.put("coding_emoji_40", "发红包"); emojiMonkeyMap.put("coding_emoji_41", "放鞭炮"); emojiMonkeyMap.put("coding_emoji_42", "求红包"); emojiMonkeyMap.put("coding_emoji_43", "新年快乐"); emojiMonkeyMap.put("festival_emoji_01", "奔月"); emojiMonkeyMap.put("festival_emoji_02", "吃月饼"); emojiMonkeyMap.put("festival_emoji_03", "捞月"); emojiMonkeyMap.put("festival_emoji_04", "打招呼"); emojiMonkeyMap.put("festival_emoji_05", "中秋快乐"); emojiMonkeyMap.put("festival_emoji_06", "赏月"); emojiMonkeyMap.put("festival_emoji_07", "悠闲"); emojiMonkeyMap.put("festival_emoji_08", "爬爬"); textToMonkdyMap.put("哈哈", "coding_emoji_01"); textToMonkdyMap.put("吐", "coding_emoji_02"); textToMonkdyMap.put("压力山大", "coding_emoji_03"); textToMonkdyMap.put("忧伤", "coding_emoji_04"); textToMonkdyMap.put("坏人", "coding_emoji_05"); textToMonkdyMap.put("酷", "coding_emoji_06"); textToMonkdyMap.put("哼", "coding_emoji_07"); textToMonkdyMap.put("你咬我啊", "coding_emoji_08"); textToMonkdyMap.put("内急", "coding_emoji_09"); textToMonkdyMap.put("32个赞", "coding_emoji_10"); textToMonkdyMap.put("加油", "coding_emoji_11"); textToMonkdyMap.put("闭嘴", "coding_emoji_12"); textToMonkdyMap.put("wow", "coding_emoji_13"); textToMonkdyMap.put("泪流成河", "coding_emoji_14"); textToMonkdyMap.put("NO!", "coding_emoji_15"); textToMonkdyMap.put("疑问", "coding_emoji_16"); textToMonkdyMap.put("耶", "coding_emoji_17"); textToMonkdyMap.put("生日快乐", "coding_emoji_18"); textToMonkdyMap.put("求包养", "coding_emoji_19"); textToMonkdyMap.put("吹泡泡", "coding_emoji_20"); textToMonkdyMap.put("睡觉", "coding_emoji_21"); textToMonkdyMap.put("惊讶", "coding_emoji_22"); textToMonkdyMap.put("Hi", "coding_emoji_23"); textToMonkdyMap.put("打发点咯", "coding_emoji_24"); textToMonkdyMap.put("呵呵", "coding_emoji_25"); textToMonkdyMap.put("喷血", "coding_emoji_26"); textToMonkdyMap.put("Bug", "coding_emoji_27"); textToMonkdyMap.put("听音乐", "coding_emoji_28"); textToMonkdyMap.put("垒码", "coding_emoji_29"); textToMonkdyMap.put("我打你哦", "coding_emoji_30"); textToMonkdyMap.put("顶足球", "coding_emoji_31"); textToMonkdyMap.put("放毒气", "coding_emoji_32"); textToMonkdyMap.put("表白", "coding_emoji_33"); textToMonkdyMap.put("抓瓢虫", "coding_emoji_34"); textToMonkdyMap.put("下班", "coding_emoji_35"); textToMonkdyMap.put("冒泡", "coding_emoji_36"); textToMonkdyMap.put("2015", "coding_emoji_38"); textToMonkdyMap.put("拜年", "coding_emoji_39"); textToMonkdyMap.put("发红包", "coding_emoji_40"); textToMonkdyMap.put("放鞭炮", "coding_emoji_41"); textToMonkdyMap.put("求红包", "coding_emoji_42"); textToMonkdyMap.put("新年快乐", "coding_emoji_43"); textToMonkdyMap.put("奔月", "festival_emoji_01"); textToMonkdyMap.put("吃月饼", "festival_emoji_02"); textToMonkdyMap.put("捞月", "festival_emoji_03"); textToMonkdyMap.put("打招呼", "festival_emoji_04"); textToMonkdyMap.put("中秋快乐", "festival_emoji_05"); textToMonkdyMap.put("赏月", "festival_emoji_06"); textToMonkdyMap.put("悠闲", "festival_emoji_07"); textToMonkdyMap.put("爬爬", "festival_emoji_08"); } public EmojiFragment() { super(); } public void init(String[] emojis, MyImageGetter imageGetter, InputAction enterLayout, Type type) { mEmojiData = emojis; myImageGetter = imageGetter; deletePos = emojis.length - 1; mEnterLayout = enterLayout; mType = type; if (type == Type.Big || type == Type.Zhongqiu) { mItemLayout = R.layout.gridview_emotion_big; mGridViewColumns = 4; } else { // if (type == Type.Small) { mItemLayout = R.layout.gridview_emotion_emoji; mGridViewColumns = 7; } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putStringArray("mEmojiData", mEmojiData); outState.putInt("deletePos", deletePos); outState.putSerializable("mType", mType); outState.putInt("mItemLayout", mItemLayout); outState.putInt("mGridViewColumns", mGridViewColumns); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mInflater = inflater; View v = inflater.inflate(R.layout.emoji_gridview, container, false); if (savedInstanceState != null) { mEmojiData = savedInstanceState.getStringArray("mEmojiData"); deletePos = savedInstanceState.getInt("deletePos"); mType = (EmojiFragment.Type) savedInstanceState.getSerializable("mType"); mItemLayout = savedInstanceState.getInt("mItemLayout"); mGridViewColumns = savedInstanceState.getInt("mGridViewColumns"); myImageGetter = new MyImageGetter(getActivity()); Activity activity = getActivity(); if (activity instanceof EnterEmojiLayout) { mEnterLayout = ((EnterEmojiLayout) activity).getEnterLayout(); } } GridView gridView = (GridView) v.findViewById(R.id.gridView); gridView.setNumColumns(mGridViewColumns); gridView.setAdapter(adapterIcon); gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (mType == Type.Small) { int realPos = (int) id; if (realPos == deletePos) { mEnterLayout.deleteOneChar(); } else { String name = (String) adapterIcon.getItem((int) id); if (name.equals("my100")) { name = "100"; } else if (name.equals("a00001")) { name = "+1"; } else if (name.equals("a00002")) { name = "-1"; } mEnterLayout.insertEmoji(name); } } else { String potoName = (String) adapterIcon.getItem((int) id); String editName = emojiMonkeyMap.get(potoName); mEnterLayout.insertEmoji(editName); } } }); return v; } BaseAdapter adapterIcon = new BaseAdapter() { @Override public int getCount() { return mEmojiData.length; } @Override public Object getItem(int position) { return mEmojiData[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(mItemLayout, parent, false); holder = new ViewHolder(); holder.icon = convertView.findViewById(R.id.icon); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } String iconName = mEmojiData[position]; holder.icon.setBackgroundDrawable(myImageGetter.getDrawable(iconName)); return convertView; } class ViewHolder { public View icon; } }; public interface EnterEmojiLayout { EnterLayout getEnterLayout(); } }