国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 系統 > Android > 正文

Android開發技巧之像QQ一樣輸入文字和表情圖像

2020-04-11 12:32:37
字體:
來源:轉載
供稿:網友
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,布局文件的代碼如下:
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText android:id="@+id/edittext" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:lines="3" android:gravity="left|top"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="隨機插入表情"
android:onClick="onClick_RandomFace" android:layout_marginTop="10dp" />
</LinearLayout>

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

<Button>標簽的android:onClick屬性值指定了單擊事件方法(onClick_RandomFace),在該方法中隨機獲得了face1.png至face9.png中任意一個圖像資源的ID。最常用的方法是將這9個圖像資源ID放到數組中,然后隨機產生一個數組索引來獲取相應的圖像資源ID。但本例未采用這種方法,而是采用了直接通過反射技術從R.drawable類中獲得圖像資源ID的方法。這種方法的好處是一但圖像資源非常多時,可以不需要在數組中挨個定義就可以獲得任意的圖像資源ID。

在5.2.2節使用了<img>標簽來插入圖像,雖然在EditText控件中插入圖像也可采用這種方法。但本例使用了另外一種更簡單的方法,就是使用android.text.style.ImageSpan類來直接插入圖像。下面來看看具體的實現代碼。
復制代碼 代碼如下:

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控件中。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产一级又黄| www.操.com| 狠狠狠狠狠狠操| 久久99亚洲网美利坚合众国| 亚洲精品自拍区在线观看| 一区二区精品区| 在线观看中文字幕一区| 亚洲大香人伊一本线| 青青草视频在线观看| 二区三区中文字幕| 精品全国在线一区二区| av在线天天| 成人午夜无人区一区二区| 久热国产视频| 91精品专区| 九九热在线视频| 国产精品久久在线| 青草视频在线播放| av免费在线一区二区三区| 国产剧情av在线| 在线视频观看亚洲| 1区2区视频| www.大网伊人| 中文一区在线观看| 国产无遮挡又黄又爽免费软件 | 大香伊人中文字幕精品| 久久综合精品视频| 亚洲视频日韩| 国产无遮挡又黄又爽免费网站| av网站在线播放| 国产区高清在线| 最近中文字幕在线中文视频| 牛牛热在线视频| 人成在线免费视频| 一本大道五月香蕉| 在线播放www| 伊人影院蕉久影院在线播放| 国产日产精品久久久久久婷婷| 久久精品免视着国产成人| 四虎久久影院| 午夜性爽视频男人的天堂| 国产精品乱码一区二区三区视频 | 中文天堂av| 国产在线高清理伦片a| 免费av不卡在线观看| 欧美性猛交p30| www.五月色.com| 激情综合丁香| 国产色在线观看| 国产91久久久久蜜臀青青天草二| 国产日本视频| 在线亚洲电影| 亚洲成人av高清| 精品福利影院| 精品美女调教视频| 亚洲欧洲成人| а√最新版在线天堂| 国产在线中文字幕| 国产日产精品久久久久久婷婷| 国产一区二区三区不卡免费观看| 国产精品伦一区二区三区视频| 精品999视频| 久久国产热视频| 最近中文字幕mv2018在线高清| 国产福利免费在线观看| www.九九热.com| 国产三级免费观看| 亚洲sss视频| baoyu777.永久免费视频| 国产尤物一区二区三区| 国产成在线观看免费视频| 午夜在线网站| 国产精品人人爱一区二区白浆| 亚洲精品在线播放视频| 国产在线高清| 一本大道香蕉8中文在线视频| 国产中文伊人| www.色婷婷| av免费在线一区二区三区| 国产免费a∨片在线观看不卡| 伊人狠狠av| 国产精品18久久久久久久久久| 奇米影视狠狠狠| 国产黄色网页| 最好2018中文免费视频| 久久av少妇| 欧美亚洲另类在线观看| 中文字幕2019第三页| 国产精品免费91| 国产一级黄色| 国产乱精品一区二区三区| 欧美成人精品福利网站| 天海翼中文字幕| 日韩国产成人| sm国产在线调教视频| 99热免费观看| 在线观看精品视频一区二区三区 | 国产精品外围在线观看| h网址在线观看| gogo在线高清视频| 青青草视频免费在线观看| av三级在线观看| 伊人精品影院| 精品视频在线一区二区| 91亚洲欧美| 亚洲色婷婷综合开心网| 在线免费看av| eeuss影影院www在线播放| 在线观看视频污| 国产成人午夜| 亚洲成a人v欧美综合天堂麻豆| 在线观看国产视频| 青青草中文字幕| 久精品在线观看| 国产偷激情在线| 国产h色视频在线观看| 精品视频一区二区观看| 天堂网中文在线| 五月婷婷导航| 一区二区三区四区在线免费视频| 亚洲人av在线| 国产毛片毛片| 一级二级在线观看| 九九久久久2| √天堂中文在线| av免费网站在线观看| 国产免费黄网站| 一本大道香蕉8中文在线视频| 啪啪免费视频一区| 国产国语**毛片高清视频| 亚洲日本久久久午夜精品| 丁香花视频在线观看| 国产成人夜间影院在线观看| 四虎网站在线观看| 国产一级在线观看www色| av中文资源在线| 国产福利片在线| 五月婷婷丁香激情| 久久国产精品黑丝| 伊人福利在线| 18av在线视频| 国产精品欧美韩国日本久久| 麻豆精品免费视频入口| 国产youjizz在线| 国产天堂av| 五月婷婷在线观看| 国产在线观看a视频| 先锋av资源网| 亚洲电影视频在线| 精品精品导航| 91麻豆精品国产91久久| 国产精品区一区二| 午夜国产视频| 国产亚洲精品自在线观看| 日本韩国精品一区二区| 亚洲天堂二区| 日本一二区视频| 四虎精品视频| www操操操| 日本一本久久| 蜜桃av在线免费观看| www.操操操.com| 欧美性xxxx交| 国产69久久| 最近中文av字幕在线中文| 成人欧美亚洲| 国产区在线看| 精品国产一区二区三区久久久狼牙 | 国产一级视频| 国产香蕉视频在线看| 国产精品入口麻豆免费观看| 国产精品探花在线| 国产经典av| 亚洲最新永久在线观看| 亚洲第一区视频| 黄色片视频在线观看| 国产麻豆免费| 91亚洲天堂| 青草视频在线播放| 国产三线在线| а√资源新版在线天堂| 麻豆视频在线观看免费网站| 久久五月精品中文字幕| 中文字幕日本在线观看| 中文av资源在线| 久草电影在线| 91在线高清| 国产农村一级特黄α**毛片 | 人人干人人插| 国产探花视频在线观看| 一区二区免费播放| 天天操天天操天天色天天要| 国产激情视频一区二区三区| 国产黄色大片在线观看| 不卡av免费观看| 国产极品视频| 午夜免费福利在线观看| 亚洲国产日韩成人综合天堂| 国产偷窥洗澡视频| 狠狠狠狠狠狠操|