我计划在双向滚动视图上执行旋转动画(请参阅link)。我已经获得了2向滚动视图的效果,但是现在当我执行Filp3D类型的动画时(参见link)我正在获得一个旋转窗口!
我实际上想围绕x轴动画执行旋转,然后执行连续动画。
我的代码是:
public class MainActivity extends Activity {
ScrollView sv;
WScrollView hsv;
Animation anim;
RelativeLayout rl;
Button b1,b2,b3;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
/*BIDIRECTIONAL SCROLLVIEW*/
sv = new ScrollView(this);
hsv = new WScrollView(this);
hsv.sv = sv;
/*END OF BIDIRECTIONAL SCROLLVIEW*/
rl = new RelativeLayout(this);
rl.setBackgroundResource(R.drawable.interactivemap);
sv.addView(rl, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
hsv.addView(sv, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT /*or FILL_PARENT if API < 8*/));
setContentView(hsv);
Window window = getWindow();
window.setLayout(0, LayoutParams.WRAP_CONTENT);
/* Animation Effects : Stage I */
applyRotation(0, 45);
/* Animation Effects : Stage II */
/* Still to perform ! */
}
private void applyRotation(final float start, final float end) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
final float centerX = hsv.getWidth() / 2.0f + hsv.getLeft();
final float centerY = hsv.getHeight() / 2.0f + hsv.getTop();
Log.e("center-x center-y ",centerX+" "+centerY+"found");
final Flip3dAnimation rotation = new Flip3dAnimation(start, end, centerX, centerY);
rotation.setDuration(2000);
rotation.setFillAfter(true);
rotation.setInterpolator(new LinearInterpolator());
hsv.startAnimation(rotation);
}
}, 10);
}
}
输出:
1)输出有时是围绕不同轴的动画然后变得不可见,好像我没有放任何setFillAfter(true),恰好出现在Flip3dAnimation类中,如图2所示方向滚动视图链接。
2)动画出现并持续存在,但只有原始窗口在3d空间中旋转,就像卡片翻转45度一样!
我需要第二个输出带有任何窗口限制,因为我使用滚动视图(2d),我希望像AOE(帝国时代,严肃地说,人们玩游戏: D),或非游戏,开放的2d表面。
请指导我实现同样的目标,同时请指导我为API-8或9执行复杂的2D动画的源代码。