android閱讀器翻頁效果怎么做,Android電子書實現(xiàn)整屏翻頁功能

發(fā)布時間:2024-03-18
1,android電子書實現(xiàn)整屏翻頁功能2,android怎么實現(xiàn)ibook的翻頁頁面很長可以上下拖動3,android自定義view從零開始實現(xiàn)書籍翻頁效果一1,android電子書實現(xiàn)整屏翻頁功能 這種實現(xiàn)效果就不涉及scrollview了1.view在上面繪制出一個屏幕大小的視圖,并繪制出文字(ondraw drawtext)2.捕獲屏幕手勢,當(dāng)有向上或向下移動的手勢觸發(fā)時(ontouch())3.動畫效果改變視圖(viewfipper).
2,android怎么實現(xiàn)ibook的翻頁頁面很長可以上下拖動 之前看到像ipad上的ibook的模擬書籍翻頁的特效感覺很炫,在android上也有像laputa和ireader等應(yīng)用實現(xiàn)有這個特效,在網(wǎng)上搜索了一下好像也沒有現(xiàn)成的例子,所以自己動手實現(xiàn)了一個,現(xiàn)在將實現(xiàn)的過程記錄下來。實現(xiàn)真實的翻頁效果,為了能在翻頁的過程中看到下一頁的內(nèi)容,在翻頁之前必須準(zhǔn)備兩張頁面,一張是當(dāng)前頁,另一張是下一頁。翻頁的過程就是對這兩張頁面的剪切,組合過程。用戶看到的可以分為3部分:當(dāng)前頁的可見部分(下圖綠色部分),把書頁翻起來后看到的背面區(qū)域(下圖黃色部分),把書頁翻起來后看到的下一頁的一角(下圖綠色部分)。?假設(shè)我們已經(jīng)求得了包含黃色區(qū)域和藍色區(qū)域的path, 假設(shè)為mpath0,那么綠色區(qū)域則可以使用canvas.clippath(mpath0, region.op.xor)來剪裁繪制;而藍色區(qū)域則可以通過使用(假設(shè)黃色區(qū)域的path為mpath1)[java] view plaincopycanvas.clippath(mpath0);canvas.clippath(mpath1, region.op.difference); //繪制第一次不同于第二次的區(qū)域?qū)lippath不是很熟的童鞋可以去復(fù)習(xí)下 自帶apidemo的clipping例子。下面我們來研究如何求取mpath0:上圖黃色和藍色區(qū)域的mpath0,可以通過以下獲?。篬java] view plaincopympath0.moveto(jx, jy);mpath0.quadto(hx, hy, kx, ky);mpath0.lineto(ax, ay);mpath0.lineto(bx, by);mpath0.quadto(ex, ey, cx,cy);mpath0.lineto(fx, fy);mpath0.close();接著就是要求出繪制path0所需的各個頂點。我們已知的條件是:a點坐標(biāo)(觸摸點),f點坐標(biāo)(顯示界面的大小),直線eh是af的垂直平分線。剩下的就變成數(shù)學(xué)問題啦~~先來求出g點坐標(biāo)因為g為af中點:顯然gx=(ax+fx)/2; gy=(ay+fy)/2;e點坐標(biāo):添加補助線gm,m點坐標(biāo)為(gx, mheight);由相似垂直三角形egm和gmf可知:em=gm*gm/mf;這樣e點坐標(biāo)為:(gx-em, mheight)同理可以求出h點坐標(biāo)。c點坐標(biāo):為簡化計算,我們令n點為ag中點,這樣有三角形cjf和ehf得:cx=ex- ef/2 ;c點坐標(biāo)為:(ex- ef/2, mheight)同理求得j點坐標(biāo)。以下推導(dǎo)需要較多的數(shù)學(xué)知識,不記得的童鞋,自覺復(fù)習(xí)去~~一條直線的函數(shù)為:y=ax+b;通過已知兩點求直線: a = (y2-y1)/(x2-x1);b = (x2*y1-y2*x1)/(x2-x1);兩條相交直線交點的坐標(biāo)為:x= (b2-b1)/(a1-a2);y=a1x+b1或者y=a2x+b2綜上,4點相交的直線的交點為:x=( (x4*y3-y4*x3)/(x4-x3)-(x2*y1-y2*x1)/(x2-x1)) /((y2-y1)/(x2-x1)- (y4-y3)/(x4-x3) )= ( (x4*y3-y4*x3) (x2-x1)- (x2*y1-y2*x1) (x4-x3) ) /( (y2-y1) (x4-x3)- (y4-y3) (x2-x1) )將之前求得的 a,e,c,j四個點帶入上式則可以求出 b. 同理可求k點。d點坐標(biāo):d為pe的中點,所以:dx=((cx+bx)/2+ex)/2dy=((cy+by)/2+ey)/2同理 可求 i 點。通過上述求解,繪制翻頁效果的各個頂點均已得出,剩下的就是貼圖,繪制陰影。這部分將在于后的文章中介紹,嘻嘻,喜歡研究的童鞋可以自己試試。轉(zhuǎn)載,僅供參考。
3,android自定義view從零開始實現(xiàn)書籍翻頁效果一 前言 :本篇是系列博客的第三篇,這次我們要研究 書籍翻頁效果 。不知道大家平時有沒用過ireader、掌閱這些小說軟件,里面的翻頁效果感覺十分的酷炫。有心想研究研究如何實現(xiàn),于是網(wǎng)上找了找,發(fā)現(xiàn)這方面的教學(xué)資料非常少,所幸能找到 何明桂大大 的 android 實現(xiàn)書籍翻頁效果----原理篇 這樣的入門博客(感謝大大 orz),我們就以這篇博客為切入點從零實現(xiàn)我們自己的翻頁效果。由于這次坑比較深,預(yù)計會寫好幾期,感興趣的小伙伴可以點下關(guān)注以便及時收到更新提醒,謝謝大家的支持 ~ 本篇只著重于思路和實現(xiàn)步驟,里面用到的一些知識原理不會非常細地拿來講,如果有不清楚的api或方法可以在網(wǎng)上搜下相應(yīng)的資料,肯定有大神講得非常清楚的,我這就不獻丑了。本著認真負責(zé)的精神我會把相關(guān)知識的博文鏈接也貼出來(其實就是懶不想寫那么多哈哈),大家可以自行傳送。為了照顧第一次閱讀系列博客的小伙伴,本篇會出現(xiàn)一些在之前 系列博客 就講過的內(nèi)容,看過的童鞋自行跳過該段即可 國際慣例,先上效果圖,本次主要實現(xiàn)了 基本的上下翻頁效果 與 右側(cè)最大翻頁距離的限制 在看這篇博客之前,希望大家能先了解一下書籍翻頁的實現(xiàn)原理,博客鏈接我已經(jīng)貼出來了。通過原理講解我們知道,整個書籍翻頁效果界面分成了三個區(qū)域, a 為當(dāng)前頁區(qū)域, b 為下一頁區(qū)域, c 為當(dāng)前頁背面,如圖所示 書籍翻頁效果的實現(xiàn)就是要以我們 觸摸屏幕位置的坐標(biāo) 為基礎(chǔ)繪制出這三個區(qū)域,形成模擬翻頁的特效。要繪制這三個區(qū)域,我們需要通過一組 特定的點 來完成,這些點的坐標(biāo)需要通過兩個已知的點( 觸摸點 、 相對邊緣角 )計算得到,下圖我將各個特定點的位置和計算公式貼出來,大家對照著原理一起理解(渣畫工望體諒 ╮(╯▽╰)╭ ),其中 b 點是由 ae 和 cj 的交點, k 點是由 ah 和 cj 的交點 簡單總結(jié)一下, a 是觸摸點, f 是觸摸點相對的邊緣角, eh 我們設(shè)置為 af 的垂直平分線,則 g 是 af 的中點, ab 、 ak 、 dj 是 直線 ; 曲線cdb 是起點為 c ,控制點為 e ,終點為 b 的 二階貝塞爾曲線 ; 曲線kij 是起點為 k ,控制點為 h ,終點為 j 的 二階貝塞爾曲線 ,區(qū)域 a 、 b 、 c 就由這些點和線劃分開來。我們將這些點稱為標(biāo)識點,下一步就是模擬設(shè)定 a 和 f 點的位置,將這組標(biāo)識點繪制到屏幕上來驗證我們的計算公式是否正確,創(chuàng)建 bookpageview 實體類 mypoint 用來存放我們的標(biāo)識點坐標(biāo) 界面布局: 在activity中進行注冊 效果如圖 前文我們提到 ab 、 ak 、 dj 是 直線 ; 曲線cdb 是起點為 c ,控制點為 e ,終點為 b 的 二階貝塞爾曲線 ; 曲線kij 是起點為 k ,控制點為 h ,終點為 j 的 二階貝塞爾曲線 。通過觀察分析得知, 區(qū)域a 是由view 左上角 , 左下角 , 曲線cdb , 直線 ab 、 ak , 曲線kij , 右上角 連接而成的區(qū)域,修改 bookpageview ,利用 path 繪制處 區(qū)域a 效果如圖 區(qū)域c 理論上應(yīng)該是由點 a , b , d , i , k 連接而成的閉合區(qū)域,但由于 d 和 i 是曲線上的點,我們沒辦法直接從 d 出發(fā)通過 path 繪制路徑連接 b 點( i , k 同理),也就不能只用 path 的情況下直接繪制出 區(qū)域c ,我們需要用 porterduffxfermode 方面的知識“曲線救國”。我們試著先將點 a , b , d , i , k 連接起來,觀察閉合區(qū)域與 區(qū)域a 之間的聯(lián)系。修改 bookpageview 效果如圖 我們將兩條曲線也畫出來對比觀察 觀察分析后可以得出結(jié)論, 區(qū)域c 是 由直線ab,bd,dj,ik,ak連接而成的區(qū)域 減去 與區(qū)域a交集部分 后剩余的區(qū)域。于是我們設(shè)置 區(qū)域c 畫筆 xfermode 模式為 dst_atop 效果如圖 最后是 區(qū)域b ,因為 區(qū)域b 處于最底層,我們直接將 區(qū)域b 畫筆 xfe
上一個:手機無命令怎么恢復(fù),怎么恢復(fù)出廠設(shè)置點擊全是無命令
下一個:快壓廣告怎么解決(快壓總是彈出廣告怎么辦)

捧心蘭的栽培技術(shù)
手機遠程屏幕共享軟件哪個比較好用(手機之間屏幕共享 遠程協(xié)助)
m2固態(tài)硬盤數(shù)據(jù)找回,固態(tài)硬盤掉盤怎么恢復(fù)數(shù)據(jù)
自救器負壓氣密檢查儀技術(shù)資料
香韻在茶外茶道魅力的吉光片羽
為什么com域名備受追捧?com域名有何優(yōu)勢?
蝴蝶蘭實用栽培技術(shù)
山寨手機怎么下游戲,山寨手機怎么下游戲
vivoy97什么時候上市的(vivoy97什么時候發(fā)布的)
小米max分辨率怎么改,小米手機屏幕分辨率怎么設(shè)置
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos