簡單方法實現Android閱讀器分頁

2021-07-17 04:50:33 字數 1406 閱讀 9976

寫了乙個非常小的閱讀器。在實現分頁功能時,一直沒有思路。後來想了乙個非常特別的方法。經過測試可以完美的實現分頁功能。

主要思路:

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 將...