在我的應用程序中,我想翻轉視圖.. 我在iPhone中看到過這樣的動畫。同樣的事情,我想在我的Android應用程序。Android:如何使android動作的翻轉動畫像iphone一樣從左向右水平翻轉?
我想翻轉整個活動視圖。可能嗎 ? 我已經看到了在android中翻轉的一些例子。但是,所有示例中的視圖都在同一個活動中。是否可以爲不同的活動設置此類視圖。或者在從一項活動轉到另一項活動時做這種效果?
請參閱在iPhone的翻頁效果的卡:
如果是的話,請給參考任何演示示例或代碼。 謝謝。
在我的應用程序中,我想翻轉視圖.. 我在iPhone中看到過這樣的動畫。同樣的事情,我想在我的Android應用程序。Android:如何使android動作的翻轉動畫像iphone一樣從左向右水平翻轉?
我想翻轉整個活動視圖。可能嗎 ? 我已經看到了在android中翻轉的一些例子。但是,所有示例中的視圖都在同一個活動中。是否可以爲不同的活動設置此類視圖。或者在從一項活動轉到另一項活動時做這種效果?
請參閱在iPhone的翻頁效果的卡:
如果是的話,請給參考任何演示示例或代碼。 謝謝。
首先定義您自己的動畫並將其存儲在res-> anim或java類下的XML中。如果您正在尋找翻轉動畫,請嘗試查看3D轉換類,我沒有任何Eclipse演示文稿中隨附的API演示以外的其他工作示例。
之後有你的活動加載該動畫,最好加載到onCreate。請參考這裏question
Android的最令人信服的3D翻轉動畫之一我見過在這裏完成https://code.google.com/p/android-3d-flip-view-transition。
許多其他教程和示例代碼不會產生可信的3D翻轉。在Y軸上進行簡單的旋轉並不是在iOS中完成的。
,您可以撥打這些XML文件非常相似。
rotate_out.xml
<?xml version="1.0" encoding="utf-8"?>
<scale
android:duration="300"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.0"
android:toYScale="0.90" />
<alpha
android:duration="1"
android:fromAlpha="1.0"
android:startOffset="500"
android:toAlpha="0.0" />
rotate_in.xml
<?xml version="1.0" encoding="utf-8"?>
<scale
android:duration="200"
android:fromXScale="0.0"
android:fromYScale="0.90"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="500"
android:toXScale="1.0"
android:toYScale="1.0" />
<alpha
android:duration="1"
android:fromAlpha="0.0"
android:startOffset="500"
android:toAlpha="1.0" />
在startActivity()或完成(後)你的代碼控過渡
然後:
overridePendingTransition(R.anim.rotate_in, R.anim.rotate_out);
這是旋轉,而不是翻轉 – Boy 2014-10-02 07:49:50
「很多其他的教程和示例代碼不會產生可信的3D翻轉。 y軸上的簡單旋轉並不是iOS中所做的。「 經過近30小時的搜索樣本,我不得不同意。 我有一部電影,在那裏我可以在中間截圖。 視圖的右側有: - 向左移動並縮小至95%。 視圖的左側有: - 向右側移動並縮小至80%。
的Android代碼:
// @param interpolatedTime The value of the normalized time (0.0 to 1.0)
// @param t The Transformation object to fill in with the current transforms.
protected void applyTransformation(float interpolatedTime, Transformation t){
float degrees = toDegree*interpolatedTime;
//float rad = (float) (degrees * Math.PI/180.0f);
Matrix matrix = t.getMatrix();
camera.save();
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);// M' = M * T(dx, dy)
matrix.postTranslate(centerX, centerY); // M' = T(dx, dy) * M
}
代碼的改進版本可以在最實施例中找到:
// @param interpolatedTime The value of the normalized time (0.0 to 1.0)
// @param t The Transformation object to fill in with the current transforms.
protected void applyTransformation(float interpolatedTime, Transformation t){
float degrees = toDegree*interpolatedTime;
//float rad = (float) (degrees * Math.PI/180.0f);
Matrix matrix = t.getMatrix();
camera.save();
camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);// M' = M * T(dx, dy)
matrix.postTranslate(centerX, centerY); // M' = T(dx, dy) * M
}
有些區別是: - 視圖的右側不會像iOS那樣移動。
我相信在Z軸的一個翻譯中不能解決問題。不知怎的,也許需要收縮。
float dz = (float) (centerX * Math.sin(rad));
camera.translate(0f, 0f, -dz);
還不夠。要收縮左側。
尋找android.R.anim in resp。 SDK版本文件夾,你可以找到一些例子。 – 2011-12-14 05:26:42