一種移動終端的列表數(shù)據(jù)的滑動顯示方法和裝置的制造方法
【專利摘要】本發(fā)明實施例提供了一種移動終端的列表數(shù)據(jù)的滑動顯示方法和裝置,該方法包括:在列表中顯示數(shù)據(jù)對象;當檢測到針對所述數(shù)據(jù)對象的列表滑動操作時,計算所述數(shù)據(jù)對象的滑動速度;根據(jù)所述滑動速度計算所述數(shù)據(jù)對象的滑動距離;當所述滑動速度大于預設的第一速度閾值時,根據(jù)所述滑動距離對所述數(shù)據(jù)對象進行刷新顯示。本發(fā)明實施例動態(tài)地調(diào)整了在滑動速度較高的情況下的刷新頻率,在一次刷新顯示時,移動該距離閾值的時間一般比傳統(tǒng)基于刷新頻率的一次刷新時間長,即動態(tài)調(diào)整之后的刷新頻率比設定的刷新頻率要小,可以減少重新繪制整個列表控件的界面的操作。
【專利說明】
一種移動終端的列表數(shù)據(jù)的滑動顯示方法和裝置
技術領域
[0001]本發(fā)明涉及計算機處理的技術領域,特別是涉及一種移動終端的列表數(shù)據(jù)的滑動顯示方法和一種移動終端的列表數(shù)據(jù)的滑動顯示裝置。
【背景技術】
[0002]隨著移動通信技術的發(fā)展,諸如手機、智能穿戴設備等智能設備越來越普及,給人們在的生活、學習、工作帶來了極大的便利。
[0003]在這些智能設備中,由于諸如通訊錄等數(shù)據(jù)比較繁多,經(jīng)常采用列表控件進行顯不O
[0004]由于數(shù)據(jù)繁多,為了對信息進行查詢,查找所需的信息,用戶經(jīng)常對列表控件顯示的數(shù)據(jù)進行滑動。
[0005]在滑動列表控件中信息的過程中,由于需要刷新顯示新的數(shù)據(jù),因此,需要頻繁地重新繪制整個列表控件的界面,CPU(Central Processing Uni t,中央處理器)、GPU(Graphic Processing Unit,圖形處理器)頻繁地處理界面的重新繪制,導致設備的性能開銷很大,滑動流暢度較差,尤其是在快速滑動過程中,性能開銷尤為明顯。
【發(fā)明內(nèi)容】
[0006]鑒于上述問題,為了解決上述列表控件刷新顯示數(shù)據(jù)性能開銷大的問題,本發(fā)明實施例提出了一種移動終端的列表數(shù)據(jù)的滑動顯示方法和相應的一種移動終端的列表數(shù)據(jù)的滑動顯示裝置。
[0007]為了解決上述問題,本發(fā)明實施例公開了一種移動終端的列表數(shù)據(jù)的滑動顯示方法,包括:
[0008]在列表中顯示數(shù)據(jù)對象;
[0009]當檢測到針對所述數(shù)據(jù)對象的列表滑動操作時,計算所述數(shù)據(jù)對象的滑動速度;
[0010]根據(jù)所述滑動速度計算所述數(shù)據(jù)對象的滑動距離;
[0011]當所述滑動速度大于預設的第一速度閾值時,根據(jù)所述滑動距離對所述數(shù)據(jù)對象進行刷新顯示。
[0012]優(yōu)選地,所述在列表中顯示數(shù)據(jù)對象的步驟包括:
[0013]查找數(shù)據(jù)對象;
[0014]在列表控件中加載所述數(shù)據(jù)對象;
[0015]顯示位于顯示區(qū)域的數(shù)據(jù)對象。
[0016]優(yōu)選地,所述列表滑動操作包括滑動手勢操作,所述滑動速度包括初始滑動速度;
[0017]所述計算所述數(shù)據(jù)對象的滑動速度的步驟包括:
[0018]檢測所述滑動手勢操作的手勢滑動時間和手勢滑動距離;
[0019]以所述手勢滑動距離與所述手勢滑動時間之間的比值,作為初始滑動速度。
[0020]優(yōu)選地,所述滑動速度包括初始滑動速度和目標滑動速度;[0021 ]所述計算所述數(shù)據(jù)對象的滑動速度的步驟包括:
[0022]對所述初始滑動速度進行衰減,獲得目標滑動速度。
[0023]優(yōu)選地,所述根據(jù)所述滑動距離對所述數(shù)據(jù)對象進行刷新顯示的步驟包括:
[0024]當所述滑動距離超過指定的距離閾值時,按照所述滑動距離移動所述數(shù)據(jù)對象;
[0025]顯示移動之后、位于顯示區(qū)域的數(shù)據(jù)對象。
[0026]優(yōu)選地,所述根據(jù)所述滑動距離對所述數(shù)據(jù)對象進行刷新顯示的步驟還包括:
[0027]查詢所述數(shù)據(jù)對象在顯示時的高度或寬度;
[0028]按照所述高度或寬度計算距離閾值。
[0029]優(yōu)選地,還包括:
[0030]當所述滑動速度小于預設的第二速度閾值時,根據(jù)預設的刷新速率對所述數(shù)據(jù)對象進行刷新顯示。
[0031]優(yōu)選地,所述根據(jù)預設的刷新速率對所述數(shù)據(jù)對象進行刷新顯示的步驟包括:
[0032]當距離上一次刷新顯示的時間超過指定的時間閾值時,按照所述滑動距離移動所述數(shù)據(jù)對象;
[0033]顯示移動之后、位于顯示區(qū)域的數(shù)據(jù)對象。
[0034]本發(fā)明實施例還公開了一種移動終端的列表數(shù)據(jù)的滑動顯示裝置,包括:
[0035]數(shù)據(jù)對象顯示模塊,用于在列表中顯示數(shù)據(jù)對象;
[0036]滑動速度計算模塊,用于當檢測到針對所述數(shù)據(jù)對象的列表滑動操作時,計算所述數(shù)據(jù)對象的滑動速度;
[0037]滑動距離計算模塊,用于根據(jù)所述滑動速度計算所述數(shù)據(jù)對象的滑動距離;
[0038]高速刷新顯示模塊,用于在述滑動速度大于預設的第一速度閾值時,根據(jù)所述滑動距離對所述數(shù)據(jù)對象進行刷新顯示。
[0039]優(yōu)選地,所述數(shù)據(jù)對象顯示模塊包括:
[0040]數(shù)據(jù)對象查找子模塊,用于查找數(shù)據(jù)對象;
[0041]數(shù)據(jù)對象加載子模塊,用于在列表控件中加載所述數(shù)據(jù)對象;
[0042]第一顯示子模塊,用于顯示位于顯示區(qū)域的數(shù)據(jù)對象。
[0043]優(yōu)選地,所述列表滑動操作包括滑動手勢操作,所述滑動速度包括初始滑動速度;
[0044]所述滑動速度計算模塊包括:
[0045]滑動手勢數(shù)據(jù)檢測子模塊,用于檢測所述滑動手勢操作的手勢滑動時間和手勢滑動距離;
[0046]初始滑動速度計算子模塊,用于以所述手勢滑動距離與所述手勢滑動時間之間的比值,作為初始滑動速度。
[0047]優(yōu)選地,所述滑動速度包括初始滑動速度和目標滑動速度;
[0048]所述滑動速度計算模塊包括:
[0049]目標滑動速度計算子模塊,用于對所述初始滑動速度進行衰減,獲得目標滑動速度。
[0050]優(yōu)選地,所述高速刷新顯示模塊包括:
[0051]第一移動子模塊,用于在所述滑動距離超過指定的距離閾值時,按照所述滑動距離移動所述數(shù)據(jù)對象;
[0052]第二顯示子模塊,用于顯示移動之后、位于顯示區(qū)域的數(shù)據(jù)對象。
[0053]優(yōu)選地,所述高速刷新顯示模塊還包括:
[0054]長寬查詢子模塊,用于查詢所述數(shù)據(jù)對象在顯示時的高度或寬度;
[0055]距離閾值計算子模塊,用于按照所述高度或寬度計算距離閾值。
[0056]優(yōu)選地,還包括:
[0057]低速刷新顯示模塊,用于在所述滑動速度小于預設的第二速度閾值時,根據(jù)預設的刷新速率對所述數(shù)據(jù)對象進行刷新顯示。
[0058]優(yōu)選地,所述低速刷新顯示模塊包括:
[0059]第二移動子模塊,用于在距離上一次刷新顯示的時間超過指定的時間閾值時,按照所述滑動距離移動所述數(shù)據(jù)對象;
[0060]第三顯示子模塊,用于顯示移動之后、位于顯示區(qū)域的數(shù)據(jù)對象。
[0061]本發(fā)明實施例包括以下優(yōu)點:
[0062]本發(fā)明實施例對刷新的流程進行修改,對滑動速度的大小進行檢測,若滑動速度大于預設的第一速度閾值,根據(jù)滑動距離對數(shù)據(jù)對象進行刷新顯示,動態(tài)地調(diào)整了在滑動速度較高的情況下的刷新頻率,在一次刷新顯示時,移動該距離閾值的時間一般比傳統(tǒng)基于刷新頻率的一次刷新時間長,即動態(tài)調(diào)整之后的刷新頻率比設定的刷新頻率要小,可以減少重新繪制整個列表控件的界面的操作,對于Andorid系統(tǒng)而言,可以減少對TextView進行測量(measure )、布局(layout )、繪制(draw)等操作頻次,減少設備的CPU、GPU等性能開銷。
【附圖說明】
[0063]圖1是本發(fā)明的一種移動終端的列表數(shù)據(jù)的滑動顯示方法實施例1的步驟流程圖;
[0064]圖2A-圖2C是本發(fā)明實施例的一種在列表控件顯示數(shù)據(jù)對象的示例圖;
[0065]圖3是本發(fā)明的一種移動終端的列表數(shù)據(jù)的滑動顯示方法實施例2的步驟流程圖;
[0066]圖4是本發(fā)明的一種移動終端的列表數(shù)據(jù)的滑動顯示裝置實施例1的結構框圖;
[0067]圖5是本發(fā)明的一種移動終端的列表數(shù)據(jù)的滑動顯示裝置實施例2的結構框圖。
【具體實施方式】
[0068]為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖和【具體實施方式】對本發(fā)明作進一步詳細的說明。
[0069]參照圖1,示出了本發(fā)明的一種列移動終端的表數(shù)據(jù)的滑動顯示方法實施例1的步驟流程圖,具體可以包括如下步驟:
[0070]步驟101,在列表中顯示數(shù)據(jù)對象;
[0071]需要說明的是,本發(fā)明實施例可以應用具有顯示屏的電子設備中,可以包括手機、平板電腦、個人數(shù)字助理、穿戴設備(如眼鏡、手表等)等移動終端,也可以包括電視、個人電腦等固定設備。
[0072]這些電子設備的操作系統(tǒng)可以包括Android(安卓)、10S、Windows Phone、Windows等等。
[0073]為使本領域技術人員更好地理解本發(fā)明實施例,在本說明書中,將Android作為操作系統(tǒng)的一種示例進行說明。
[0074]在本發(fā)明實施例中,可以以列表的形式顯示數(shù)據(jù)對象。
[0075]在本發(fā)明的一個實施例中,步驟101可以包括如下子步驟:
[0076]子步驟SII,查找數(shù)據(jù)對象;
[0077]在本發(fā)明實施例中,數(shù)據(jù)對象可以指一個或多個數(shù)據(jù)的集合,具體可以是文本信息,也可以是圖像信息,還可以是控件(如按鍵button)等等,本發(fā)明實施例對此不加以限制。
[0078]此外,數(shù)據(jù)對象,可以是從電子設備本地提取的,例如,讀取通訊錄中的聯(lián)系人數(shù)據(jù)、通話記錄,讀取數(shù)據(jù)庫中存儲的歌曲數(shù)據(jù)等等,也可以是向服務器請求的,例如,從服務器請求某個餐館的餐單數(shù)據(jù),向服務器請求郵件數(shù)據(jù)等等,本發(fā)明實施例對此也不加以限制。
[0079 ]子步驟S12,在列表控件中加載所述數(shù)據(jù)對象;
[0080 ]列表控件,指以列表形式加載信息的控件,例如,在Andro i d系統(tǒng)中,該列表控件為ListView0
[0081 ] ListView控件作為一個可以顯示圖標或者子項的列表控件,View屬性是其重要屬性之一,該屬性決定了以哪種視圖模式顯示控件的項,這四種視圖模式分別如下:
[0082 ] 1、Lar 11 con:大圖標視圖模式,在項的文本旁顯示大的圖標,在控件寬度足夠的情況下,項是如圖1中的盤符一樣優(yōu)先以平行排列的,排列不完的則自動換行顯示在新行中。
[0083 ] 2、Sma 111 con:小圖標視圖模式,與大圖標模式一樣,但是顯示的是小的圖標。
[0084]3,List:列表視圖模式,顯示小圖標,項一般單列、垂直排列的。
[0085]4、Detai Is:詳細資料視圖模式,是最豐富的選項,可以允許查看項,還允許查看為各項指定的任何子項。
[0086]各項在網(wǎng)格中顯示,它們垂直排列且其子項會顯示在列中(帶有列標頭)。
[0087]子步驟S13,顯示位于顯示區(qū)域的數(shù)據(jù)對象。
[0088]在本發(fā)明實施例中,顯示區(qū)域可以指在顯示屏進行顯示的區(qū)域,該區(qū)域可以為與屏幕大小相等,也可以為小于屏幕大小。
[0089]由于顯示區(qū)域的面積有限,一般不能一次性顯示所有的數(shù)據(jù)對象,因此,通常顯示一部分數(shù)據(jù)對象,另一部分數(shù)據(jù)對象可能已加載,在滑動時進行顯示。
[°09°] 例如,如圖2A所示,在列表控件(如Li s tVi ew)中加載了六個數(shù)據(jù)對象(Ob ject,01^),分別為01^1、01^2、01^3、01^4、01^5和01^6,黑色框部分為顯示區(qū)域,顯示Ob j 1、01^2、01^3和01^4,未顯示01^5和01^6。
[0091 ] 在Android系統(tǒng)中,ListView里面的每個子項Item可以是一個字符串,也可以是一個組合控件。
[0092]在實現(xiàn)時,使用一維或多維動態(tài)數(shù)組保存ListView要顯示的數(shù)據(jù)對象。
[0093]同時構建適配器,簡單地來說,適配器就是Item數(shù)組,動態(tài)數(shù)組與Item數(shù)組是一一對應的關系,動態(tài)數(shù)組有多少元素就生成多少個Item。
[0094]把適配器添加到ListView,并顯示出來。
[°°95] 對界面進行顯示的過程,以Android系統(tǒng)為例,實際上是從最外層的ViewGroup開始,針對每個V i ew進行遍歷測量(measure)、布局(lay out)、繪制(draw)的過程。
[0096]其中,測量(measure)主要用來決定控件View的大小,整個View樹計算實際的大小,即設置實際的高(對應屬性:mMeasuredHe ight)和寬(對應屬性:mMeasureffidth),每個View的控件的實際寬高都是由父視圖和本身視圖決定的。
[0097]具體的調(diào)用鏈如下:
[0098]ViewRoot根對象地屬性mView(其類型一般為ViewGroup類型)調(diào)用measure ()方法去計算View樹的大小,回調(diào)View/ViewGroup對象的onMeasure()方法,該方法實現(xiàn)的功能如下:
[0099]1、設置本\^6¥視圖的最終大小,該功能的實現(xiàn)通過調(diào)用86丨1638虹6(10;[1116118;[011()方法去設置實際的高(對應屬性:mMeasuredHeight)和寬(對應屬性:mMeasureffidth);
[0100]2、如果該View對象是個ViewGroup類型,需要重寫該onMeasure O方法,對其子視圖進行遍歷的measure ()過程。
[0101 ] 2.1對每個子視圖的measure ()過程,是通過調(diào)用父類ViewGroup.java類里的measureChi IdWithMargins O方法去實現(xiàn),由于measureChi IdWithMargins O 方法只是一個過渡層更簡單的做法是直接調(diào)用View對象的measureO方法,因此,該方法內(nèi)部只是簡單地調(diào)用了 View對象的measure O方法。
[0102]布局(layout)主要確定控件View的位置,將整個根據(jù)子視圖的大小以及布局參數(shù)將View樹放到合適的位置上。
[0103]具體的調(diào)用鏈如下:
[0104]host.layout ()開始V i ew樹的布局,繼而回調(diào)給 V i ew/Vi ewGr oup 類中的 I ay out ()方法。具體流程如下:
[0?05] 1、layout方法會設置該View視圖位于父視圖的坐標軸,即mLeft,mTop,mLeft,mBottom(調(diào)用setFrameO函數(shù)去實現(xiàn));
[0?0?] 接下來回調(diào)onLayout O方法(如果該View是ViewGroup對象,需要實現(xiàn)該方法,對每個子視圖進行布局)。
[0?07] 2、如果該View是個ViewGroup類型,需要遍歷每個子視圖childView,調(diào)用該子視圖的layout ()方法去設置它的坐標值。
[0108]繪制(draw)主要決定控件View的顯示。
[0109]由ViewRoot對象的performTraversals()方法調(diào)用draw()方法發(fā)起繪制該View樹,值得注意的是每次發(fā)起繪圖時,并不會重新繪制每個View樹的視圖,而重新繪制那些“需要重繪”的視圖,View類內(nèi)部變量包含了一個標志位DRAWN,當該視圖需要重繪時,就會為該V i e w添加該標志位。
[0110]調(diào)用流程如下:
[0?11 ] mView.draw()開始繪Φ1」,draw()方法實現(xiàn)的功能如下:
[ΟΙ12] 1、繪制該View的背景;
[0113]2、為顯示漸變框做一些準備操作;
[0114]3、調(diào)用onDrawO方法繪制視圖本身(每個View都需要重載該方法,ViewGroup不需要實現(xiàn)該方法);
[0115]4、調(diào)用dispatchDraw()方法繪制子視圖(如果該View類型不為ViewGroup,即不包含子視圖,不需要重載該方法);
[0116]需要說明的是,ViewGroup類已經(jīng)為重寫了 dispatchDrawO的功能實現(xiàn),應用程序一般不需要重寫該方法,但可以重載父類函數(shù)實現(xiàn)具體的功能。
[ΟΙ17] 4.1dispatchDrawO方法內(nèi)部會遍歷每個子視圖,調(diào)用drawChildO去重新回調(diào)每個子視圖的drawO方法(注意,這個地方“需要重繪”的視圖才會調(diào)用drawO方法)。
[ΟΙ18] 需要說明的是,ViewGroup類已經(jīng)重寫了dispatchDraw()的功能實現(xiàn),應用程序一般不需要重寫該方法,但可以重載父類函數(shù)實現(xiàn)具體的功能。
[0119]5、繪制滾動條。
[0120]如圖2B所示,若讀取通話記錄作為數(shù)據(jù)對象,則可以以列表的方式進行展示,如電話號碼、電話號碼所屬地、通話時間、通話時長等等。
[0121]步驟102,當檢測到針對所述數(shù)據(jù)對象的列表滑動操作時,計算所述數(shù)據(jù)對象的滑動速度;
[0122]在本發(fā)明實施例中,列表滑動操作,可以用于指示對列表控件中加載的數(shù)據(jù)對象進行滑動,以顯示其他數(shù)據(jù)對象。
[0123]在一個示例中,該列表滑動操作包括滑動手勢操作,即用戶在顯示屏等觸摸裝置中進行滑動,按照滑動的方向移動列表控件中加載的數(shù)據(jù)對象。
[0124]在另一個示例中,該列表滑動操作包括設備傾斜操作,即用戶傾斜電子設備,按照傾斜的方向移動列表控件中加載的數(shù)據(jù)對象。
[0125]在另一個示例中,該列表滑動操作包括按鍵操作,即用戶按下電子設備的按鍵,如音量鍵,按照預先約定的、按鍵與滑動方向的映射關系,移動列表控件中加載的數(shù)據(jù)對象。
[0126]當然,上述列表滑動操作只是作為示例,在實施本發(fā)明實施例時,可以根據(jù)實際情況設置其他列表滑動操作,本發(fā)明實施例對此不加以限制。另外,除了上述列表滑動操作夕卜,本領域技術人員還可以根據(jù)實際需要采用其它列表滑動操作,本發(fā)明實施例對此也不加以限制。
[0127]若檢測到列表滑動操作,則可以按照列表滑動操作對數(shù)據(jù)對象配置滑動速度,SP沿某一方向(如顯示屏的Y軸)進行移動的速度。
[0128]在具體實現(xiàn)中,該滑動速度可以包括初始滑動速度和目標滑動速度;
[0129]其中,初始滑動速度可以為按照列表滑動操作的屬性所賦予的速度;
[0130]目標滑動速度可以為對初始滑動速度進行處理之后的速度。
[0131]以滑動手勢操作作為列表滑動操作的一個示例,可以檢測滑動手勢操作的手勢滑動時間和手勢滑動距離;以手勢滑動距離與手勢滑動時間之間的比值,作為初始滑動速度。
[0132]在本發(fā)明實施例中,手勢滑動時間可以指滑動手勢操作所持續(xù)的時間;
[0133]手勢滑動距離可以指滑動手勢操作中手勢軌跡的距離,可以是總的距離,也可以是在某個方向(如顯示屏的Y軸)的距離,本發(fā)明實施例對此不加以限制。
[0134]以在觸摸屏上進行滑動手勢操作為例,觸摸屏通常由觸摸檢測部件和觸摸屏控制器組成,觸摸檢測部件安裝在顯示器屏幕前面,觸摸檢測部件可以檢測用戶的滑動手勢操作所觸發(fā)的觸摸事件,接收后傳送給觸摸屏控制器。
[0135]其中,觸摸事件可以包括如下的一種或多種;
[0136]按下事件(Down),表示在觸摸屏按下未移動、未抬起;
[0137]移動事件(Move),表示在觸摸屏按下后開始移動(或滑行);
[0138]抬起事件(Up),表示在觸摸屏抬起。
[0139]而觸摸屏控制器可以將該觸摸信號轉換成軌跡點坐標(例如直角坐標系,S卩X坐標和Y坐標)。
[0140]手勢滑動時間為按下事件(Down)的時間與抬起事件(Up)的時間之間的時間差,手勢滑動距離可以為一系列軌跡點坐標所組成的軌跡的距離,也可以為按下事件(Down)的軌跡點坐標與抬起事件(Up)的軌跡點坐標之間在某個方向(如顯示屏的Y軸)的距離。
[OH1]假設,用戶手指按下(Down)的時間為ti,手指抬起(Up)的時間為t2,按下(Down)與抬起(Up)之間的距離為S,則初始滑動速度VQ為:
[0142]vo = s/ (t2~ti)
[0143]當然,上述初始滑動速度的計算方式只是作為示例,在實施本發(fā)明實施例時,可以根據(jù)實際情況設置其他初始滑動速度的計算方式,例如,對于設備傾斜操作,按照傾斜角度計算初始滑動速度,對于按鍵操作,若是單擊,則可以直接賦予默認的、較低的初始滑動速度,若是長按,則可以直接賦予默認的、較高的初始滑動速度,等等,本發(fā)明實施例對此不加以限制。另外,除了上述初始滑動速度的計算方式外,本領域技術人員還可以根據(jù)實際需要采用其它初始滑動速度的計算方式,本發(fā)明實施例對此也不加以限制。
[0144]列表控件(如ListView)加載的數(shù)據(jù)對象在滑動過程中,模擬阻尼運動,對初始滑動速度進行衰減,獲得目標滑動速度。
[0145]阻尼運動,可以指在滑動過程中受到阻力的作用,滑動速度逐漸減小,直至滑動停止。
[0146]假設在阻尼運動中,加速度為a,經(jīng)過滑動時間Δt,那么,目標滑動速度Vt為:
[0147]vt = vo-a* Δ t
[0148]需要說明的是,當前的目標滑動速度Vt未衰減至0,即滑動未停止,若此時檢測到列表滑動操作,該列表滑動操作賦予的初始滑動速度為vo’,一種情況中,最終的初始滑動速度V??梢院雎阅繕嘶瑒铀俣葀t,即VQ=VQ’,另一種情況中,最終的初始滑動速度VO可以疊加目標滑動速度Vt,即VQ=VQ ’ +V t,本發(fā)明實施例對此不加以限制。
[0149]步驟103,根據(jù)所述滑動速度計算所述數(shù)據(jù)對象的滑動距離;
[0150]在本發(fā)明實施例中,由于數(shù)據(jù)對象可能采用不同的滑動方式,如阻尼運動、勻速運動等,因此,可以按照該滑動方式計算數(shù)據(jù)對象的滑動距離。
[0151]以阻尼運動為例,可以通過如下公式計算滑動距離s:
[0152]s = vot-l/2at2
[0153]或者,
[0154]s = l/2(vo+vt)
[0155]其中,VO為初始滑動速度,目標滑動速度Vt,a為加速度,t為滑動時間。
[0156]步驟104,當所述滑動速度大于預設的第一速度閾值時,根據(jù)所述滑動距離對所述數(shù)據(jù)對象進行刷新顯示。
[0157]應用本發(fā)明實施例,可以預先設置表征速度較大的第一速度閾值。
[0158]在列表滑動操作所賦值的初始滑動速度等情況下,數(shù)據(jù)對象的滑動速度可能大于該第一速度閾值,則表示該數(shù)據(jù)對象的滑動速度較大,則可以基于滑動距離對數(shù)據(jù)對象進行刷新顯示。
[0159]在具體實現(xiàn)中,當滑動距離超過指定的距離閾值時,按照滑動距離移動數(shù)據(jù)對象,顯示移動之后、位于顯示區(qū)域的數(shù)據(jù)對象。
[Ο??Ο] 例如,如圖2C所示,在列表控件(如ListView)中加載了六個數(shù)據(jù)對象(Ob ject,01^),分別為01^1、01^2、01^3、01^4、01^5和01^6,黑色框部分為顯示區(qū)域,向上滑動,在滑動距離超過一定的距離閾值時,Objl部分移出顯示區(qū)域,0bj5部分移入顯示區(qū)域,即同時顯示 01^1、01^2、01^3、01^4和01^5,未顯示01^6。
[0161]由于在滑動距離大于或等于一個給定的距離閾值時,觸發(fā)一次刷新操作。
[0162]可以看到,第一速度閾值越大,到達距離閾值的時間越短,刷新就會越頻繁,第一速度閾值越小,到達距離閾值的時間越長,刷新就會越稀松,刷新頻繁導致CPU、GPU等系統(tǒng)資源負載大,刷新稀松導致界面滑動不流暢。
[0163]因此,第一速度閾值一般小于距離閾值除以刷新時間(如刷新頻率60fPs的刷新時間為16ms)所獲得的值,并且,其可以保證用戶的滑動操作體驗。
[0164]在本發(fā)明實施例的一個示例中,可以查詢數(shù)據(jù)對象在顯示時的高度或寬度,按照該高度或寬度計算距離閾值,例如,高度或寬度與距離閾值成正比。
[0165]一般ListView中每個Obj都是具有相同的高度或寬度,每個Obj包含相同的子布局元素,比如IistView中每個Item的分割線等在這種情況下,Obj的高度或寬度與距離閾值相等,在滑動過程中,保證上下/左右兩個Item在滑動中發(fā)生重合的時候,進行刷新,由于用戶界面刷新的時候改變的部分最小化,對用戶視覺沖擊小,可以從視覺體驗上提升滑動流暢性。
[0166]例如,向上滑動進行刷新時,下一個Item移動到上一個Item的位置,Item中相同的元素位置剛好重疊,這時進行刷新操作對用戶來說界面變動有何,向上滑動的視覺體驗較好。
[0167]又例如,向下滑動進行刷新時,上一個Item移動到下一個Item的位置,Item中相同的元素位置剛好重疊,這時進行刷新操作對用戶來說界面變動有何,向下滑動的視覺體驗較好。
[0168]本發(fā)明實施例依據(jù)數(shù)據(jù)對象在顯示時的高度或寬度計算距離閾值,使得在刷新時減少用戶界面改變的部分的數(shù)量,減少對用戶視覺的沖擊,提高了滑動的流暢性。
[0169]其中,在Android系統(tǒng)中,可以通過讀取layout_height參數(shù)識別高度,讀取layout_width參數(shù)識別寬度。
[0170]若數(shù)據(jù)對象沿顯示屏Y軸方向滑動,則可以依據(jù)數(shù)據(jù)對象在顯示時的高度計算距離閾值。
[0171]若數(shù)據(jù)對象沿顯示屏X軸方向滑動,則可以依據(jù)數(shù)據(jù)對象在顯示時的寬度計算距離閾值。
[0172]本發(fā)明實施例在列表控件中顯示數(shù)據(jù)對象,當檢測到針對數(shù)據(jù)對象的列表滑動操作時,計算數(shù)據(jù)對象的滑動速度,并根據(jù)滑動速度計算數(shù)據(jù)對象的滑動距離。
[0173]傳統(tǒng)的方式依然是按照一定的刷新頻率進行刷新顯示。
[0174]刷新頻率一般為60fps,也就是每間隔16ms刷新顯示數(shù)據(jù)對象改變位置后的界面,需要繁地重新繪制整個列表控件的界面。
[0175]對于Android系統(tǒng)而言,需要頻繁地對TextView進行測量(measure )、布局(layout)、繪制(draw)等操作,導致設備的CPU、GPU等性能開銷很大。
[0176]本發(fā)明實施例對刷新的流程進行修改,對滑動速度的大小進行檢測,若滑動速度大于預設的第一速度閾值,根據(jù)滑動距離對數(shù)據(jù)對象進行刷新顯示,動態(tài)地調(diào)整了在滑動速度較高的情況下的刷新頻率,在一次刷新顯示時,一般人眼對于移動了很短距離的事物,并不會在視覺上產(chǎn)生明顯的感覺,避免產(chǎn)生了卡頓,從用戶體驗的角度保證了滑動流暢性。
[0177]同時,移動該距離閾值的時間一般比傳統(tǒng)基于刷新頻率的一次刷新時間長,即動態(tài)調(diào)整之后的刷新頻率比設定的刷新頻率要小,可以減少重新繪制整個列表控件的界面的操作,對于Andorid系統(tǒng)而言,可以減少對TextView進行測量(measure )、布局(layout )、繪制(draw)等操作頻次,減少設備的CPU、GPU等性能開銷。
[0178]參照圖3,示出了本發(fā)明的一種移動終端的列表數(shù)據(jù)的滑動顯示方法實施例2的步驟流程圖,具體可以包括如下步驟:
[0179]步驟301,在列表中顯示數(shù)據(jù)對象;
[0180]步驟302,當檢測到針對所述數(shù)據(jù)對象的列表滑動操作時,計算所述數(shù)據(jù)對象的滑動速度;
[0181]步驟303,根據(jù)所述滑動速度計算所述數(shù)據(jù)對象的滑動距離;
[0182]步驟304,當所述滑動速度小于預設的第二速度閾值時,根據(jù)預設的刷新速率對所述數(shù)據(jù)對象進行刷新顯示。
[0183]應用本發(fā)明實施例,可以預先設置表征速度較小的第二速度閾值,其中,第二速度閾值小于第一速度閾值。
[0184]在阻尼運動等情況下,數(shù)據(jù)對象的滑動速度逐漸減少,若數(shù)據(jù)對象的滑動速度可能小于該第二速度閾值,則表示該數(shù)據(jù)對象的滑動速度較效,則可以按照預設的刷新頻率對數(shù)據(jù)對象進行刷新顯示。
[0185]在具體實現(xiàn)中,當距離上一次刷新顯示的時間超過指定的時間閾值時,按照滑動距離移動數(shù)據(jù)對象,顯示移動之后、位于顯示區(qū)域的數(shù)據(jù)對象。
[0186]在本發(fā)明實施例中,對刷新的流程進行修改,對滑動速度的大小進行檢測,若滑動速度小于預設的第二速度閾值,根據(jù)預設的刷新頻率對數(shù)據(jù)對象進行刷新顯示,,保證不會在視覺上產(chǎn)生產(chǎn)生卡頓,從用戶體驗的角度保證了滑動流暢性。
[0187]需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明實施例并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明實施例,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本發(fā)明實施例所必須的。
[0188]參照圖4,示出了本發(fā)明的一種移動終端的列表數(shù)據(jù)的滑動顯示裝置實施例1的結構框圖,具體可以包括如下模塊:
[0189]數(shù)據(jù)對象顯示模塊401,用于在列表中顯示數(shù)據(jù)對象;
[0190]滑動速度計算模塊402,用于當檢測到針對所述數(shù)據(jù)對象的列表滑動操作時,計算所述數(shù)據(jù)對象的滑動速度;
[0191 ]滑動距離計算模塊403,用于根據(jù)所述滑動速度計算所述數(shù)據(jù)對象的滑動距離;
[0192]高速刷新顯示模塊404,用于在述滑動速度大于預設的第一速度閾值時,根據(jù)所述滑動距離對所述數(shù)據(jù)對象進行刷新顯示。
[0193]在本發(fā)明的一個實施例中,所述數(shù)據(jù)對象顯示模塊401可以包括如下子模塊:
[0194]數(shù)據(jù)對象查找子模塊,用于查找數(shù)據(jù)對象;
[0195]數(shù)據(jù)對象加載子模塊,用于在列表控件中加載所述數(shù)據(jù)對象;
[0196]第一顯示子模塊,用于顯示位于顯示區(qū)域的數(shù)據(jù)對象。
[0197]在本發(fā)明的一個實施例中,所述列表滑動操作包括滑動手勢操作,所述滑動速度包括初始滑動速度;
[0198]所述滑動速度計算模塊402可以包括如下子模塊:
[0199]滑動手勢數(shù)據(jù)檢測子模塊,用于檢測所述滑動手勢操作的手勢滑動時間和手勢滑動距離;
[0200]初始滑動速度計算子模塊,用于以所述手勢滑動距離與所述手勢滑動時間之間的比值,作為初始滑動速度。
[0201 ]在本發(fā)明的一個實施例中,所述滑動速度包括初始滑動速度和目標滑動速度;
[0202]所述滑動速度計算模塊402可以包括如下子模塊:
[0203]目標滑動速度計算子模塊,用于對所述初始滑動速度進行衰減,獲得目標滑動速度。
[0204]在本發(fā)明的一個實施例中,所述高速刷新顯示模塊404可以包括如下子模塊:
[0205]第一移動子模塊,用于在所述滑動距離超過指定的距離閾值時,按照所述滑動距離移動所述數(shù)據(jù)對象;
[0206]第二顯示子模塊,用于顯示移動之后、位于顯示區(qū)域的數(shù)據(jù)對象。
[0207]在本發(fā)明的一個實施例中,所述高速刷新顯示模塊404還可以包括如下子模塊:
[0208]長寬查詢子模塊,用于查詢所述數(shù)據(jù)對象在顯示時的高度或寬度;
[0209]距離閾值計算子模塊,用于按照所述高度或寬度計算距離閾值。
[0210]參照圖5,示出了本發(fā)明的一種移動終端的列表數(shù)據(jù)的滑動顯示裝置實施例2的結構框圖,具體可以包括如下模塊:
[0211]數(shù)據(jù)對象顯示模塊501,用于在列表中顯示數(shù)據(jù)對象;
[0212]滑動速度計算模塊502,用于當檢測到針對所述數(shù)據(jù)對象的列表滑動操作時,計算所述數(shù)據(jù)對象的滑動速度;
[0213]滑動距離計算模塊503,用于根據(jù)所述滑動速度計算所述數(shù)據(jù)對象的滑動距離;
[0214]低速刷新顯示模塊504,用于在所述滑動速度小于預設的第二速度閾值時,根據(jù)預設的刷新速率對所述數(shù)據(jù)對象進行刷新顯示。
[0215]在本發(fā)明的一個實施例中,所述低速刷新顯示模塊504可以包括如下子模塊:
[0216]第二移動子模塊,用于在距離上一次刷新顯示的時間超過指定的時間閾值時,按照所述滑動距離移動所述數(shù)據(jù)對象;
[0217]第三顯示子模塊,用于顯示移動之后、位于顯示區(qū)域的數(shù)據(jù)對象。
[0218]對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
[0219]本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
[0220]本領域內(nèi)的技術人員應明白,本發(fā)明實施例的實施例可提供為方法、裝置、或計算機程序產(chǎn)品。因此,本發(fā)明實施例可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0221]本發(fā)明實施例是參照根據(jù)本發(fā)明實施例的方法、終端設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理終端設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理終端設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0222]這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理終端設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0223]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理終端設備上,使得在計算機或其他可編程終端設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程終端設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0224]盡管已描述了本發(fā)明實施例的優(yōu)選實施例,但本領域內(nèi)的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明實施例范圍的所有變更和修改。
[0225]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
[0226]以上對本發(fā)明所提供的一種移動終端的列表數(shù)據(jù)的滑動顯示方法和一種移動終端的列表數(shù)據(jù)的滑動顯示裝置,進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。
【主權項】
1.一種移動終端的列表數(shù)據(jù)的滑動顯示方法,其特征在于,包括: 在列表中顯示數(shù)據(jù)對象; 當檢測到針對所述數(shù)據(jù)對象的列表滑動操作時,計算所述數(shù)據(jù)對象的滑動速度; 根據(jù)所述滑動速度計算所述數(shù)據(jù)對象的滑動距離; 當所述滑動速度大于預設的第一速度閾值時,根據(jù)所述滑動距離對所述數(shù)據(jù)對象進行刷新顯示。2.根據(jù)權利要求1所述的方法,其特征在于,所述在列表中顯示數(shù)據(jù)對象的步驟包括: 查找數(shù)據(jù)對象; 在列表控件中加載所述數(shù)據(jù)對象; 顯示位于顯示區(qū)域的數(shù)據(jù)對象。3.根據(jù)權利要求1所述的方法,其特征在于,所述列表滑動操作包括滑動手勢操作,所述滑動速度包括初始滑動速度; 所述計算所述數(shù)據(jù)對象的滑動速度的步驟包括: 檢測所述滑動手勢操作的手勢滑動時間和手勢滑動距離; 以所述手勢滑動距離與所述手勢滑動時間之間的比值,作為初始滑動速度。4.根據(jù)權利要求1或3所述的方法,其特征在于,所述滑動速度包括初始滑動速度和目標滑動速度; 所述計算所述數(shù)據(jù)對象的滑動速度的步驟包括: 對所述初始滑動速度進行衰減,獲得目標滑動速度。5.根據(jù)權利要求1或2或3所述的方法,其特征在于,所述根據(jù)所述滑動距離對所述數(shù)據(jù)對象進行刷新顯示的步驟包括: 當所述滑動距離超過指定的距離閾值時,按照所述滑動距離移動所述數(shù)據(jù)對象; 顯示移動之后、位于顯示區(qū)域的數(shù)據(jù)對象。6.根據(jù)權利要求5所述的方法,其特征在于,所述根據(jù)所述滑動距離對所述數(shù)據(jù)對象進行刷新顯示的步驟還包括: 查詢所述數(shù)據(jù)對象在顯示時的高度或寬度; 按照所述高度或寬度計算距離閾值。7.根據(jù)權利要求1或2或3或6所述的方法,其特征在于,還包括: 當所述滑動速度小于預設的第二速度閾值時,根據(jù)預設的刷新速率對所述數(shù)據(jù)對象進行刷新顯示。8.根據(jù)權利要求7所述的方法,其特征在于,所述根據(jù)預設的刷新速率對所述數(shù)據(jù)對象進行刷新顯示的步驟包括: 當距離上一次刷新顯示的時間超過指定的時間閾值時,按照所述滑動距離移動所述數(shù)據(jù)對象; 顯示移動之后、位于顯示區(qū)域的數(shù)據(jù)對象。9.一種移動終端的列表數(shù)據(jù)的滑動顯示裝置,其特征在于,包括: 數(shù)據(jù)對象顯示模塊,用于在列表中顯示數(shù)據(jù)對象; 滑動速度計算模塊,用于當檢測到針對所述數(shù)據(jù)對象的列表滑動操作時,計算所述數(shù)據(jù)對象的滑動速度; 滑動距離計算模塊,用于根據(jù)所述滑動速度計算所述數(shù)據(jù)對象的滑動距離; 高速刷新顯示模塊,用于在述滑動速度大于預設的第一速度閾值時,根據(jù)所述滑動距離對所述數(shù)據(jù)對象進行刷新顯示。10.根據(jù)權利要求9述的裝置,其特征在于,還包括: 低速刷新顯示模塊,用于在所述滑動速度小于預設的第二速度閾值時,根據(jù)預設的刷新速率對所述數(shù)據(jù)對象進行刷新顯示。
【文檔編號】G06F3/0482GK105892831SQ201610286084
【公開日】2016年8月24日
【申請日】2016年4月29日
【發(fā)明人】張強, 周瑋, 朱眾微
【申請人】青島海信移動通信技術股份有限公司