專利名稱:一種基于移動(dòng)終端的圖片顯示方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于移動(dòng)終端技術(shù)領(lǐng)域,尤其涉及一種基于移動(dòng)終端的圖片顯示方法及裝置。
背景技術(shù):
目前,在使用android系統(tǒng)的移動(dòng)終端(電視機(jī)、手機(jī)等)中,通過(guò)網(wǎng)格視圖 GridView控件來(lái)預(yù)覽圖片時(shí),由于現(xiàn)有的圖片顯示方法存在一些缺陷使得用戶體驗(yàn)感較差,例如,如果需要預(yù)覽的圖片太多,無(wú)法定位需要銷毀的圖片,就會(huì)導(dǎo)致內(nèi)存溢出;如果每張圖片都需要處理后(例如圖片裁剪,網(wǎng)絡(luò)取圖片)再顯示,若采用多線程加載方式,當(dāng)遇到cpu處理能力差,就會(huì)嚴(yán)重影響圖片的顯示速度;另外,使用其他異步方法加載并顯示圖片時(shí),不能夠使得圖片順序顯示,也導(dǎo)致用戶的體驗(yàn)效果差。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提供一種基于移動(dòng)終端的圖片顯示方法及裝置,旨在解決利用現(xiàn)有的圖片顯示方法在移動(dòng)終端中瀏覽圖片時(shí),圖片顯示速度慢,占用系統(tǒng)資源較多,導(dǎo)致用戶體驗(yàn)效果較差的問(wèn)題。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種基于移動(dòng)終端的圖片顯示方法,所述方法包括第一線程以及與所述第一線程并發(fā)執(zhí)行的第二線程,其中所述第一線程包括以下步驟Al 構(gòu)建并初始化用于存放所有的圖片信息的圖片列表、順序存放需要加載的圖片的ID的加載列表以及存放當(dāng)前頁(yè)需要顯示的圖片的ID的顯示列表并初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片;Bl 當(dāng)所述加載列表發(fā)生改變時(shí),更新所述加載列表與所述顯示列表,并顯示所述預(yù)設(shè)的背景圖片;以及所述第二線程包括以下步驟A2 當(dāng)所述加載列表不為空時(shí),獲取所述加載列表中的第一個(gè)ID以及所述圖片列表中所述ID對(duì)應(yīng)的圖片對(duì)象;B2 當(dāng)所述顯示列表中存在所述ID時(shí),更新所述當(dāng)前顯示的圖片為所述圖片對(duì)象;C2 刪除所述加載列表中的所述ID,更新所述加載列表;D2 返回執(zhí)行步驟A2,直至所述加載列表為空時(shí)停止。本發(fā)明實(shí)施例的另一目的在于提供一種基于移動(dòng)終端的圖片顯示裝置,所述裝置包括第一線程單元以及與所述第一線程單元并發(fā)執(zhí)行的第二線程單元,其中第一線程單元,用于構(gòu)建并初始化用于存放所有的圖片信息的圖片列表、順序存放需要加載的圖片的ID的加載列表以及存放當(dāng)前頁(yè)需要顯示的圖片的ID的顯示列表,并初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片,且當(dāng)所述加載列表發(fā)生改變時(shí),更新所述加載列表與所述顯示列表,并顯示所述預(yù)設(shè)的背景圖片;以及第二線程單元,用于當(dāng)判斷所述加載列表不為空時(shí),獲取所述加載列表中的第一個(gè)ID以及所述圖片列表中所述ID對(duì)應(yīng)的圖片對(duì)象,當(dāng)所述顯示列表中存在所述ID時(shí),更新所述當(dāng)前顯示的圖片為所述圖片對(duì)象,刪除所述加載列表中的所述ID,更新所述加載列表,返回繼續(xù)執(zhí)行獲取所述加載列表中的第一個(gè)ID的步驟,直至所述加載列表為空時(shí)停止。本發(fā)明實(shí)施例提出的基于移動(dòng)終端的圖片顯示方法能夠并發(fā)執(zhí)行第一線程及第二線程,通過(guò)利用該第一線程構(gòu)建并初始化用于存放所有的圖片信息的圖片列表、順序存放需要加載的圖片的ID的加載列表以及存放當(dāng)前頁(yè)需要顯示的圖片的ID的顯示列表,并初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片,且當(dāng)該加載列表發(fā)生改變時(shí),更新該加載列表與該顯示列表,利用該第二線程判斷當(dāng)該加載列表不為空時(shí),該顯示列表中存在該加載列表中的第一幅圖片的ID時(shí),更新該當(dāng)前顯示的圖片為該圖片列表中該ID對(duì)應(yīng)的圖片對(duì)象, 并刪除該加載列表中的該ID,進(jìn)而更新該加載列表;返回繼續(xù)執(zhí)行第二線程所包括的步驟,直至該加載列表為空,解決了利用現(xiàn)有的圖片顯示方法在移動(dòng)終端中瀏覽圖片時(shí),圖片顯示速度慢,占用系統(tǒng)資源較多,導(dǎo)致用戶體驗(yàn)效果較差的問(wèn)題,提高了圖片顯示速度,降低了系統(tǒng)資源的占用,達(dá)到了提升用戶體驗(yàn)效果的目的。
圖1是本發(fā)明第一實(shí)施例提供的基于移動(dòng)終端的圖片顯示方法的第一線程的實(shí)現(xiàn)流程圖;圖2是本發(fā)明第一實(shí)施例提供的基于移動(dòng)終端的圖片顯示方法的第二線程的實(shí)現(xiàn)流程圖;圖3是本發(fā)明第二實(shí)施例提供的基于移動(dòng)終端的圖片顯示方法的第一線程的實(shí)現(xiàn)流程圖;圖4是本發(fā)明第二實(shí)施例提供的基于移動(dòng)終端的圖片顯示方法的第二線程的實(shí)現(xiàn)流程圖;圖5是本發(fā)明第三實(shí)施例提供的基于移動(dòng)終端的圖片顯示裝置的結(jié)構(gòu)圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實(shí)施例通過(guò)并發(fā)執(zhí)行第一線程及第二線程的步驟,及時(shí)動(dòng)態(tài)更新加載列表與顯示列表,直至該加載列表為空時(shí)停止第二線程的執(zhí)行,使得在移動(dòng)終端中瀏覽圖片時(shí), 圖片顯示速度加快,占用系統(tǒng)資源較少,用戶體驗(yàn)效果得到提升。本發(fā)明實(shí)施例提供了一種基于移動(dòng)終端的圖片顯示方法,所述方法包括第一線程以及與所述第一線程并發(fā)執(zhí)行的第二線程,其中所述第一線程包括以下步驟Al 構(gòu)建并初始化用于存放所有的圖片信息的圖片列表、順序存放需要加載的圖片的ID的加載列表以及存放當(dāng)前頁(yè)需要顯示的圖片的ID的顯示列表,并初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片;Bl 當(dāng)所述加載列表發(fā)生改變時(shí),更新所述加載列表與所述顯示列表,并顯示所述預(yù)設(shè)的背景圖片;以及所述第二線程包括以下步驟A2 當(dāng)所述加載列表不為空時(shí),獲取所述加載列表中的第一個(gè)ID以及所述圖片列表中所述ID對(duì)應(yīng)的圖片對(duì)象;B2 當(dāng)所述顯示列表中存在所述ID時(shí),更新所述當(dāng)前顯示的圖片為所述圖片對(duì)象;C 2 刪除所述加載列表中的所述ID,更新所述加載列表;D2 返回執(zhí)行步驟A2,直至所述加載列表為空時(shí)停止。本發(fā)明實(shí)施例還提供了一種基于移動(dòng)終端的圖片顯示裝置,所述裝置包括第一線程單元以及與所述第一線程單元并發(fā)執(zhí)行的第二線程單元,其中第一線程單元,用于構(gòu)建并初始化用于存放所有的圖片信息的圖片列表、順序存放需要加載的圖片的ID的加載列表以及存放當(dāng)前頁(yè)需要顯示的圖片的ID的顯示列表,并初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片,且當(dāng)所述加載列表發(fā)生改變時(shí),更新所述加載列表與所述顯示列表,并顯示所述預(yù)設(shè)的背景圖片;以及第二線程單元,用于當(dāng)判斷所述加載列表不為空時(shí),獲取所述加載列表中的第一個(gè)ID以及所述圖片列表中所述ID對(duì)應(yīng)的圖片對(duì)象,當(dāng)所述顯示列表中存在所述ID時(shí),更新所述當(dāng)前顯示的圖片為所述圖片對(duì)象,刪除所述加載列表中的所述ID,更新所述加載列表,返回繼續(xù)執(zhí)行獲取所述加載列表中的第一個(gè)ID的步驟,直至所述加載列表為空時(shí)停止。本發(fā)明實(shí)施例通過(guò)并發(fā)執(zhí)行第一線程及第二線程,利用第一線程構(gòu)建初始化相關(guān)列表,并當(dāng)該加載列表的起始位置改變時(shí),動(dòng)態(tài)更新加載列表與顯示列表,第二線程根據(jù)同步更新的加載列表與顯示列表對(duì)該圖片進(jìn)行加載以及顯示,及時(shí)刪除已經(jīng)加載的圖片ID, 直至加載列表為空時(shí)停止第二線程的執(zhí)行,提高了圖片的顯示速度,減少了系統(tǒng)資源的占用,從而實(shí)現(xiàn)了提升用戶體驗(yàn)效果的目的。以下結(jié)合具體實(shí)施例對(duì)本發(fā)明的具體實(shí)現(xiàn)進(jìn)行詳細(xì)描述實(shí)施例一圖1、2示出了本發(fā)明第一實(shí)施例提供的基于移動(dòng)終端的圖片顯示方法的第一線程和第二線程的實(shí)現(xiàn)流程,詳述如下該基于移動(dòng)終端的圖片顯示方法包括第一線程以及與該第一線程并發(fā)執(zhí)行的第二線程,其中該第一線程包括以下步驟,如圖1所示在步驟SlOl中,構(gòu)建并初始化用于存放所有的圖片信息的圖片列表、順序存放需要加載的圖片的ID的加載列表以及存放當(dāng)前頁(yè)需要顯示的圖片的ID的顯示列表,并初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片。其中,該圖片信息包括所有圖片的ID,對(duì)應(yīng)的圖片路徑,圖片對(duì)象等,該ID用于標(biāo)識(shí)每一幅圖片,可以為圖片的序號(hào)、圖片名稱等,該圖片對(duì)象是指一個(gè)圖片實(shí)體,比如一幅jpg格式的圖片為一個(gè)圖片對(duì)象或者圖片實(shí)體。需要指出的是初始化時(shí),該圖片的ID與圖片路徑均存在,而圖片對(duì)象不存在,為空,且只有在后續(xù)步驟執(zhí)行過(guò)程中,當(dāng)獲取到需要顯示的圖片對(duì)象,將該圖片對(duì)象處理成所需要的圖片尺寸,以合理顯示后,才將該圖片對(duì)象填充到該圖片列表中的對(duì)應(yīng)位置處,避免了資源浪費(fèi)。具體地,該加載列表用來(lái)順序存放需要加載的在圖片列表中的圖片的ID,當(dāng)?shù)诙€程啟動(dòng)后,也即圖片加載子線程啟動(dòng)后,通過(guò)該加載列表中存放的ID,從該圖片列表中找到對(duì)應(yīng)的圖片信息,進(jìn)而獲取對(duì)應(yīng)的圖片對(duì)象,當(dāng)該圖片對(duì)象為空時(shí),則根據(jù)該圖片信息中的圖片ID、路徑等獲取該圖片對(duì)象。具體地,該顯示列表用來(lái)存放當(dāng)前頁(yè)需要顯示的圖片列表中的圖片的ID,該顯示列表可以用來(lái)判斷當(dāng)前圖片加載列表中的圖片是否需要加載或者顯示。在本發(fā)明實(shí)施例中,通過(guò)構(gòu)建數(shù)據(jù)結(jié)構(gòu)形式的列表和構(gòu)建方法,能夠?qū)υ搱D片列表、加載列表以及顯示列表進(jìn)行精確控制;由于在初始化時(shí),當(dāng)前顯示一般為空,用戶體驗(yàn)效果較差,通過(guò)初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片,而該預(yù)設(shè)的背景圖片可為空或者任意設(shè)置的圖片,能夠提升用戶體驗(yàn)效果。在步驟S102中,當(dāng)該加載列表發(fā)生改變時(shí),更新該加載列表與該顯示列表,并顯示該預(yù)設(shè)的背景圖片。其中,該加載列表發(fā)生改變?yōu)橐苿?dòng)終端屏幕的滾動(dòng)條通過(guò)快速按鍵或者觸摸的方式被拖動(dòng)或者滑動(dòng),或者當(dāng)前屏幕發(fā)生變換時(shí)而引起的變化。具體地,開(kāi)始時(shí),如果屏幕一頁(yè)顯示15幅圖片,那么當(dāng)前需要加載的圖片為圖片列表中的前15幅,這些圖片的ID在該加載列表中就會(huì)按照加載順序存放,例如ID號(hào)依次為0到14,若當(dāng)正在加載該加載列表中 ID為0的圖片時(shí),用戶滑動(dòng)了屏幕,此時(shí),該加載列表中ID順序變成0到19,幾秒鐘過(guò)后, ID為0的圖片加載完后,就會(huì)將其ID從該加載列表移除,此時(shí),該加載列表中ID就變成1 到19,且順序加載圖片可以提高用戶的體驗(yàn)效果,而且該加載列表的長(zhǎng)度也會(huì)根據(jù)圖片加載子線程,也即第二線程的加載進(jìn)度和上下滑動(dòng)屏幕減少和增加。在具體實(shí)施過(guò)程中,當(dāng)該加載列表的起始位置沒(méi)有發(fā)生改變時(shí),則刪除圖片列表中,在上頁(yè)顯示過(guò)并且本頁(yè)不顯示的圖片對(duì)象,從而及時(shí)獲取需要銷毀的圖片,以釋放內(nèi)存,減少內(nèi)存溢出的幾率,需要說(shuō)明的是該刪除的步驟可以利用現(xiàn)有的GridView控件實(shí)現(xiàn)自動(dòng)刪除,而不用終端來(lái)確認(rèn)是否刪除或者銷毀圖片,并刪除該該顯示列表與加載列表對(duì)應(yīng)圖片的ID,以進(jìn)一步更新該顯示列表與加載列表。該第二線程包括以下步驟,如圖2所示在步驟S201中,當(dāng)該加載列表不為空時(shí),獲取該加載列表中的第一個(gè)ID以及該圖片列表中該ID對(duì)應(yīng)的圖片對(duì)象。在具體實(shí)施過(guò)程中,在第二線程啟動(dòng)以后,需要判斷該加載列表是否為空,也可以判斷該加載列表的長(zhǎng)度是否為0,若該加載列表不為空,或者該長(zhǎng)度不為0,則執(zhí)行第二線程的步驟,獲取該加載列表中的第一個(gè)ID,否則,停止執(zhí)行第二線程,而此時(shí),只有該第一線程在執(zhí)行。該步驟S201還包括以下步驟當(dāng)該圖片列表中該ID對(duì)應(yīng)的圖片對(duì)象不存在時(shí),根據(jù)該ID對(duì)應(yīng)已存在的圖片信息獲取對(duì)應(yīng)的圖片對(duì)象;
將該圖片對(duì)象的尺寸處理成所需要的尺寸,保存處理后的該圖片對(duì)象至該圖片列表中對(duì)應(yīng)的位置處。具體地,在獲取該加載列表中的第一個(gè)ID后,也即需要加載第一幅圖片,因?yàn)樵摷虞d列表中的圖片ID是按順序加載排序的,在加載完一幅圖片時(shí),將會(huì)將該圖片對(duì)應(yīng)的ID 刪除,從而該圖片的下一幅圖片ID為第一幅圖片ID,為該加載列表中的第一個(gè)ID,進(jìn)行了該加載列表的動(dòng)態(tài)更新,因此在獲取加載的圖片ID過(guò)程中,只需要獲取該加載列表中的第一個(gè)ID即可實(shí)現(xiàn)順序加載,并進(jìn)一步實(shí)現(xiàn)順序顯示,提高了用戶體驗(yàn)。在步驟S202中,當(dāng)該顯示列表中存在該ID時(shí),更新該當(dāng)前顯示的圖片為該圖片對(duì)象。該步驟S202還包括當(dāng)該顯示列表中不存在該ID時(shí),直接刪除該加載列表中的該ID,更新該加載列表。在具體實(shí)施過(guò)程中,通過(guò)過(guò)濾的方式,只解析顯示列表中當(dāng)前需要顯示的圖片,同時(shí)替換掉該預(yù)設(shè)的背景圖片,當(dāng)該顯示列表中不存在加載圖片的ID時(shí),不再顯示該ID對(duì)應(yīng)的圖片對(duì)象,具體地,由于該第一線程與該第二線程并發(fā)執(zhí)行,當(dāng)移動(dòng)終端屏幕當(dāng)前狀態(tài)改變,實(shí)時(shí)更新該加載列表與顯示列表,此時(shí)進(jìn)行判斷該顯示列表中是否存在該ID,可以避免顯示列表變化而不存在對(duì)應(yīng)的ID時(shí),仍顯示對(duì)應(yīng)的圖片對(duì)象,導(dǎo)致資源使用過(guò)高,圖片顯示速度慢,以及按鍵無(wú)響應(yīng)情況的發(fā)生,有效地提示了圖片的顯示速度。在步驟S203中,刪除該加載列表中的該ID,更新該加載列表。在步驟S204中,返回繼續(xù)執(zhí)行該第二線程所包括的上述步驟,直至當(dāng)該加載列表為空時(shí)停止。具體地,在加載完一幅圖片時(shí),將會(huì)刪除該加載列表中的該ID,從而該圖片的下一幅圖片的ID為第一個(gè)ID,進(jìn)行了加載列表的動(dòng)態(tài)更新,實(shí)現(xiàn)了順序加載圖片的目的。加載完成后,該第二線程需要繼續(xù)加載其他圖片,則此時(shí)跳轉(zhuǎn)至步驟S201執(zhí)行,直至該加載列表為空時(shí),停止該第二線程的執(zhí)行。在本發(fā)明實(shí)施例中,由于該基于移動(dòng)終端的圖片顯示方法中圖片加載的方法為異步加載,則其包括的第一線程與第二線程是不分先后并發(fā)執(zhí)行,也即分別對(duì)應(yīng)主線程與圖片加載子線程,當(dāng)主線程中的加載列表和顯示列表改變時(shí),圖片加載子線程中加載和顯示的圖片也會(huì)動(dòng)態(tài)改變。且本發(fā)明實(shí)施例中沒(méi)有采用多線程方式,而是直接采用 HandlerThread的方式來(lái)控制單線程進(jìn)行圖片耗時(shí)處理的,因?yàn)閷?duì)于低端機(jī),多線程是很耗 cpu資源的,在圖片解碼和裁減這種工作量繁重的工作,不僅不能起到提高性能的作用,而且會(huì)降低性能。通過(guò)HandlerThread可用于方便的創(chuàng)建一個(gè)新線程,然后獲得一個(gè)looper, 以便指定后續(xù)的handler在新的線程里執(zhí)行,而不用自己再去寫(xiě)一個(gè)線程類,然后創(chuàng)建 looper等操作,所以避免了創(chuàng)建新線程的開(kāi)銷,提高了線程利用率,降低了系統(tǒng)資源的占用。實(shí)施例二 圖3示出了本發(fā)明第二實(shí)施例提供的基于移動(dòng)終端的圖片顯示方法的第一線程的實(shí)現(xiàn)流程,具體為該基于移動(dòng)終端的圖片顯示方法的第一線程的實(shí)現(xiàn)流程,該第一線程為主線程,且與該第二線程并發(fā)執(zhí)行,詳述如下
在步驟S301中,構(gòu)建并初始化圖片列表,加載列表及顯示列表。其中,該圖片列表用于存放所有的圖片信息,該圖片信息包括所有圖片的ID,對(duì)應(yīng)的圖片路徑,圖片對(duì)象等,該ID用于標(biāo)識(shí)每一幅圖片,可以為圖片的序號(hào)、圖片名稱等, 該圖片對(duì)象是指一個(gè)圖片實(shí)體,比如一幅jpg格式的圖片為一個(gè)圖片對(duì)象或者圖片實(shí)體。 需要指出的是初始化時(shí),該圖片的ID與圖片路徑均存在,而圖片對(duì)象不存在,為空,且只有在后續(xù)步驟執(zhí)行過(guò)程中,當(dāng)獲取到需要顯示的圖片對(duì)象,將該圖片對(duì)象處理成所需要的圖片尺寸,以合理顯示后,才將該圖片對(duì)象填充到該圖片列表中的對(duì)應(yīng)位置處,避免了資源浪費(fèi)。該加載列表用來(lái)順序存放需要加載的在圖片列表中的圖片的ID,當(dāng)?shù)诙€程啟動(dòng)后,也即圖片加載子線程啟動(dòng)后,通過(guò)該加載列表中存放的ID,從該圖片列表中找到對(duì)應(yīng)的圖片信息,進(jìn)而獲取對(duì)應(yīng)的圖片對(duì)象,當(dāng)該圖片對(duì)象為空時(shí),則根據(jù)該圖片信息中的圖片 ID、路徑等獲取該圖片對(duì)象。該顯示列表用來(lái)存放當(dāng)前頁(yè)需要顯示的圖片列表中的圖片的ID,該顯示列表可以用來(lái)判斷當(dāng)前圖片加載列表中的圖片是否需要加載或者顯示。在步驟S302中,顯示預(yù)設(shè)的背景圖片。具體地,由于在初始化時(shí),當(dāng)前屏幕顯示一般為空,用戶體驗(yàn)效果較差,通過(guò)初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片,而該預(yù)設(shè)的背景圖片可為任意設(shè)置的圖片,能夠提升用戶體驗(yàn)效果。在步驟S303中,判斷第二線程是否啟動(dòng),是則執(zhí)行步驟S304,否則執(zhí)行步驟S307。在步驟S304中,判斷該加載列表是否改變,是,則執(zhí)行步驟S305,否則執(zhí)行步驟 S306。在步驟S305中,更新該加載列表及顯示列表后,返回執(zhí)行步驟S302。在步驟S306中,刪除圖片列表中上頁(yè)顯示并且本頁(yè)不顯示的圖片對(duì)象。在步驟S307中,判斷該加載列表是否為空,是,則返回執(zhí)行步驟S304,否則執(zhí)行步驟S308,啟動(dòng)該第二線程。其中,該加載列表發(fā)生改變?yōu)橐苿?dòng)終端屏幕的滾動(dòng)條通過(guò)快速按鍵或者觸摸的方式被拖動(dòng)或者滑動(dòng),或者當(dāng)前屏幕發(fā)生變換時(shí)而引起的變化。在具體實(shí)施過(guò)程中,不管該第二線程是否啟動(dòng),只要該加載列表發(fā)生改變時(shí),則更新該加載列表以及顯示列表,若此時(shí)該第二線程已啟動(dòng),則該線程中所使用的加載列表以及顯示列表同步動(dòng)態(tài)更新;當(dāng)該加載列表的起始位置沒(méi)有變化時(shí),則刪除圖片列表中,在上頁(yè)顯示過(guò)并且本頁(yè)不顯示的圖片對(duì)象,從而及時(shí)獲取需要銷毀的圖片,以釋放內(nèi)存,減少內(nèi)存溢出的幾率,需要說(shuō)明的是該刪除的步驟可以利用現(xiàn)有的GridView控件實(shí)現(xiàn)自動(dòng)刪除, 而不用終端來(lái)確認(rèn)是否刪除或者銷毀圖片,并刪除該該顯示列表與加載列表對(duì)應(yīng)圖片的 ID,以進(jìn)一步更新該顯示列表與加載列表。另外,若該第二線程已啟動(dòng),則在執(zhí)行第二線程過(guò)程中,完成圖片的加載后,該加載列表為空,則停止執(zhí)行該第二線程,從而僅執(zhí)行該第一線程,此時(shí)根據(jù)判斷條件,可以得出應(yīng)轉(zhuǎn)至步驟S304處執(zhí)行。在本發(fā)明實(shí)施例中,通過(guò)構(gòu)建數(shù)據(jù)結(jié)構(gòu)形式的列表和構(gòu)建方法,能夠?qū)υ搱D片列表、加載列表以及顯示列表進(jìn)行精確控制;通過(guò)動(dòng)態(tài)更新該加載列表、顯示列表,使得圖片實(shí)行順序加載及順序顯示,能夠提升用戶效果;根據(jù)當(dāng)該加載列表的起始位置發(fā)生變化時(shí), 第二線程的顯示列表及加載列表也會(huì)同步動(dòng)態(tài)更新,以提高線程的利用率;根據(jù)當(dāng)該加載列表的起始位置沒(méi)有發(fā)生變化時(shí),否刪除圖片列表中,在上頁(yè)顯示過(guò)并且本頁(yè)不顯示的圖片對(duì)象,以及時(shí)獲取需要銷毀的圖片,以釋放內(nèi)存,減少內(nèi)存溢出的幾率。圖4示出了本發(fā)明第二實(shí)施例提供的基于移動(dòng)終端的圖片顯示方法的第二線程的實(shí)現(xiàn)流程,具體為該基于移動(dòng)終端的圖片顯示方法的第二線程的實(shí)現(xiàn)流程,該第二線程為圖片加載子線程,且與該第一線程并發(fā)執(zhí)行,詳述如下在步驟S401中,啟動(dòng)該第二線程。在步驟S402中,判斷該加載列表是否為空,否,則執(zhí)行步驟S404,是,則執(zhí)行步驟 S403,停止執(zhí)行該第二線程。在具體實(shí)施過(guò)程中,若第二線程已啟動(dòng),則在完成圖片的加載后,該加載列表為空,則停止執(zhí)行該第二線程,從而僅執(zhí)行該第一線程。在步驟S404中,獲取該加載列表中的第一個(gè)ID以及該圖片列表中該ID對(duì)應(yīng)的圖片對(duì)象。在步驟S405中,判斷該ID是否存在該顯示列表中,是,則跳轉(zhuǎn)至執(zhí)行步驟S408,否則執(zhí)行步驟S406。在步驟S406中,根據(jù)該ID對(duì)應(yīng)的已存在的圖片信息獲取對(duì)應(yīng)的圖片對(duì)象。在步驟S407中,將該圖片對(duì)象的尺寸處理成所需要的尺寸,保存處理后的該圖片對(duì)象至該圖片列表中對(duì)應(yīng)的位置處。具體地,在獲取該加載列表中的第一個(gè)ID后,也即需要加載第一幅圖片,因?yàn)樵摷虞d列表中的圖片ID是按順序加載排序的,在加載完一幅圖片時(shí),將會(huì)將該圖片對(duì)應(yīng)的ID 刪除,從而該圖片的下一幅圖片ID為第一幅圖片ID,為該加載列表中的第一個(gè)ID,進(jìn)行了該加載列表的動(dòng)態(tài)更新,因此在獲取加載的圖片ID過(guò)程中,只需要獲取該加載列表中的第一個(gè)ID即可實(shí)現(xiàn)順序加載,并進(jìn)一步實(shí)現(xiàn)順序顯示,提高了用戶體驗(yàn)。在獲取該加載列表中的第一個(gè)ID對(duì)應(yīng)的圖片對(duì)象時(shí),由于初始化等原因,當(dāng)該圖片列表中可能并未存儲(chǔ)該圖片對(duì)象,則根據(jù)該圖片列表中圖片的ID、圖片路徑等信息來(lái)獲取該圖片對(duì)象,對(duì)該圖片對(duì)象處理后,在保存至所述圖片列表中,從而不用初始化時(shí)就存儲(chǔ)所有圖片對(duì)象,節(jié)省了內(nèi)存資源。在步驟S408中,判斷該ID是否存在該顯示列表中,是,則執(zhí)行步驟S409,否,則執(zhí)行步驟S410。在具體實(shí)施過(guò)程中,當(dāng)該顯示列表中存在該ID時(shí),則顯示對(duì)應(yīng)的圖片對(duì)象,然而, 也可能在執(zhí)行判斷動(dòng)作之前的很短時(shí)間內(nèi),該顯示列表存在該ID,但是執(zhí)行該判斷步驟時(shí), 由于第一線程中該顯示列表變化使得該ID不存在,而由于該顯示列表的動(dòng)態(tài)同步更新,使得判斷結(jié)果為該ID不存在該顯示列表中,所以利用二個(gè)線程并發(fā)執(zhí)行,能夠有效地提高圖片或者其縮略圖的顯示速度。在步驟S409中,利用該圖片代替該預(yù)設(shè)的背景圖片顯示。在步驟S410中,刪除該加載列表中的該ID,更新該加載列表,并返回執(zhí)行步驟 S402。在具體實(shí)施過(guò)程中,通過(guò)過(guò)濾的方式,只解析顯示列表中當(dāng)前需要顯示的圖片,同時(shí)替換掉該預(yù)設(shè)的背景圖片,當(dāng)該顯示列表中不存在加載圖片的ID時(shí),不再顯示該ID對(duì)應(yīng)的圖片對(duì)象,具體地,由于該第一線程與該第二線程并發(fā)執(zhí)行,當(dāng)移動(dòng)終端屏幕當(dāng)前狀態(tài)改變,實(shí)時(shí)更新該加載列表與顯示列表,此時(shí)進(jìn)行判斷該顯示列表中是否存在該ID,可以避免顯示列表變化不存在對(duì)應(yīng)的ID時(shí),仍顯示對(duì)應(yīng)的圖片對(duì)象,導(dǎo)致資源使用過(guò)高,圖片顯示速度慢,以及按鍵無(wú)響應(yīng)情況的發(fā)生,有效地提示了圖片的顯示速度。且在加載完一幅圖片時(shí),將會(huì)刪除該加載列表中的該ID,從而該圖片的下一幅圖像的ID為第一個(gè)ID,進(jìn)行了加載列表的動(dòng)態(tài)更新,實(shí)現(xiàn)了順序加載圖片的目的,接著返回判斷該加載列表是否為空的步驟,重復(fù)執(zhí)行上述步驟,直至該加載為空,停止執(zhí)行該第二線程。在本發(fā)明實(shí)施例中,利用與第一線程并發(fā)執(zhí)行的該第二線程進(jìn)行圖片的加載與顯示,能夠有效地得對(duì)圖片進(jìn)行加載并顯示,提高圖片的顯示速度,提高線程利用率,減小了開(kāi)啟線程時(shí)的資源開(kāi)銷等。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中, 所述的存儲(chǔ)介質(zhì),如ROM/RAM、磁盤(pán)、光盤(pán)等。實(shí)施例三圖5示出了本發(fā)明第三實(shí)施例提供的基于移動(dòng)終端的圖片顯示裝置的結(jié)構(gòu),為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。該基于移動(dòng)終端的圖片顯示裝置包括第一線程單元51以及與該第一線程單元51 并發(fā)執(zhí)行的第二線程單元52,其中第一線程單元51用于構(gòu)建并初始化用于存放所有的圖片信息的圖片列表、順序存放需要加載的圖片的ID的加載列表以及存放當(dāng)前頁(yè)需要顯示的圖片的ID的顯示列表, 并初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片,且當(dāng)該加載列表發(fā)生改變時(shí),更新該加載列表與該顯示列表,并顯示該預(yù)設(shè)的背景圖片。其中,該圖片信息包括所有圖片的ID,對(duì)應(yīng)的圖片路徑,圖片對(duì)象等,該ID用于標(biāo)識(shí)每一幅圖片,可以為圖片的序號(hào)、圖片名稱等,該圖片對(duì)象是指一個(gè)圖片實(shí)體,比如一幅 jpg格式的圖片為一個(gè)圖片對(duì)象或者圖片實(shí)體。該預(yù)設(shè)的背景圖片為空或者任意設(shè)置的圖片。該加載列表發(fā)生改變?yōu)橐苿?dòng)終端屏幕的滾動(dòng)條通過(guò)快速按鍵或者觸摸的方式被拖動(dòng)或者滑動(dòng),或者當(dāng)前屏幕發(fā)生變換時(shí)而引起的變化。在本發(fā)明實(shí)施例中,通過(guò)構(gòu)建數(shù)據(jù)結(jié)構(gòu)形式的列表和構(gòu)建方法,能夠?qū)υ搱D片列表、加載列表以及顯示列表進(jìn)行精確控制;由于在初始化時(shí),當(dāng)前顯示一般為空,用戶體驗(yàn)效果較差,通過(guò)初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片,能夠提升用戶體驗(yàn)效果。該第一線程單元51還用于當(dāng)該加載列表的起始位置沒(méi)有發(fā)生改變時(shí),則刪除上頁(yè)顯示并且本頁(yè)不顯示的圖片。在本發(fā)明實(shí)施例中,當(dāng)該加載列表的起始位置沒(méi)有發(fā)生改變時(shí),則刪除圖片列表中,在上頁(yè)顯示過(guò)并且本頁(yè)不顯示的圖片對(duì)象,從而及時(shí)獲取需要銷毀的圖片,以釋放內(nèi)存,減少內(nèi)存溢出的幾率,需要說(shuō)明的是該刪除的步驟可以利用現(xiàn)有的GridView控件實(shí)現(xiàn)自動(dòng)刪除,而不用終端來(lái)確認(rèn)是否刪除或者銷毀圖片,并刪除該該顯示列表與加載列表對(duì)應(yīng)圖片的ID,以進(jìn)一步更新該顯示列表與加載列表。
第二線程單元52用于當(dāng)該加載列表不為空時(shí),獲取該加載列表中的第一幅個(gè)ID 以及該圖片列表中該ID對(duì)應(yīng)的圖片對(duì)象,且當(dāng)該顯示列表中存在該ID時(shí),更新該當(dāng)前顯示的圖片為該圖片對(duì)象,刪除該加載列表中的所述ID,更新該加載列表,返回繼續(xù)執(zhí)行獲取該加載列表中第一個(gè)ID的步驟,直至該加載列表為空時(shí)停止。該第二線程單元52還用于當(dāng)該圖片列表中該ID對(duì)應(yīng)的圖片對(duì)象不存在時(shí),根據(jù)該ID對(duì)應(yīng)已存在的圖片信息獲取對(duì)應(yīng)的圖片對(duì)象,并將該圖片對(duì)象的尺寸處理成所需要的尺寸,保存處理后的該圖片對(duì)象至該圖片列表中對(duì)應(yīng)的位置處。在本發(fā)明實(shí)施例中,在利用該第二線程單元52獲取該加載列表中的第一個(gè)ID對(duì)應(yīng)的圖片對(duì)象時(shí),由于初始化等原因,當(dāng)該圖片列表中可能并未存儲(chǔ)該圖片對(duì)象,則根據(jù)該圖片列表中圖片的ID、圖片路徑等信息來(lái)獲取該圖片對(duì)象,對(duì)該圖片對(duì)象處理后,在保存至所述圖片列表中,從而不用初始化時(shí)就存儲(chǔ)所有圖片對(duì)象,節(jié)省了內(nèi)存資源。該第二線程單元52還用于當(dāng)該顯示列表中不存在該ID時(shí),直接刪除該加載列表中的該ID,更新該加載列表。在本發(fā)明實(shí)施例中,通過(guò)過(guò)濾的方式,只解析顯示列表中當(dāng)前需要顯示的圖片,同時(shí)替換掉該預(yù)設(shè)的背景圖片,當(dāng)利用該第二線程單元52判斷該顯示列表中不存在加載圖片的ID時(shí),不再顯示該ID對(duì)應(yīng)的圖片對(duì)象,具體地,由于該第一線程與該第二線程并發(fā)執(zhí)行,當(dāng)移動(dòng)終端屏幕當(dāng)前狀態(tài)改變,實(shí)時(shí)更新該加載列表與顯示列表,此時(shí)進(jìn)行判斷該顯示列表中是否存在該ID,可以避免顯示列表變化不存在對(duì)應(yīng)的ID時(shí),仍顯示對(duì)應(yīng)的圖片對(duì)象,導(dǎo)致資源使用過(guò)高,圖片顯示速度慢,以及按鍵無(wú)響應(yīng)情況的發(fā)生,有效地提示了圖片的顯示速度。在本發(fā)明實(shí)施例中,利用包括第一線程單元51以及與該第一線程單元51并發(fā)執(zhí)行的第二線程單元52的基于移動(dòng)終端的圖片顯示裝置,提高了在移動(dòng)終端中瀏覽圖片時(shí), 圖片顯示速度慢,占用系統(tǒng)資源較多,導(dǎo)致用戶體驗(yàn)效果較差的問(wèn)題,提高了圖片顯示速度,降低了系統(tǒng)資源的占用,從而提升了用戶體驗(yàn)效果。本發(fā)明實(shí)施例提供了一種并發(fā)執(zhí)行第一線程及第二線程的基于移動(dòng)終端的圖片顯示方法,通過(guò)第一線程執(zhí)行當(dāng)加載列表發(fā)生改變時(shí),動(dòng)態(tài)更新該加載列表與顯示列表,第二線程執(zhí)行當(dāng)該加載列表不為空時(shí),獲取該加載列表中的第一個(gè)ID以及圖片列表中該ID 對(duì)應(yīng)的圖片對(duì)象,當(dāng)該顯示列表中存在該ID時(shí),更新該當(dāng)前顯示的圖片為該圖片對(duì)象,及時(shí)刪除該加載列表中的該ID,更新該加載列表,直至該加載列表為空時(shí)停止執(zhí)行第二線程, 解決了利用現(xiàn)有的圖片顯示方法在移動(dòng)終端中瀏覽圖片時(shí),圖片顯示速度慢,占用系統(tǒng)資源較多,導(dǎo)致用戶體驗(yàn)效果較差的問(wèn)題,提高了圖片顯示速度,降低了系統(tǒng)資源的占用,從而提升了用戶體驗(yàn)效果。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于移動(dòng)終端的圖片顯示方法,其特征在干,所述方法包括第一線程以及與所述第一線程并發(fā)執(zhí)行的第二線程,其中所述第一線程包括以下步驟Al 構(gòu)建并初始化用于存放所有的圖片信息的圖片列表、順序存放需要加載的圖片的 ID的加載列表以及存放當(dāng)前頁(yè)需要顯示的圖片的ID的顯示列表并初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片;Bl 當(dāng)所述加載列表發(fā)生改變時(shí),更新所述加載列表與所述顯示列表,并顯示所述預(yù)設(shè)的背景圖片;以及所述第二線程包括以下步驟A2 當(dāng)所述加載列表不為空時(shí),獲取所述加載列表中的第一個(gè)ID以及所述圖片列表中所述ID對(duì)應(yīng)的圖片對(duì)象;B2 當(dāng)所述顯示列表中存在所述ID吋,更新所述當(dāng)前顯示的圖片為所述圖片對(duì)象; C2 刪除所述加載列表中的所述ID,更新所述加載列表; D2 返回執(zhí)行步驟A2,直至所述加載列表為空時(shí)停止。
2.如權(quán)利要求1所述的方法,其特征在干,所述圖片信息包括圖片的ID,對(duì)應(yīng)的圖片路徑,圖片對(duì)象,且初始化吋,所述每一幅圖片的ID與圖片路徑均存在,而圖片對(duì)象不存在。
3.如權(quán)利要求1所述的方法,其特征在干,所述第一線程還包括以下步驟 當(dāng)所述加載列表沒(méi)有發(fā)生改變時(shí),則刪除上頁(yè)顯示并且本頁(yè)不顯示的圖片。
4.如權(quán)利要求1所述的方法,其特征在干,在所述步驟A2之后,步驟B2之前,所述第二線程還包括以下步驟當(dāng)所述圖片列表中所述ID對(duì)應(yīng)的圖片對(duì)象不存在吋,根據(jù)所述ID對(duì)應(yīng)已存在的圖片信息獲取對(duì)應(yīng)的圖片對(duì)象;將所述圖片對(duì)象的尺寸處理成所需要的尺寸,保存處理后的所述圖片對(duì)象至所述圖片列表中對(duì)應(yīng)的位置處。
5.如權(quán)利要求1所述的方法,其特征在干,所述第二線程還包括當(dāng)所述顯示列表中不存在所述ID吋,直接刪除所述加載列表中的所述ID,更新所述加載列表。
6.一種基于移動(dòng)終端的圖片顯示裝置,其特征在干,所述裝置包括第一線程單元以及與所述第一線程單元并發(fā)執(zhí)行的第二線程單元,其中第一線程單元,用于構(gòu)建并初始化用于存放所有的圖片信息的圖片列表、順序存放需要加載的圖片的ID的加載列表以及存放當(dāng)前頁(yè)需要顯示的圖片的ID的顯示列表,并初始化當(dāng)前顯示的圖片為預(yù)設(shè)的背景圖片,且當(dāng)所述加載列表發(fā)生改變時(shí),更新所述加載列表與所述顯示列表,并顯示所述預(yù)設(shè)的背景圖片;以及第二線程單元,用于當(dāng)判斷所述加載列表不為空時(shí),獲取所述加載列表中的第一個(gè)ID 以及所述圖片列表中所述ID對(duì)應(yīng)的圖片對(duì)象,當(dāng)所述顯示列表中存在所述ID吋,更新所述當(dāng)前顯示的圖片為所述圖片對(duì)象,刪除所述加載列表中的所述ID,更新所述加載列表,返回繼續(xù)執(zhí)行獲取所述加載列表中的第一個(gè)ID的步驟,直至所述加載列表為空時(shí)停止。
7.如權(quán)利要求6所述的裝置,其特征在干,所述預(yù)設(shè)的背景圖片為空或者任意圖片。
8.如權(quán)利要求6所述的裝置,其特征在干,所述第一線程單元還用于當(dāng)所述加載列表沒(méi)有發(fā)生改變時(shí),則刪除上頁(yè)顯示并且本頁(yè)不顯示的圖片。
9.如權(quán)利要求6所述的裝置,其特征在干,所述第二線程單元還用于當(dāng)所述圖片列表中所述ID對(duì)應(yīng)的圖片對(duì)象不存在吋,根據(jù)所述ID對(duì)應(yīng)已存在的圖片信息獲取對(duì)應(yīng)的圖片對(duì)象,并將所述圖片對(duì)象的尺寸處理成所需要的尺寸,保存處理后的所述圖片對(duì)象至所述圖片列表中對(duì)應(yīng)的位置處。
10.如權(quán)利要求6所述的裝置,其特征在干,所述第二線程單元還用于當(dāng)所述顯示列表中不存在所述ID吋,直接刪除所述加載列表中的所述ID,更新所述加載列表。
全文摘要
本發(fā)明適用于移動(dòng)終端技術(shù)領(lǐng)域,提供了一種基于移動(dòng)終端的圖片顯示方法及裝置,所述方法包括第一線程及與第一線程并發(fā)執(zhí)行的第二線程,該第一線程包括構(gòu)建并初始化圖片列表、加載列表及顯示列表,并顯示預(yù)設(shè)的背景圖片,當(dāng)該加載列表改變時(shí),更新該加載列表與該顯示列表;第二線程包括當(dāng)該加載列表不為空時(shí),獲取該加載列表中的第一個(gè)ID以及該圖片列表中該ID對(duì)應(yīng)的圖片對(duì)象,當(dāng)該顯示列表中存在該ID時(shí),更新該當(dāng)前顯示的圖片為該圖片對(duì)象,刪除該加載列表中的該ID,更新該加載列表,返回繼續(xù)獲取該加載列表中的第一個(gè)ID的步驟,直至該加載列表為空時(shí)停止,使得圖片的顯示速度提高,占用的系統(tǒng)資源減少,用戶體驗(yàn)效果提升。
文檔編號(hào)G06F9/44GK102541538SQ201110401619
公開(kāi)日2012年7月4日 申請(qǐng)日期2011年12月6日 優(yōu)先權(quán)日2011年12月6日
發(fā)明者李祥林 申請(qǐng)人:Tcl集團(tuán)股份有限公司