activity中的代码实现时如下,
public class MainActivity extends Activity {
private EditText editText;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) this.findViewById(R.id.editText1);
button = (Button) this.findViewById(R.id.button1);
//根据drawable文件夹下图片的后缀名来插入图片,
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int randomId = 1 + new Random().nextInt(5);// 数字1到9;
Field field;
try {
//根据产生的1到5的随机数,来随机获得图片名称,根据名称来获得映射对象。
field = R.drawable.class.getDeclaredField("ic_launcher"
+ randomId);
//获得文件名称对应的资源id。
int resourceId = Integer.parseInt(field.get(null)
.toString());
Bitmap bitmap = BitmapFactory.decodeResource(
getResources(), resourceId);
ImageSpan imageSpan=new ImageSpan(MainActivity.this, bitmap);
SpannableString spannableString=new SpannableString("ic_launcher");
spannableString.setSpan(imageSpan, 0, 11, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.append(spannableString);
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
没点击一个按钮,就会插入一个表情。spannableString.setSpan()方法,参数11是SpannableString 中的 ic_launcher的长度,表示的从多少位开始输出这个字符串。布局文件中只有一个Edittext,和一个Button;