導航:首頁 > 操作系統 > android立體翻頁效果怎麼做的

android立體翻頁效果怎麼做的

發布時間:2023-01-30 13:55:27

android中如何實現翻頁特效,3D的那種,不要2D的

這個問題~推薦你用【最牛的3D主題《SPB超炫主題SPB Mobile Shell》】畫面效果非常絢麗另外本人DHD親測,不知道你的行不行~~下載地址為: http://android.d.cn/news/1118-1.html

Ⅱ Android自定義View——從零開始實現書籍翻頁效果(一)

前言 :本篇是系列博客的第三篇,這次我們要研究 書籍翻頁效果 。不知道大家平時有沒用過iReader、掌閱這些小說軟體,裡面的翻頁效果感覺十分的酷炫。有心想研究研究如何實現,於是網上找了找,發現這方面的教學資料非常少,所幸能找到 何明桂大大 的 Android 實現書籍翻頁效果----原理篇 這樣的入門博客(感謝大大 Orz),我們就以這篇博客為切入點從零實現我們自己的翻頁效果。由於這次坑比較深,預計會寫好幾期,感興趣的小夥伴可以點下關注以便及時收到更新提醒,謝謝大家的支持 ~

本篇只著重於思路和實現步驟,裡面用到的一些知識原理不會非常細地拿來講,如果有不清楚的api或方法可以在網上搜下相應的資料,肯定有大神講得非常清楚的,我這就不獻丑了。本著認真負責的精神我會把相關知識的博文鏈接也貼出來(其實就是懶不想寫那麼多哈哈),大家可以自行傳送。為了照顧第一次閱讀系列博客的小夥伴,本篇會出現一些在之前 系列博客 就講過的內容,看過的童鞋自行跳過該段即可

國際慣例,先上效果圖,本次主要實現了 基本的上下翻頁效果 右側最大翻頁距離的限制

在看這篇博客之前,希望大家能先了解一下書籍翻頁的實現原理,博客鏈接我已經貼出來了。通過原理講解我們知道,整個書籍翻頁效果界面分成了三個區域, A 為當前頁區域, B 為下一頁區域, C 為當前頁背面,如圖所示

書籍翻頁效果的實現就是要以我們 觸摸屏幕位置的坐標 為基礎繪制出這三個區域,形成模擬翻頁的特效。要繪制這三個區域,我們需要通過一組 特定的點 來完成,這些點的坐標需要通過兩個已知的點( 觸摸點 相對邊緣角 )計算得到,下圖我將各個特定點的位置和計算公式貼出來,大家對照著原理一起理解(渣畫工望體諒 ╮(╯▽╰)╭ ),其中 b 點是由 ae cj 的交點, k 點是由 ah cj 的交點

簡單總結一下, a 是觸摸點, f 是觸摸點相對的邊緣角, eh 我們設置為 af 的垂直平分線,則 g af 的中點, ab ak dj 直線 曲線cdb 是起點為 c ,控制點為 e ,終點為 b 二階貝塞爾曲線 曲線kij 是起點為 k ,控制點為 h ,終點為 j 二階貝塞爾曲線 ,區域 A B C 就由這些點和線劃分開來。我們將這些點稱為標識點,下一步就是模擬設定 a f 點的位置,將這組標識點繪制到屏幕上來驗證我們的計算公式是否正確,創建 BookPageView

實體類 MyPoint 用來存放我們的標識點坐標

界面布局:

在Activity中進行注冊

效果如圖

前文我們提到 ab ak dj 直線 曲線cdb 是起點為 c ,控制點為 e ,終點為 b 二階貝塞爾曲線 曲線kij 是起點為 k ,控制點為 h ,終點為 j 二階貝塞爾曲線 。通過觀察分析得知, 區域A 是由View 左上角 左下角 曲線cdb , 直線 ab ak 曲線kij 右上角 連接而成的區域,修改 BookPageView ,利用 path 繪制處 區域A

效果如圖

區域C 理論上應該是由點 a , b , d , i , k 連接而成的閉合區域,但由於 d i 是曲線上的點,我們沒辦法直接從 d 出發通過 path 繪制路徑連接 b 點( i , k 同理),也就不能只用 path 的情況下直接繪制出 區域C ,我們需要用 PorterDuffXfermode 方面的知識「曲線救國」。我們試著先將點 a , b , d , i , k 連接起來,觀察閉合區域與 區域A 之間的聯系。修改 BookPageView

效果如圖

我們將兩條曲線也畫出來對比觀察

觀察分析後可以得出結論, 區域C 由直線ab,bd,dj,ik,ak連接而成的區域 減去 與區域A交集部分 後剩餘的區域。於是我們設置 區域C 畫筆 Xfermode 模式為 DST_ATOP

效果如圖

最後是 區域B ,因為 區域B 處於最底層,我們直接將 區域B 畫筆 Xfermode 模式設為 DST_ATOP ,在 區域A、C 之後繪制即可,修改 BookPageView

效果如圖

