日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android左右旋转动画效果图,Android新姿势:3D翻转效果原理

發布時間:2024/9/27 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android左右旋转动画效果图,Android新姿势:3D翻转效果原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,android里是沒有3D翻轉的動畫效果的,但是呢,android有提供一個Camera的類,可以利用這個類來實現。

先看代碼,Rotate3d是繼承了Animation的一個動畫類,多余的代碼我就不給出了,只看applyTransformation方法內是怎么實現的。

public class Rotate3d extends Animation {

...

@Override

protected void applyTransformation(float interpolatedTime, Transformation t) {

final float fromDegrees = mFromDegrees;

// 生成中間角度

float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);

final float centerX = mCenterX;

final float centerY = mCenterY;

final Camera camera = mCamera;

final Matrix matrix = t.getMatrix();

camera.save();

// 左右翻轉

camera.rotateY(degrees);

// 取得變換后的矩陣

camera.getMatrix(matrix);

camera.restore();

matrix.preTranslate(-centerX, -centerY);

matrix.postTranslate(centerX, centerY);

}

...

}

接下來解析下原理。

1、先獲取視圖的Matrix:

final Matrix matrix = t.getMatrix();

2、利用camera改變matrix的參數:

camera.rotateY(degrees);//翻轉一定的角度

camera.getMatrix(matrix);//改變matrix

PS:注意這里是用getMatrix的方法來改變,順便普及一下小知識,java的方法傳入的參數如果是對象的話,是可以在方法內改變對象的屬性值的;不過如果傳入的是一個int、float、String之類的基礎類型,則不會改變。舉例:

假如有個方法 set(int i){ i++; } 然后用了 int i=3; set(i); 這時打印出的 i 還是3。

但是 假如有個方法 set(C c){ c.i++; } 然后用了 c = new C(); c.i=3; set(c); 這時打印出 c 對象的 i 就是4了。

3、繼續,一般上面的步驟已經可以見到3D翻轉效果了,但是很難看,因為這種翻轉是沒有中心點的,接下來就是將翻轉后的視圖弄到一個位置上去(其實這么說也不太對)。

matrix.preTranslate(-centerX, -centerY);

matrix.postTranslate(centerX, centerY);

這個的話其實我也研究了好久最后沒研究出個所以然來,反正記住這樣寫就可以設置以某個坐標為中心進行翻轉了。

---------------------------我叫分割線--------------------------

最近搞的一個項目需要用到有3D翻轉效果的gallery,卡了我好久。

上面給出的代碼是制作一個3D翻轉的動畫效果,但是如果要在gallery中用到這種動畫效果的話自然不行。主要是翻轉角度的計算問題。

animation動畫類中可以根據動畫發生的時間點來計算角度,而gallery就不行,因為gallery是隨手勢滑動發生動畫的,時間不固定,還可以左右來回滑動。

不過只要解決了角度的問題,3D翻轉效果自然不是問題。先看代碼。

@Override

protected boolean getChildStaticTransformation(View child, Transformation t) {

final float centerX = App.width / 2;

final float centerY = App.height / 2;

final Camera camera = mCamera;

camera.save();

float rotate = -child.getLeft() * 90 / 480;

camera.rotateY(rotate);

camera.getMatrix(t.getMatrix());

camera.restore();

t.getMatrix().preTranslate(-centerX, -centerY);

t.getMatrix().postTranslate(centerX, centerY);

return true;

}

這是重寫gallery的一個方法,具體的角度計算,其實就是根據當前視圖View child與左屏幕的距離來計算(也可以當成是x坐標)。

好~效果出來了!還是挺有成就感的~~ >v<

總結

以上是生活随笔為你收集整理的android左右旋转动画效果图,Android新姿势:3D翻转效果原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一卡二卡在线观看 | 日本亚洲最大的色成网站www | 天天操天天操天天操 | 久久久久久免费 | 美女啪啪无遮挡 | 日b视频免费观看 | 欧美www视频| 毛片999| 孕妇毛片 | 你懂的在线网站 | 尤物视频免费观看 | 久久国产精品首页 | 疯狂做爰高潮videossex | 中文字幕乱码亚洲精品一区 | 成人福利院 | 色妞色视频一区二区三区四区 | 欧美一区二区三区黄片 | 99爱精品 | 大地资源中文在线观看免费版 | 亚洲国产经典 | 中国精品久久久 | 姐姐的秘密韩剧免费观看全集中文 | 91精品人妻一区二区三区 | 乳女教师の诱惑julia | 白丝一区 | 欧美一区二区三区四区在线 | 天天夜夜啦啦啦 | 精品国产91久久久久久 | 欧美日韩激情 | 国产第九页 | 欧美成人国产va精品日本一级 | 97国产精品视频 | 玩弄少妇人妻 | 精品黄色在线观看 | 人人爽人人香蕉 | 天天搞天天搞 | 欧美成人二区 | 日韩一级色片 | 日本黄色不卡 | caoporn国产| 人妻久久久一区二区三区 | 日本精品一区 | 高清欧美性猛交xxxx黑人猛交 | av看片网站 | 中文字幕日韩人妻在线视频 | 99在线无码精品入口 | 免费在线性爱视频 | www.亚洲色图 | 亚洲精品无码久久久久久久 | 日本高清视频免费观看 | 三级黄色片免费 | 国产国语老龄妇女a片 | 91蜜桃臀久久一区二区 | 日日人人| 欧美三级午夜理伦三级小说 | 亚洲av无码精品一区二区 | 天天干 夜夜操 | 国产乱性 | 久久久久在线视频 | 福利在线一区 | 福利毛片| 亚洲免费在线视频观看 | 少妇xxxx69 | 青青草在线播放 | 制服av在线 | 国语播放老妇呻吟对白 | 国产欧美日韩精品在线观看 | 久久久三级视频 | 黄色国产视频 | 狠狠躁天天躁综合网 | 光棍天堂av | 精品无码三级在线观看视频 | 天天精品视频 | 你懂的av在线 | 欧美成人黑人xx视频免费观看 | 夫妻自拍偷拍 | 色哟哟免费 | 免费黄色激情视频 | 韩国无码av片在线观看网站 | 日韩激情小视频 | 三级精品在线观看 | 国模私拍在线观看 | av资源一区| 污污网站免费 | 欧美综合一区二区三区 | 亚洲精品无码久久 | aa毛片视频| 亚洲一级片在线播放 | 伦理一级片 | 欧美亚洲一区二区三区 | 美女扒开内看个够网站 | 91久久精品日日躁夜夜躁国产 | 中文字幕一区二区在线老色批影视 | 免费精品视频一区二区三区 | 欧美在线播放 | 国内视频一区二区三区 | 亚洲国产精品久久久久爰色欲 | 亚洲色欲色欲www在线观看 | 牛牛视频在线观看 |