从右到左翻译Android中的动画问题

时间:2011-03-08 09:46:38

标签: android animation

我的父级布局的右边框或底边框放置的图像动画有问题。

此图像在动画时裁剪。

第一张图片是原始图片,第二张图片应该看起来相同,但是因为图像的一部分位于右边框之外,所以会裁剪。

Look example here

底边的情况相同。

动画:

public void onClickDo(View view) {
    ImageView img = (ImageView) findViewById(R.id.imageView2);

    TranslateAnimation anim = new TranslateAnimation(0f, -100f, 0f, 0f);
    anim.setDuration(1000);

    img.startAnimation(anim);
}

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <RelativeLayout android:layout_width="fill_parent" android:id="@+id/relativeLayout1" android:layout_height="wrap_content">
        <ImageView android:id="@+id/imageView1" android:src="@drawable/problem" android:layout_width="100dip" android:layout_height="100dip"></ImageView>
        <ImageView android:id="@+id/imageView2" android:src="@drawable/problem" android:layout_height="100dip" android:layout_width="100dip" android:layout_marginLeft="250dip" android:scaleType="matrix" android:layout_marginTop="110dip"></ImageView>
        <Button android:layout_alignParentBottom="true" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/button1" android:text="Button" android:onClick="onClickDo"></Button>
    </RelativeLayout>
</LinearLayout>

3 个答案:

答案 0 :(得分:1)

尝试使用android:layout_alignParentRight="true" for imageview2

<ImageView android:id="@+id/imageView2" android:src="@drawable/problem" android:layout_height="100dip" android:layout_width="100dip" android:scaleType="matrix" android:layout_alignParentRight="true" android:layout_toRightOf="@+id/imageView1"></ImageView>

答案 1 :(得分:0)

当我有两个共享相同动画的对象(布局,视图或其他东西)时,我遇到了类似的问题。

例如:

Image1.startAnimation(myAnimation);
Image2.startAnimation(myAnimation);

myAnimation有setAnimationListener,其中设置了onAnimationEnd

所以即使你在另一个Android之后开始动画也会遇到问题并且会有些迟钝。

答案 2 :(得分:0)

为LinearLayout和RelativeLayout执行此操作:

android:clipChildren="false"

要以编程方式执行此操作:

myLinearLayout.setClipChildren(false);
myRelativeLayout.setClipChildren(false);