Android编程实现QQ表情的发送和接收完整实例(附源码下载)

2019-12-10 19:53:57王旭
  • */  private void createExpressionDialog() {  
  • builder = new Dialog(MainActivity.this);   GridView gridView = createGridView();  
  • builder.setContentView(gridView);   builder.setTitle("默认表情");  
  • builder.show();   gridView.setOnItemClickListener(new OnItemClickListener() {  
  • @Override  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
  • long arg3) {   Bitmap bitmap = null;  
  • bitmap = BitmapFactory.decodeResource(getResources(), imageIds[arg2 % imageIds.length]);   ImageSpan imageSpan = new ImageSpan(MainActivity.this, bitmap);  
  • String str = null;   if(arg2<10){  
  • str = "f00"+arg2;   }else if(arg2<100){  
  • str = "f0"+arg2;   }else{  
  • str = "f"+arg2;   }  
  • SpannableString spannableString = new SpannableString(str);   spannableString.setSpan(imageSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
  • edit.append(spannableString);   builder.dismiss();  
  • }   });  
  • }   /**  
  • * 生成一个表情对话框中的gridview   * @return  
  • */  private GridView createGridView() {  
  • final GridView view = new GridView(this);   List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>();  
  • //生成107个表情的id,封装   for(int i = 0; i < 107; i++){  
  • try {   if(i<10){  
  • Field field = R.drawable.class.getDeclaredField("f00" + i);   int resourceId = Integer.parseInt(field.get(null).toString());  
  • imageIds[i] = resourceId;   }else if(i<100){  
  • Field field = R.drawable.class.getDeclaredField("f0" + i);   int resourceId = Integer.parseInt(field.get(null).toString());