国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現QQ輸入文字和表情的方法

2020-02-21 17:36:37
字體:
來源:轉載
供稿:網友

有時候為了滿足項目的需要,編程人員都會研究一些方法來測試,其實要實現像QQ聊天輸入框那也輸入文字和圖片,在Android開發中只要幾行代碼即可,今天就讓武林技術頻道小編帶你一起來了解一下Android實現QQ輸入文字和表情的方法。

Android實現QQ輸入文字和表情的方法

EditText和TextView一樣,也可以進行圖文混排。所不同的是,TextView只用于顯示圖文混排效果,而EditText不僅可顯示,也可混合輸入文字和圖像,讓我們先回顧一下圖5.2所示的QQ聊天輸入框,在輸入框中可以同時輸入文字和表情圖像。實際上,這種效果在Android SDK中只需要幾行代碼就可以實現。為了使讀者更有學習的沖動,先來欣賞一下即將實現的效果,如圖5.16所示。

圖5.16 在EditText控件中輸入文字和圖像
為了實現這個程序,首先來準備一些要用到的素材,也就是要在EditText控件中輸入的圖像文件。本例準備了9個png圖像文件(face1.png至face9.png),都放在了res/drawable目錄中。
接下來在屏幕上放一個只能顯示3行(可輸入多行)的EditText和一個Button,布局文件的代碼如下:



android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
android:layout_height="wrap_content" android:lines="3" android:gravity="left|top"/>
android:layout_height="wrap_content" android:text="隨機插入表情"
android:onClick="onClick_RandomFace" android:layout_marginTop="10dp" />


上面代碼的標簽中將android:gravity屬性值設為left|top。以使輸入的文本從左上角開始顯示,如果不設置該屬性,則輸入的文本會從左側中心位置開始顯示(由于設置了android:line=”3”,因此,EditText可同時顯示三行的內容,所以會存在這個問題,如果只顯示一行,則不存在這個問題)。

?

?


public void onClick_RandomFace(View view)
{
// 隨機產生1至9的整數
int randomId = 1 + new Random().nextInt(9);
try
{
// 根據隨機產生的1至9的整數從R.drawable類中獲得相應資源ID(靜態變量)的Field對象
Field field = R.drawable.class.getDeclaredField("face" + randomId);
// 獲得資源ID的值,也就是靜態變量的值
int resourceId = Integer.parseInt(field.get(null).toString());
// 根據資源ID獲得資源圖像的Bitmap對象
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resourceId);
// 根據Bitmap對象創建ImageSpan對象
ImageSpan imageSpan = new ImageSpan(this, bitmap);
// 創建一個SpannableString對象,以便插入用ImageSpan對象封裝的圖像
SpannableString spannableString = new SpannableString("face");
// 用ImageSpan對象替換face
spannableString.setSpan(imageSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 將隨機獲得的圖像追加到EditText控件的最后
edittext.append(spannableString);
}
catch (Exception e)
{
}
}


編寫上面代碼需要注意如下幾點
1. 由于R.drawable中的資源ID都是public的靜態變量,因此,可直接使用Field.get方法獲得這些變量的值。如果是private或protected的變量,需要field.setAccessible(true)設置變量值的訪問權限才可以讀寫這些變量。
2. 使用Field.get方法獲得變量值時,如果是靜態變量。Field.get方法的參數值設為null即可。如果不是靜態變量,需要為Field.get方法指定一個變量所在類的對象作為參數值。
3. 由于EditText類不能直接插入Span對象,因此,需要先使用SpannableString對象來封裝Span對象(如本例中的ImageSpan對象),再將SpannableString對象插入到EditText控件中。

通過武林技術頻道小編介紹的Android實現QQ輸入文字和表情的方法,相信大家都有了一定的了解,如需了解更多的相關資訊,請繼續關注武林技術頻道吧!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万荣县| 白沙| 蓝山县| 丰原市| 湘潭县| 绥化市| 甘洛县| 安仁县| 曲靖市| 精河县| 沈阳市| 林州市| 共和县| 伊宁市| 潜江市| 黄平县| 曲阜市| 汨罗市| 西城区| 孟连| 沈丘县| 教育| 浦北县| 宁国市| 普兰县| 麦盖提县| 绥江县| 扎赉特旗| 沂南县| 靖江市| 仪征市| 巢湖市| 惠安县| 盐源县| 长海县| 兰考县| 吴桥县| 宣汉县| 西吉县| 宣汉县| 广昌县|