可有人请给一个小白解释动画视图所以它的触摸区域和图像实际上一起移动的正确方法?
我已经阅读了大量的帖子和问题和教程,但没有解释什么是移动的布局和图像,这样我可以动画视图,然后让它在新的位置移动。
这是一个例子方法,我的工作,尝试许多不同的组合来没有成功。 该视图是在父RelativeLayout的。 它的图标可触摸菜单,并与上点击一个XML资源动画滑动关闭屏幕只留下一个小标签显示,它需要留到再次点击。
public void RetractTools (View v){
final ImageView finalImage1 = (ImageView) findViewById(R.id.paintsView);
Animation slideout = AnimationUtils.loadAnimation(this, R.anim.slideout_tools);
slideout.setFillAfter(true);
slideout.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
finalImage1.setEnabled(true);
optionMenu.showing = false;
optionMenu.inMotion = false;
finalImage1.layout(1258, 668, 1697, 752);
finalImage1.setRight(1280);
finalImage1.invalidate();
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationStart(Animation arg0) {
finalImage1.setEnabled(false);
}
});
optionMenu.inMotion = true;
v.startAnimation(slideout);
}// End RetractMenu
不管我怎么努力,我遇到的问题。 在XML文件中设置时setFillAfter什么都不做。 编程设置,它留下的图像在正确的地方,但触摸控制保持在菜单了。 我曾尝试setLeft和setRight这显然只是移动图像,而不是视图位置,以及各种不同的布局选项,并填写,没有填充和无效而不得,但不能解决它。 我显然不undersatnd需要位置的底层机制和渲染视图! :d
谢谢。
编辑:解决方案
对于遇到类似问题的人,这是怎么了,我发现相对于布局工作。 创建具有指定大小的LayoutParams对象,然后你可以将其指定位置。 例如。
final RelativeLayout.LayoutParams position = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
position.leftMargin = 440;
然后分配给您的看法
myView.setLayoutParams(position);
因此,在总结,你使用的LayoutParams对象为您的视图的位置的接口,而不是直接访问视图的坐标,因为我假设。