TranslateAnimation在Imageview之外剪切图像

时间:2011-09-19 11:00:29

标签: android imageview

我正在使用TranslateAnimation将图像移动后居中,问题是如果动画启动时图像的一部分位于视图之外,它在动画期间将不可见:

我的代码:

        TranslateAnimation trans = new TranslateAnimation(0, deltaX, 0,
                deltaY);
        trans.setDuration(250);
        trans.setInterpolator(new AccelerateInterpolator(1.0f));
        this.startAnimation(trans);

修改

首先将图像居中,然后将动画从原始位置绘制到中心,解决方法如下:

        setVisibility(INVISIBLE);
        //A void that centers the image inside the view
        center(true, true);
        TranslateAnimation trans = new TranslateAnimation(-deltaX, 0,-deltaY, 0);
        trans.setDuration(250);
        trans.setInterpolator(new AccelerateInterpolator(1.0f));
        this.startAnimation(trans);
        setVisibility(VISIBLE);

1 个答案:

答案 0 :(得分:1)

根据我的理解,android不会绘制在屏幕上看不到的视图的一部分。将动画应用于视图时,只有像素在视图保留在旧位置时才会移位,这应该是问题,因为只有图像的可见像素才会移位。

我的想法是添加一个动画侦听器并覆盖animationStart方法并手动将视图添加到相关位置,或者您也可以在调用开始动画之前尝试此操作。 这可能有用。