日韩性视频-久久久蜜桃-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翻转效果原理的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 婷婷色图 | 加勒比综合 | 少妇媚药按摩中文字幕 | 日本一区二区欧美 | 99re99热| 超碰啪啪| 欧美日本久久 | 四川丰满少妇被弄到高潮 | 欧美一级做a爰片免费视频 成人激情在线观看 | 国产精品久久久久久久久 | 天堂在线一区二区 | 国产三级黄色 | 欧美国产三级 | www,五月天,com | 国产 日韩 欧美 综合 | 亚洲大尺度在线观看 | 日韩激情视频在线 | 99在线精品免费视频 | 性欧美极品另类 | hd性videos意大利精品 | 第一毛片| 国产天堂资源 | 尤物视频免费在线观看 | 91极品视觉盛宴 | 精人妻一区二区三区 | 波多野结衣高清视频 | 女人被狂躁60分钟视频 | 人妻少妇精品视频一区二区三区 | 水密桃av | 四虎婷婷 | 91国偷自产一区二区三区老熟女 | 久久久久久网 | 日批黄色 | 亚洲乱码国产乱码精品精剪 | 国产精品三级av | 久久青娱乐 | 久久精品视频5 | 久久99草 | 激情五月在线观看 | 做爰无遮挡三级 | 中文字幕淫 | 国产另类ts人妖一区二区 | 久草中文在线视频 | 国产精品久久久久久婷婷天堂 | 伊人春色影院 | 国产97色在线 | 国产 | 九九久久视频 | 欧美一区二区福利 | 欧美性xxxxxx | 免费日韩毛片 | 精品熟女一区 | 黄色一节片 | 国产精品久久久久无码av | 欧美乱妇日本无乱码特黄大片 | 蜜臀av一区二区三区有限公司 | 天天天色 | 青青草手机在线 | 一区二区av电影 | 无码一区二区三区在线观看 | 国产成人综合欧美精品久久 | 国精品无码一区二区三区 | 特大黑人巨人吊xxxx | 国产精品无 | 亚洲人视频在线观看 | 成人av不卡| 欧美在线观看视频一区二区 | 动漫美女被吸奶 | 午夜免费视频观看 | 日韩视频在线免费播放 | 亚洲欧洲日产av | 天天碰天天干 | 女人特黄大aaaaaa大片 | 欧美性猛交 xxxx | 偷拍老头老太高潮抽搐 | 日韩专区一区二区三区 | 看91| 成人毛片一区二区三区 | 伦乱天堂 | 美女伦理水蜜桃4 | 欧美区一区二 | 精品毛片一区二区三区 | 国产精品黄色在线观看 | 欧美一级片网址 | 日韩在线观看网址 | 男女免费视频 | 国产色图片| 农夫色综合 | 亚洲av综合永久无码精品天堂 | 青青草原在线免费 | 草视频在线观看 | 波多野结衣a v在线 欧洲免费av | 久久国产精品久久国产精品 | 午夜视频黄 | 中日韩精品视频在线观看 | 国产亚洲精品久久久久四川人 | 美女激情网 | 欧美色图狠狠干 | 成人自拍网| 中文字幕无码乱人伦 |