Android 基于Socket发送表情
Android 基于Socket发送表情
曾经一度被这个问题困扰了很久,在网上找了N久都没发现好方法,不是太麻烦,就是根本不能实现。最后的最后终于这个被很可笑的解决的了,之所以可笑是因为我拿这个问题去问别人,那人思索良久,最后还是告诉我不能解决,但是可以提供一个思路,反正我也没办法了,就所幸听他说一下吧,一说果然是都被我试了N次而放弃的方法,但碍于面子就没打他,可是就在我装作很认真的听着的时候,忽然不经意的一句话给了我答案,于是就这么解决了,方法简单的要死,好吧,下面就说说吧
首先我是用ListView显示的聊天内容(我弄的是一个聊天室的的东西),当然这都无所谓,之用一个EditText也OK,
这是我插入表情的对话框,相信不难看懂吧。
- public void showImageDialog() {
- LayoutInflater inflater = LayoutInflater
- .from(AndroidClientActivity.this);
- LinearLayout layout = (LinearLayout) inflater.inflate(
- R.layout.dialoglayout, null);
- AlertDialog.Builder builder = new AlertDialog.Builder(
- AndroidClientActivity.this);
- builder.setTitle("选择表情")
- .setMessage("要添加的表情")
- .setView(layout);
- GridView gv = (GridView) layout.findViewById(R.id.gridview);
- g.simpleAdapter = new SimpleAdapter(AndroidClientActivity.this, list,
- R.layout.itemlayout, new String[] { "face" },
- new int[] { R.id.itemImageview });
- gv.setAdapter(g.simpleAdapter);
- gv.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- @SuppressWarnings("unchecked")
- HashMap<String, Object> m = (HashMap<String, Object>) parent
- .getAdapter().getItem(position);
- CharSequence cs = Html.fromHtml("<img src='" + m.get("face")
- + "'/>", imageGetter, null);
- System.out.println("face-----"+Html.toHtml((Spanned) cs));
- int cursor = etMsg.getSelectionStart();
- etMsg.getText().insert(cursor,cs);
- }
- });
插入之前需要定义这样一个接口,这个在网上都是可以找到的
- ImageGetter imageGetter = new ImageGetter() {
- @Override
- public Drawable getDrawable(String source) {
- int id = Integer.parseInt(source);
- // 根据id从资源文件中获取图片对象
- Drawable d = getResources().getDrawable(id);
- d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
- return d;
- }
- };
- btnSend.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- if (etMsg.getText().toString().equals("")) {
- Toast.makeText(getApplicationContext(), "发送信息为空",
- Toast.LENGTH_SHORT).show();
- return;
- }
- g.content =Html.toHtml(etMsg.getText());//只是将要发送的内容通过Html.toHtml()方法转换了一下格式,可以打印出来看看效果
- public View getView(int position, View convertView, ViewGroup parent) {
- LayoutInflater layoutInflater=LayoutInflater.from(context);
- convertView=(LinearLayout) layoutInflater.inflate(R.layout.chatitem, null);
- TextView et = (TextView) convertView.findViewById(R.id.tvChat);
- et.setText(Html.fromHtml(list.get(position), imageGetter, null));
- return convertView;
- }
- et.setText(<pre class="java" name="code">et.setText(Html.fromHtml(list.get(position), imageGetter, null));
- et.setText(Html.fromHtml(list.get(position), imageGetter, null));
- 和
- et.setText(Html.toHtml(list.get(position), imageGetter, null));
评论暂时关闭