2

我想为从屏幕中心开始的 ImageView 设置动画,并将其向上移动到屏幕顶部下方 10 px。我怎样才能在代码中实现这一点?

我目前正在做的是,我正在将屏幕坐标放在另一个图像上,并将这个动画图像放在上面一点,但是在高密度的大屏幕中,它不会保持相同的距离,所以相反,我想将它从顶部移动 10px。

我怎样才能做到这一点?

这是我的代码:

//calculate where to put the logo in y-axis depending on screen size
            int coords[] = {0,0};
            logoImageFixed.getLocationOnScreen(coords);
            int y = coords[1];
            int imgFixedHeight = logoImageFixed.getHeight();
            Log.d("daim","height: "+imgFixedHeight);
            float pointY = -(y + 3*imgFixedHeight);

            Animation a = new LogoAnimation(0.0f, 0.0f, 0.0f, pointY);
            a.setFillAfter(true);
            a.setDuration(600);
            a.setAnimationListener(new AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {}
                @Override
                public void onAnimationRepeat(Animation animation) {}
                @Override
                public void onAnimationEnd(Animation animation) {
                    logoAnimated = true;
                }
            });
            logoImage.startAnimation(a);
4

1 回答 1

4

好吧,我认为您走在正确的道路上

int[] coords = {0,0};
logoImage.getLocationOnScreen(coords);
int y = coords[1];

//to top of screen  
TranslateAnimation toTop = new TranslateAnimation(0, 0, 0, -y);
toTop.setDuration(700);
toTop.setFillAfter(true);
logoImage.startAnimation(toTop);

但是如果你想增加 10 个像素的填充,你需要这样做

//padding 10 pixels from top    
TranslateAnimation toTop = new TranslateAnimation(0, 0, 0, ((-y) - 10));
toTop.setDuration(700);
toTop.setFillAfter(true);
logoImage.startAnimation(toTop);
于 2012-10-01T05:26:05.747 回答