如何在Android中翻转像3D动画的图像?

时间:2011-12-01 11:11:48

标签: android view 3d viewflipper

我有3d图像,例如1-10图像

其中我有(1-5)图像从前到后的3d形状左侧病房和类似 从右到右病房(6-10)

如果我们看一下它们就形成了一个完整的三维形状,我想用它们左右滑动/翻转,以便显示该图像的完整三维视图。

我已经看过这个例子,但它远离我的视图鳍和滑动。 http://www.inter-fuser.com/2009/08/android-animations-3d-flip.html

任何人都指导我如何实现这个目标?

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

您可以通过在Raghav Chopra的3D翻转库https://code.google.com/p/android-3d-flip-view-transition上构建来添加逼真的3D翻转过渡。

有了这个,你所要做的就是不要打电话给flipper.showNext();来电AnimationFactory.flipTransition(flipper, FlipDirection.LEFT_RIGHT);,而你已经完成了。 3D动画很酷。

许多其他教程和示例代码(包括您正在使用的代码)都不会产生可信的3D翻转。在y轴上进行简单的旋转是不够的,所以看看上面的linke(或这个视频http://youtu.be/52mXHqX9f3Y)。

如果您希望自动转换,只需添加Handler,如:

Handler handler = new Handler();
...
handler.postDelayed(new Runnable() {
    AnimationFactory.flipTransition(flipper, FlipDirection.LEFT_RIGHT);
}, 500);

以上将无限期地翻转图像(循环回到最后的第一张图像)。要停止自动转换,请添加在开始翻转之前检查的布尔标记,或者保存您正在使用的Runnable并调用handler.removeCallbacks(runnable)

答案 1 :(得分:0)

用于翻转的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/flip_me"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Flip Me!"
/>
<ViewFlipper android:id="@+id/details"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="#FF00FF00"
android:text="This is the first panel"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="#FFFF0000"
android:text="This is the second panel"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="#FFFFFF00"
android:text="This is the third panel"
/>
</ViewFlipper>
</LinearLayout>

java Filee

public class FlipperDemo extends Activity {
ViewFlipper flipper;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
flipper=(ViewFlipper)findViewById(R.id.details);
Button btn=(Button)findViewById(R.id.flip_me);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
flipper.showNext();
}
});
}
}

这是手动翻转

结果是一项简单的活动:单击按钮,然后按顺序显示下一个TextView 显示,查看最后一个后环绕到第一个