翻頁可以從右下方翻自然也可以從右上方翻,我們將 f 點設在右上角,由於View上下兩部分是呈 鏡像 的,所以各標識點的位置也應該是鏡像對應的,因為 區域B和C 的繪制與 f 點沒有關系,所以我們只需要修改 區域A 的繪制邏輯,新增 getPathAFromTopRight() 方法

效果如圖

之前由於測試效果沒有對View的大小進行重新測量,在實現觸摸翻頁之前先把這個結了。重寫View的 onMeasure() 方法

我們的需求是,在上半部分翻頁時 f 點在右上角,在下半部分翻頁時 f 則在右下角,當手指離開屏幕時回到 初始狀態 ,根據需求,修改 BookPageView

在Activity中監聽View的 onTouch 狀態

注意,要設置 android:clickable true ,否則無法監聽到 ACTION_MOVE ACTION_UP 狀態

效果如圖

到這里我們已經實現了基本的翻頁效果,但要還原真實的書籍翻頁效果,我們還需要設置一些限制條件來完善我們的項目

對於一般的書本來說,最左側應該是釘起來的,也就是說如果我們從右側翻頁,翻動的距離是 有限制的 ,最下方翻頁形成的曲線起點( c 點)的x坐標不能小於0(上方同理),按照這個限定條件,修改我們的 BookPageView

效果如圖

至此本篇教程就告一段落了,當然還有許多功能需要繼續完善,例如橫向翻頁、翻頁動畫、陰影效果等等,這些都會在後面的教程中一一解決。如果大家看了感覺還不錯麻煩點個贊,你們的支持是我最大的動力~

Ⅲ 如何製作PPT中的翻頁特效,是單頁的,就像android系統那種效果!

有一個和你要求的結果一樣,但是和你預想的方法不一樣的辦法:
1、選中三張圖片,一定要同時選中,你可以用滑鼠畫框,圈選三個圖片(保證三張圖片都在框內,並且框內沒有其它組件。適用於畫面簡單組件少的環境),也可以按住「控制鍵(ctrl,在主鍵盤的左下和右下)」;
2、確保選中了三張圖片以後,在選區內滑鼠右鍵單擊,選擇「自定義動畫」,右邊會出現一個新的對話框,上部有「添加效果」,單擊打開後選擇「隨機效果」。下面會出現相應的特效。
現在,三張圖片的效果已經設置完畢,但是出現的先後順序和速度都沒有設置,現在默認的順序是「三張圖片同時以『隨機效果』和同樣的速度(一般是『非常快』用時0.5秒)」。如果你想讓他們按次序(或單擊後)進入的話請繼續進行如下操作:
3、如果添加完畢之後你還什麼都沒動的話,現在下面的幾個特效應該是同時被默認選中的,如果沒有你可
以按住控制鍵(ctrl)分別選擇三個特效,被選中的特效顯示明顯藍色外框,在特效上面有「開始」「方向」「速度」三個功能,我們心在需要改動的是開始功
能。左鍵點開「開始」後面的「下拉三角」,裡面有「單擊時」「之前」和「之後」,如果你想單擊啟動下一圖片選擇「單擊時」,要是想讓它們自動進入,則選擇
「之後」。

雖然不是你想要的那種粘貼特效,但是也是可以一次同時設置多張圖片的,對於多個類似組件的相同特效也可以用上述方法來完成,對ppt來說是非常節省時間
的,這個方法適合在同一頁ppt中進行操作,多頁的不行,但是你可以把設置完的組件剪切過去不是?一樣的節省時間。

Ⅳ android怎樣實現翻頁的效果

實現原理:

當前手指觸摸點為a,則 a點坐標為(ax,ay), 由三角形acb與三角形cmb為對稱三角形並且直線cp為am垂直平分線,則 B點坐標為(ax/2,ay/2)。

作gf垂直於om且cb垂直於am, 三角形cfg與gfm相似,則 cf:gf = gf:mf cf=(gf * gf) / mf gf長度為g點縱坐標 mf長度為g點橫坐標

cf長度可求 c點坐標可求 由c點、g點可確定過兩點間的直線, 當該直線中x=0時求出與y足交點。

Ⅳ 跪求android 翻書效果 實現思路

目前android自帶的animation效果只有平移,縮放,旋轉等幾種,所以沒有現成的翻書效果。

Ⅵ Android怎麼實現iBook的翻頁,頁面很長可以上下拖動

之前看到像ipad上的ibook的模擬書籍翻頁的特效感覺很炫,在android上也有像laputa和ireader等應用實現有這個特效,在網上搜索了一下好像也沒有現成的例子,所以自己動手實現了一個,現在將實現的過程記錄下來。

實現真實的翻頁效果,為了能在翻頁的過程中看到下一頁的內容,在翻頁之前必須准備兩張頁面,一張是當前頁,另一張是下一頁。翻頁的過程就是對這兩張頁面的剪切,組合過程。
用戶看到的可以分為3部分:當前頁的可見部分(下圖綠色部分),把書頁翻起來後看到的背面區域(下圖黃色部分),把書頁翻起來後看到的下一頁的一角(下圖綠色部分)。


