本發(fā)明涉及ListView的滑動事件優(yōu)化領(lǐng)域,特別是涉及一種安卓平臺上防止列表滑動卡頓的圖片加載方法。
背景技術(shù):
Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。目前,android系統(tǒng)已經(jīng)應(yīng)用在手機(jī)、平板電腦和機(jī)頂盒等各個領(lǐng)域。
在android開發(fā)中,幾乎每個應(yīng)用都會涉及到listview的開發(fā)。ListView是Android開發(fā)中非常常用的組件,ListView可以用來顯示一個列表,我們可以對這個列表操作,比如點(diǎn)擊列表要激發(fā)什么事件等等。
普通listview的開發(fā),包括布局文件,適配器和窗體。在listview的開發(fā)中,需要在窗體文件中引入適配器,然后寫程序來實現(xiàn)通過適配器將數(shù)據(jù)映射在listview的窗體文件中,然后在適配器的getView里面開發(fā)且使用ViewHolder模式,并且引入布局文件,適配器作為一個中介的接口,實現(xiàn)數(shù)據(jù)和窗體文件之間的連接。
在窗體文件內(nèi),只需要創(chuàng)建一個上述的適配器,并將窗體中Item(項目)的列表數(shù)值等信息傳送給適配器,通過適配器內(nèi)的調(diào)用函數(shù)將程序中設(shè)置的后臺數(shù)據(jù)調(diào)用至窗體中顯示或者運(yùn)行。
另外,一般的安卓平臺開發(fā)滑動列表所常用的方法是在適配器里使用ViewHolder,它能為listview在滾動的時候快速設(shè)置值,而不必每次都重新創(chuàng)建很多對象,從而提升性能;適配器在加載完ViewHolder后,就需要加載圖片,并顯示文字了,但是采用這種做法的結(jié)果是,在上下滑動列表時容易出現(xiàn)卡頓的現(xiàn)象,尤其是列表數(shù)據(jù)比較大,所需顯示的圖片比較多的時候(尤其當(dāng)圖片是網(wǎng)絡(luò)資源的時候),則上下滑動列表的時候,會有明顯的卡頓現(xiàn)象,用戶體驗非常不好。
技術(shù)實現(xiàn)要素:
本發(fā)明主要解決的技術(shù)問題是提供一種安卓平臺上防止列表滑動卡頓的圖片加載方法,通過在適配器的調(diào)用函數(shù)內(nèi)設(shè)置一個全局變量和相應(yīng)的賦值函數(shù),實現(xiàn)在窗體內(nèi)的Item(項目)在上下滑動停止時,適時的加載圖片、文字、控件等相應(yīng)的后臺數(shù)據(jù)信息,減免滑動時卡頓現(xiàn)象的發(fā)生。
為解決上述技術(shù)問題,本發(fā)明采用的一個技術(shù)方案是:提供一種安卓平臺上防止列表滑動卡頓的圖片加載方法,包括以下步驟:
S1、在Android手機(jī)端設(shè)置ListView的滑動事件監(jiān)聽器,所述滑動事件監(jiān)聽器在ListView滑動時觸發(fā);
S2、判斷是否觸發(fā)滑動事件,如果是,則將該滑動事件作為第一調(diào)用信息傳遞給適配器;
否則:記錄當(dāng)前可見Item(項目)中第一個Item(項目)的列表位置為第一項列表位置,
記錄當(dāng)前可見的Item(項目)的數(shù)量為可見數(shù)量,
將所述第一項列表位置和所述可見數(shù)量作為第二調(diào)用信息傳遞給適配器;
S3、適配器設(shè)置有調(diào)用函數(shù),調(diào)用函數(shù)通過接收的第一調(diào)用信息和第二調(diào)用信息加載相應(yīng)的后臺數(shù)據(jù),并在ListView中映射相應(yīng)的后臺數(shù)據(jù)。
優(yōu)選地,步驟S1中,所述滑動事件監(jiān)聽器在ListView滑動時觸發(fā)的設(shè)定為:
當(dāng)Item(項目)在其向上或向下滑動時,所述滑動事件監(jiān)聽器判斷觸發(fā)滑動事件為是;
當(dāng)Item(項目)不產(chǎn)生向上或向下滑動時,所述滑動事件監(jiān)聽器判斷觸發(fā)滑動事件為否。
優(yōu)選地,步驟S3中,在ListView上映射相應(yīng)的后臺數(shù)據(jù)包括:
當(dāng)所述滑動事件監(jiān)聽器判斷觸發(fā)滑動事件為是,適配器接收到第一調(diào)用信息,所述調(diào)用函數(shù)不加載后臺數(shù)據(jù);
當(dāng)所述滑動事件監(jiān)聽器判斷觸發(fā)滑動事件為否,適配器接收到第二調(diào)用信息,所述調(diào)用函數(shù)加載相應(yīng)的后臺數(shù)據(jù)。
優(yōu)選地,步驟S3中,所述調(diào)用函數(shù)設(shè)置有全局變量IsInit,所述全局變量IsInit的類型為布爾型,所述全局變量IsInit設(shè)置有賦值函數(shù)setIsInit,所述賦值函數(shù)setIsInit的參數(shù)類型為布爾型。
優(yōu)選地,所述賦值函數(shù)setIsInit的定義范圍包括:
當(dāng)適配器接收到第一調(diào)用信息時,所述賦值函數(shù)setIsInit返回真值,所述全局變量IsInit設(shè)置為不加載后臺數(shù)據(jù)的指令;
當(dāng)適配器接收到第二調(diào)用信息時,所述賦值函數(shù)setIsInit返回假值,所述全局變量IsInit設(shè)置為加載后臺數(shù)據(jù)的指令。
優(yōu)選地,步驟S3中,所述后臺數(shù)據(jù)包括被映射的字符串、圖片或者組件中的至少一種;所述后臺數(shù)據(jù)包括所述第一項列表位置、所述可見數(shù)量和觸發(fā)滑動事件所對應(yīng)的數(shù)據(jù)。
優(yōu)選地,所述調(diào)用函數(shù)包括安卓系統(tǒng)內(nèi)的view類函數(shù)。
優(yōu)選地,所述調(diào)用函數(shù)包括自定義的view函數(shù)。
優(yōu)選地,所述圖片包括本地圖片和網(wǎng)絡(luò)圖片。
本發(fā)明的有益效果是:本發(fā)明一種安卓平臺上防止列表滑動卡頓的圖片加載方法,通過在適配器的調(diào)用函數(shù)內(nèi)設(shè)置一個全局變量和相應(yīng)的賦值函數(shù),實現(xiàn)適配器根據(jù)傳遞的滑動狀態(tài)的判斷信息設(shè)置調(diào)用函數(shù),根據(jù)全局變量和相應(yīng)的賦值函數(shù)的值,設(shè)定調(diào)用函數(shù)的調(diào)用狀態(tài);在窗體內(nèi)的Item(項目)在上下滑動停止時,適時的加載圖片、文字、控件等相應(yīng)的后臺數(shù)據(jù)信息;上下滑動停止時停止加載圖片等相應(yīng)的后臺數(shù)據(jù)信息;減免在滑動時出現(xiàn)卡頓的現(xiàn)象。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖,其中:
圖1是本發(fā)明一種安卓平臺上防止列表滑動卡頓的圖片加載方法的一較佳實施例的流程圖。
具體實施方式
下面將對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅是本發(fā)明的一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護(hù)的范圍。
請參閱圖1,本發(fā)明實施例包括:
一種安卓平臺上防止列表滑動卡頓的圖片加載方法,包括以下步驟:
S1、在Android手機(jī)端設(shè)置ListView的滑動事件監(jiān)聽器,所述滑動事件監(jiān)聽器在ListView滑動時觸發(fā);
S2、判斷是否觸發(fā)滑動事件,如果是,則將該滑動事件作為第一調(diào)用信息傳遞給適配器;
否則:記錄當(dāng)前可見Item(項目)中第一個Item(項目)的列表位置為第一項列表位置,
記錄當(dāng)前可見的Item(項目)的數(shù)量為可見數(shù)量,
將所述第一項列表位置和所述可見數(shù)量作為第二調(diào)用信息傳遞給適配器;
S3、適配器設(shè)置有調(diào)用函數(shù),調(diào)用函數(shù)通過接收的第一調(diào)用信息和第二調(diào)用信息加載相應(yīng)的后臺數(shù)據(jù),并在ListView中映射相應(yīng)的后臺數(shù)據(jù)。
所述調(diào)用函數(shù)為適配器內(nèi)設(shè)且常用的類函數(shù),調(diào)用函數(shù)包括getview類函數(shù)。
步驟S1中,所述滑動事件監(jiān)聽器在ListView滑動時觸發(fā)的設(shè)定為:
當(dāng)Item(項目)在其向上或向下滑動時,所述滑動事件監(jiān)聽器判斷觸發(fā)滑動事件為是;
當(dāng)Item(項目)不產(chǎn)生向上或向下滑動時,所述滑動事件監(jiān)聽器判斷觸發(fā)滑動事件為否。
步驟S3中,在ListView上映射相應(yīng)的后臺數(shù)據(jù)包括:
當(dāng)所述滑動事件監(jiān)聽器判斷觸發(fā)滑動事件為是,適配器接收到第一調(diào)用信息,所述調(diào)用函數(shù)不加載后臺數(shù)據(jù);
當(dāng)所述滑動事件監(jiān)聽器判斷觸發(fā)滑動事件為否,適配器接收到第二調(diào)用信息,所述調(diào)用函數(shù)加載相應(yīng)的后臺數(shù)據(jù)。
步驟S3中,所述調(diào)用函數(shù)設(shè)置有全局變量IsInit,所述全局變量IsInit的類型為布爾型,所述全局變量IsInit設(shè)置有賦值函數(shù)setIsInit,所述賦值函數(shù)setIsInit的參數(shù)類型為布爾型。
所述賦值函數(shù)setIsInit的定義范圍包括:
當(dāng)適配器接收到第一調(diào)用信息時,所述賦值函數(shù)setIsInit返回真值,所述全局變量IsInit設(shè)置為不加載后臺數(shù)據(jù)的指令;
當(dāng)適配器接收到第二調(diào)用信息時,所述賦值函數(shù)setIsInit返回假值,所述全局變量IsInit設(shè)置為加載后臺數(shù)據(jù)的指令。
步驟S3中,所述后臺數(shù)據(jù)包括被映射的字符串、圖片或者組件中的至少一種;所述后臺數(shù)據(jù)包括所述第一項列表位置、所述可見數(shù)量和觸發(fā)滑動事件所對應(yīng)的數(shù)據(jù)。
所述調(diào)用函數(shù)包括安卓系統(tǒng)內(nèi)的view類函數(shù)。
所述調(diào)用函數(shù)包括自定義的view函數(shù)。
所述圖片包括本地圖片和網(wǎng)絡(luò)圖片。
具體實施例:
1、窗體內(nèi)的Item(項目)靜止時,或者窗體內(nèi)的Item(項目)不發(fā)生向上或向下的滑動事件時;
滑動事件監(jiān)聽器判斷觸發(fā)滑動事件為否,滑動事件監(jiān)聽器將該將該滑動事件作為第二調(diào)用信息傳遞給適配器;適配器中設(shè)置的調(diào)用函數(shù)根據(jù)第二調(diào)用信息調(diào)用相應(yīng)數(shù)據(jù):
調(diào)用函數(shù)設(shè)置有全局變量IsInit,所述全局變量IsInit設(shè)置有賦值函數(shù)setIsInit,賦值函數(shù)setIsInit根據(jù)第二調(diào)用信息的判斷所述賦值函數(shù)setIsInit返回假值,所述全局變量IsInit根據(jù)賦值函數(shù)setIsInit返回的假值,發(fā)布加載相應(yīng)后臺數(shù)據(jù)的指令;
因為窗體內(nèi)的Item(項目)靜止時,或者窗體內(nèi)的Item(項目)不發(fā)生向上或向下的滑動事件,加載后臺數(shù)據(jù)的范圍有限,不會出現(xiàn)手機(jī)內(nèi)存占用過大而出現(xiàn)的卡頓等現(xiàn)象。
2、當(dāng)手指上下滑動屏幕時,使得窗體內(nèi)的Item(項目)進(jìn)行向上或向下的滑動事件;
或者當(dāng)手指停止上下滑動,窗體內(nèi)的Item(項目)繼續(xù)進(jìn)行向上或向下的滑動事件;
滑動事件監(jiān)聽器判斷觸發(fā)滑動事件為是,滑動事件監(jiān)聽器將該將該滑動事件作為第一調(diào)用信息傳遞給適配器;適配器中設(shè)置的調(diào)用函數(shù)根據(jù)第一調(diào)用信息調(diào)用相應(yīng)數(shù)據(jù):
調(diào)用函數(shù)設(shè)置有全局變量IsInit,所述全局變量IsInit設(shè)置有賦值函數(shù)setIsInit,賦值函數(shù)setIsInit根據(jù)第一調(diào)用信息的判斷所述賦值函數(shù)setIsInit返回真值,所述全局變量IsInit根據(jù)賦值函數(shù)setIsInit返回的真值,發(fā)布不加載后臺數(shù)據(jù)的指令;
因為不加載后臺數(shù)據(jù),手機(jī)界面的滑動不會出現(xiàn)內(nèi)存占用過大而出現(xiàn)的滑動卡頓等現(xiàn)象。
本發(fā)明安卓平臺上防止列表滑動卡頓的圖片加載方法的有益效果是:
一、通過在適配器的調(diào)用函數(shù)內(nèi)設(shè)置一個全局變量和相應(yīng)的賦值函數(shù),實現(xiàn)適配器根據(jù)傳遞的滑動狀態(tài)的判斷信息設(shè)置調(diào)用函數(shù),根據(jù)全局變量和相應(yīng)的賦值函數(shù)的值,設(shè)定調(diào)用函數(shù)的調(diào)用狀態(tài);在窗體內(nèi)的Item(項目)在上下滑動停止時,適時的加載圖片、文字、控件等相應(yīng)的后臺數(shù)據(jù)信息;上下滑動停止時停止加載圖片等相應(yīng)的后臺數(shù)據(jù)信息;減免在滑動時出現(xiàn)卡頓的現(xiàn)象;
二、與普通的安卓平臺上防止列表滑動卡頓的圖片加載方法相比具有窗體內(nèi)滑動事件發(fā)生時,不加載圖片等后臺數(shù)據(jù)信息,減輕內(nèi)存或緩存的占用;在滑動事件停止時,適時的加載圖片、文字、控件等相應(yīng)的后臺數(shù)據(jù)信息,方便人們隨時查看窗體內(nèi)信息,并防止由傳統(tǒng)的安卓窗口在滑動時,由于加載的圖片等數(shù)據(jù)太大而造成的卡頓現(xiàn)象,是安卓窗體滑動時防止卡頓現(xiàn)象的一種優(yōu)化的適配器調(diào)用方法,適合推廣。
以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。