寫了乙個非常小的閱讀器。在實現分頁功能時,一直沒有思路。後來想了乙個非常特別的方法。經過測試可以完美的實現分頁功能。
主要思路:
1、將文字內容填充到textview中,呼叫settext一句搞定。
2、計算textview的高度範圍內可顯示的行數。如果textview佔據整個螢幕則計算螢幕範圍可顯示的的函式。
利用textview 的getlinebounds 函式可以計算每行佔據的高度h。利用
h 和textview的高度 h 就可以很方便計算可顯示的行數。
3、最關鍵的一步。計算textview
n 行顯示的字型個數。
這是最關鍵的乙個api,能夠實現這個功能主要靠它。而且textview本身也是借助這個api實現自動換行的。
這就是statilayout。
statilayout有乙個函式getlineend(n)可以計算從0到n行字型的個數。
textview 一頁顯示的行數是固定的,
分頁的難點就是每行的字型個數不固定。
通過getlineend
就可以非常簡單的計算每頁的字型個數。
4、通過每頁的字型個數從文字內容中擷取每頁的內容。
使用了乙個pageradapter 將文字內容建立為乙個textview,這樣就可以滑動分頁了.
關鍵**:
說明:**主要是說明分頁思路,其中有不少bug。
public int getpage( textview textview)
@override
public int getcount()
@override
public boolean isviewfromobject(view view, object object)
private string gettext(int page)
return mcontent.substring(mpage[page-1],mpage[page]);
}@override
public object instantiateitem(viewgroup container, int position)
if(mcache.size()>0)else
textview.settext(gettext(position));
container.addview(textview);
return textview;
}@override
public void destroyitem(viewgroup container, int position, object object)
}
最後:
如果文字的內容比較大,可以採用分段載入的方法,這樣可以加快開啟速度。 即先載入一部分文字用來顯示,然後在後台執行緒載入剩餘的文字。
Android倒計時簡單方法實現
以前我們實現乙個倒計時功能是如何實現的呢?一般都是建立乙個執行緒來通過訊息處理實現更新介面,即handler handler new handler 配合new thread new runnable catch interruptedexception e start 但現在並不是用它實現,有更簡...
通過簡單方法實現spring boot web專案
搭建效果為 直接在網頁輸入請求,在頁面中顯示一行文字 hello,spring boot 與一般的wen專案不同的地方 1 不需要配置web.xml 檔案,但需要註解 springbootapplication 等 2 一切和spring有關的jar包都不需要版本號,springcloud會給你選擇...
實現 SOA 安全的簡單方法
soa 安全實現起來可以是非常容易的 前提是你選擇的方式要正確。松耦合的 可發現的 可共用的安全工具 乙個簡單的工具 ws security 對 web services 進行了加強,為 soa 安全提供了你需要的一切 訪問控制 加密 信任 傳輸安全以及不可抵賴。訊息示例 ws security 將...