首先请原谅我这个问题。
我是Android动画的新手。
我想要一个视图让我们说一个图像视图(带有动画,即平滑移动)将一个位置永久移动到屏幕的某个其他位置,让我们说当前 X坐标到X + 50并且类似地Y协调到Y + 50 。我能够使用XML翻译动画文件移动但之后无法获得点击事件。我能够在布局中的原始位置获得点击事件而不是从翻译位置。
有人能引导我走上正轨吗?
提前致谢。
答案 0 :(得分:3)
您使用的动画已弃用。我展示了ObjectAnimator类的示例......此示例位于片段中,因此我编写了整个onCreateView。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main_screen, container, false);
ImageView image = (ImageView) rootView.findViewById(R.id.image);
ObjectAnimator translationY = ObjectAnimator.ofFloat(image, "translationY", 100);
translationY.setInterpolator(new AccelerateInterpolator());
ObjectAnimator translationX = ObjectAnimator.ofFloat(image, "translationX", 100);
translationX.setInterpolator(new AccelerateInterpolator());
AnimatorSet as = new AnimatorSet();
as.playTogether(translationX, translationY);
as.setDuration(2000);
as.start();
image.setOnClickListener(new View.OnClickListener() {
int sum = 0;
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Clicked: " + sum++, Toast.LENGTH_SHORT).show();
}
});
return rootView;
}
答案 1 :(得分:2)
以编程方式进行动画制作。试试这个代码。这可能会有所帮助
TranslateAnimation translateAnimation = new TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta);
translateAnimation.setDuration(500);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
//before animation
}
@Override
public void onAnimationEnd(Animation animation) {
//after animation
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
imageView.startAnimation(translateAnimation);
答案 2 :(得分:0)
您可能正在使用view.startAnimation();
。这里的关键是以编程方式进行animation
。
DO
Animation animation = AnimationUtils.loadAnimation (this.context, R.anim.your_translate_animation);
animation .setStartOffset (2000);
yourView.startAnimation (animation);
animation.setAnimationListener (new AnimationListener () {
@Override
public void onAnimationStart (Animation animation) {
}
@Override
public void onAnimationRepeat (Animation animation) {
}
@Override
public void onAnimationEnd (Animation animation) {
//do you click functionality here...
}
});
P.S。如果要以编程方式单击视图
DO
yourView.performClick();