Android中并没有提供直接做3D翻转的动画,所以关于3D翻转的动画效果需要我们自己实现。这里我列举一个最简单翻转动画的例子。
创建一个activity,布局就用最简单的,里面放一个textView,如下
在activity中定义一个叫Rotate3d的自定义动画继承animation。这样点击这个textview后,就会产生动画了。
代码非常简单,其中,自定义动画主要是实现applyTransformation方法,在动画时,每一次重绘图形的时候都要调用这个方法去计算这个视图的矩阵,也就是Matrix类。而Camera类负责的是计算视图在平面上的投影。
Mapublic class MainActivity extends Activity {
private TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView ) findViewById(R.id.text);
text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
init();
}
});
}
private void init() {
Rotate3d rotate = new Rotate3d();
rotate.setDuration(1000);
text.startAnimation(rotate);
}
class Rotate3d extends Animation {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
Matrix matrix = t.getMatrix();
Camera camera = new Camera();
camera.rotateY(180 * interpolatedTime);
camera.getMatrix(matrix);
}
}
}