假設我們已經求得了包含黃色區域和藍色區域的Path, 假設為mPath0,那麼綠色區域則可以使用Canvas.clipPath(mPath0, Region.Op.XOR)來剪裁繪制;而藍色區域則可以通過使用(假設黃色區域的Path為mPath1)

[java] view plain
Canvas.clipPath(mPath0);
Canvas.clipPath(mPath1, Region.Op.DIFFERENCE); //繪制第一次不同於第二次的區域

對clipPath不是很熟的童鞋可以去復習下 自帶apidemo的Clipping例子。

下面我們來研究如何求取mPath0:

上圖黃色和藍色區域的mPath0,可以通過以下獲取:

[java] view plain
mPath0.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點坐標(觸摸點),f點坐標(顯示界面的大小),直線eh是af的垂直平分線。
剩下的就變成數學問題啦~~
先來求出g點坐標因為g為af中點:
顯然gx=(ax+fx)/2; gy=(ay+fy)/2;
e點坐標:
添加補助線gm,m點坐標為(gx, mHeight);
由相似垂直三角形egm和gmf可知:
em=gm*gm/mf;
這樣e點坐標為:(gx-em, mHeight)
同理可以求出h點坐標。
C點坐標:
為簡化計算,我們令n點為ag中點,這樣有三角形cjf和ehf得:
cx=ex- ef/2 ;
c點坐標為:(ex- ef/2, mHeight)
同理求得j點坐標。
以下推導需要較多的數學知識,不記得的童鞋,自覺復習去~~
一條直線的函數為:
Y=ax+b;
通過已知兩點求直線: a = (y2-y1)/(x2-x1);
b = (x2*y1-y2*x1)/(x2-x1);

兩條相交直線交點的坐標為: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點坐標:
d為pe的中點,所以:
dx=((cx+bx)/2+ex)/2
dy=((cy+by)/2+ey)/2
同理 可求 i 點。
通過上述求解,繪制翻頁效果的各個頂點均已得出,剩下的就是貼圖,繪制陰影。這部分將在於後的文章中介紹,嘻嘻,喜歡研究的童鞋可以自己試試。
轉載,僅供參考。

Ⅶ android的電子書翻頁效果怎麼做

1.view在上面繪制出一個屏幕大小的視圖,並繪制出文字(onDraw drawText)
2.捕獲屏幕手勢,當有向上或向下移動的手勢觸發時(onTouch())
3.動畫效果改變視圖(viewfipper).
滿意請採納謝謝

Ⅷ 安卓手機GO主題翻頁效果是兩個圈,怎麼弄 懸賞100分

要圈的話應該是選「」呼嚕呼嚕轉」

Ⅸ 簡單實現RecyclerView版本的豎向翻頁效果

1實現子頁面撐滿父布局,這樣頁面就只能顯示一個個頁面了
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
子布局
<LinearLayout xmlns:android=" http://schemas.android.com/apk/res/android "
android:layout_width="match_parent"
android:layout_height="match_parent"
類似於這種長寬都和父親一樣大

2 設置每次滑動滑動頁面底部
SnapHelper snapHelper = new PagerSnapHelper();
snapHelper.attachToRecyclerView(recyclerView);

3監聽頁面載入到下一個頁面
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
LinearLayoutManager manager = (LinearLayoutManager) recyclerView1.getLayoutManager();
int first = manager.findFirstVisibleItemPosition();
if (first != last) {
last = first;
Toast.makeText(MainActivity.this, "" + first, Toast.LENGTH_SHORT).show();
}

參考項目:

Ⅹ android怎麼做類似網頁的左右翻頁

如果實現上下或者左右翻頁效果,我們藉助下這個開源項目:https://github.com/openaphid/android-flip

Aphid FlipView是一個能夠實現Flipboard翻頁效果的UI組件。

下載完畢後導入到當前你的項目中,我們來下上下翻頁的效果圖:

直接貼出代碼:

布局文件:

詳細

閱讀全文

與android立體翻頁效果怎麼做的相關的資料

熱點內容
海康攝像螢石雲伺服器 瀏覽:814
安卓手機怎麼改安卓版名 瀏覽:147
雅思聽力807詞彙pdf 瀏覽:897
黃豆私人加密 瀏覽:192
java分鍾轉換小時 瀏覽:245
易語言伺服器如何提高 瀏覽:591
網站主機伺服器地址查看 瀏覽:859
演算法學不會能當程序員嗎 瀏覽:119
程序員技術交流研究 瀏覽:814
javaresponse文件 瀏覽:734
linuxrar壓縮文件夾 瀏覽:218
魅藍手機連接不上伺服器怎麼回事 瀏覽:379
工行app怎麼改已綁定銀行卡 瀏覽:533
oppo晶元程序員 瀏覽:602
oppok3應用怎麼加密 瀏覽:327
電腦軟盤怎麼加密碼 瀏覽:815
伺服器光交換機有什麼用 瀏覽:708
app上怎麼拍蛙小俠 瀏覽:217
志高聊天app怎麼下載 瀏覽:635
郵政app怎麼不能掃付款碼 瀏覽:559