片段内的 3d 翻转动画
3d flip animation inside a fragment
我想在片段内的两个图像视图上实现 3d 翻转动画。
我有两个人体图像,即正面和背面。我想要的是在用户单击按钮时将前面的图像翻转到后面。所有这些都在标签片段中。
我搜索了 1 个多小时,但没有得到任何有用的信息。
我得到了一些与 hoe 相关的结果,以实现带有片段的 3d 翻转动画,但没有得到任何与我想要的相关的结果。
谁能帮我解决这个问题?
谢谢
"Flip" 动画与 ObjectAnimator
相当简单。一个示例实现可以是:
ObjectAnimator animator = ObjectAnimator.ofFloat(mImageView, "rotationY", 0F, 360F);
animator.setDuration(1000);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.start();
这应该翻转你的 ImageView
并给你一个开始的地方。
编辑: 你也许可以将第一个 ImageView
翻转为 180F
(这样它实际上就变得不可见了),然后使用 AnimatorListener
在第二个 ImageView
上开始另一个翻转,同样是 180F
,所以看起来一个图像已经过渡到另一个图像。
我觉得你看起来像这样。
image1 = (ImageView) findViewById(R.id.ImageView01);
image2 = (ImageView) findViewById(R.id.ImageView02);
image2.setVisibility(View.GONE);
image1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (isFirstImage) {
applyRotation(0, 90);
isFirstImage = !isFirstImage;
} else {
applyRotation(0, -90);
isFirstImage = !isFirstImage;
}
}
});
private void applyRotation(float start, float end) {
// Find the center of image
final float centerX = image1.getWidth() / 2.0f;
final float centerY = image1.getHeight() / 2.0f;
// Create a new 3D rotation with the supplied parameter
// The animation listener is used to trigger the next animation
final Flip3dAnimation rotation =
new Flip3dAnimation(start, end, centerX, centerY);
rotation.setDuration(500);
rotation.setFillAfter(true);
rotation.setInterpolator(new AccelerateInterpolator());
rotation.setAnimationListener(new DisplayNextView(isFirstImage, image1, image2));
if (isFirstImage)
{
image1.startAnimation(rotation);
} else {
image2.startAnimation(rotation);
}
}
你可以从这里找到完整的源代码
http://www.inter-fuser.com/2009/08/android-animations-3d-flip.html
希望对你有帮助you.Good运气
我想在片段内的两个图像视图上实现 3d 翻转动画。 我有两个人体图像,即正面和背面。我想要的是在用户单击按钮时将前面的图像翻转到后面。所有这些都在标签片段中。
我搜索了 1 个多小时,但没有得到任何有用的信息。 我得到了一些与 hoe 相关的结果,以实现带有片段的 3d 翻转动画,但没有得到任何与我想要的相关的结果。
谁能帮我解决这个问题?
谢谢
"Flip" 动画与 ObjectAnimator
相当简单。一个示例实现可以是:
ObjectAnimator animator = ObjectAnimator.ofFloat(mImageView, "rotationY", 0F, 360F);
animator.setDuration(1000);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.start();
这应该翻转你的 ImageView
并给你一个开始的地方。
编辑: 你也许可以将第一个 ImageView
翻转为 180F
(这样它实际上就变得不可见了),然后使用 AnimatorListener
在第二个 ImageView
上开始另一个翻转,同样是 180F
,所以看起来一个图像已经过渡到另一个图像。
我觉得你看起来像这样。
image1 = (ImageView) findViewById(R.id.ImageView01);
image2 = (ImageView) findViewById(R.id.ImageView02);
image2.setVisibility(View.GONE);
image1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (isFirstImage) {
applyRotation(0, 90);
isFirstImage = !isFirstImage;
} else {
applyRotation(0, -90);
isFirstImage = !isFirstImage;
}
}
});
private void applyRotation(float start, float end) {
// Find the center of image
final float centerX = image1.getWidth() / 2.0f;
final float centerY = image1.getHeight() / 2.0f;
// Create a new 3D rotation with the supplied parameter
// The animation listener is used to trigger the next animation
final Flip3dAnimation rotation =
new Flip3dAnimation(start, end, centerX, centerY);
rotation.setDuration(500);
rotation.setFillAfter(true);
rotation.setInterpolator(new AccelerateInterpolator());
rotation.setAnimationListener(new DisplayNextView(isFirstImage, image1, image2));
if (isFirstImage)
{
image1.startAnimation(rotation);
} else {
image2.startAnimation(rotation);
}
}
你可以从这里找到完整的源代码 http://www.inter-fuser.com/2009/08/android-animations-3d-flip.html
希望对你有帮助you.Good运气