這篇“Android中如何利用ListView實(shí)現(xiàn)平滑滾動(dòng)”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“Android中如何利用ListView實(shí)現(xiàn)平滑滾動(dòng)”文章吧。
十余年的鄂溫克網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷(xiāo)的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整鄂溫克建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“鄂溫克網(wǎng)站設(shè)計(jì)”,“鄂溫克網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
使用后臺(tái)線(xiàn)程
使用后臺(tái)線(xiàn)程(“工作線(xiàn)程”)可移除主線(xiàn)程中德壓力,以至于集中精力繪制UI。在很多案例中,利用 AsyncTask (異步任務(wù))可以提供一種在主線(xiàn)程之外執(zhí)行你的工作簡(jiǎn)單的方法。 AsyncTask自動(dòng)將所有_execute()) 請(qǐng)求排成隊(duì)列并按順序執(zhí)行他們。這種行為對(duì)一個(gè)特定進(jìn)程來(lái)說(shuō)是全局性的,這意味著你不必?fù)?dān)心創(chuàng)建自己的線(xiàn)程池。
下方所示的簡(jiǎn)單代碼中,利用AsyncTask 在后臺(tái)線(xiàn)程中加載圖像,然后一旦完成便應(yīng)用在UI中。也可以顯示一個(gè)進(jìn)度條來(lái)代替正在加載的圖像。
// 利用AsyncTask在后臺(tái)線(xiàn)程中加載緩慢的圖像 new AsyncTask() { private ViewHolder v; @Override protected Bitmap doInBackground(ViewHolder... params) { v = params[0]; return mFakeImageLoader.getImage(); } @Override protected void onPostExecute(Bitmap result) { super.onPostExecute(result); if (v.position == position) { // 如果該項(xiàng)還未被回收, 隱藏進(jìn)度條,設(shè)置并顯示圖像 v.progress.setVisibility(View.GONE); v.icon.setVisibility(View.VISIBLE); v.icon.setImageBitmap(result); } }}.execute(holder);
從Android3.0(API Level 11)起,在A(yíng)syncTask 中可以使用一項(xiàng)新的功能,你可以通過(guò)開(kāi)啟它來(lái)
在多處理器內(nèi)核間交叉運(yùn)行線(xiàn)程。除了調(diào)用** execute())**方法,你可以使用**executeOnExecutor())** 方法而同時(shí)執(zhí)行多個(gè)請(qǐng)求,而這取決于可用的核心數(shù)量。
你的代碼可能在滑動(dòng)ListView時(shí)頻繁地調(diào)用findViewById()),而這可使效果變慢。即使在A(yíng)dapter為了回收而返回一個(gè)已經(jīng)展現(xiàn)出來(lái)的視圖,你仍然需要查找這些元素并且更新他們。一個(gè)循環(huán)使用findViewById())的方法是使用“view holder”設(shè)計(jì)模式。
一個(gè)findViewById())對(duì)象存儲(chǔ)布局內(nèi)的每個(gè)組建視圖的標(biāo)記域,你可以立即訪(fǎng)問(wèn)而不需要反復(fù)的查詢(xún)他們。首先,你需要建立一個(gè)類(lèi)來(lái)保存具體的視圖。例如:
static class ViewHolder { TextView text; TextView timestamp; ImageView icon; ProgressBar progress; int position;}
然后填充findViewById()) 并且在布局中保存它。
ViewHolder holder = new ViewHolder(); holder.icon = (ImageView) convertView.findViewById(R.id.listitem_image); holder.text = (TextView) convertView.findViewById(R.id.listitem_text); holder.timestamp = (TextView) convertView.findViewById(R.id.listitem_timestamp); holder.progress = (ProgressBar) convertView.findViewById(R.id.progress_spinner); convertView.setTag(holder);
以上就是關(guān)于“Android中如何利用ListView實(shí)現(xiàn)平滑滾動(dòng)”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。