Android Set Imageview位置没有动画

时间:2014-10-15 09:20:35

标签: android xml android-layout imageview

我有这个Imageview
activity1.xml

       <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/logobrand"
        android:visibility="visible" />

有了这个结果

enter image description here

我用这个动画制作动画
anim.xml

<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">

    <translate
    android:fromXDelta="0%p"
    android:toYDelta="-35%p"
    android:duration="1000" />
</set>

所以我得到了:

enter image description here

但是在我的其他活动中,我如何在不使用动画的情况下拥有相同的ImageView位置? 的 Activity2.xml

<ImageView
      android:id="@+id/imageView1"
      android:layout_width="match_parent"
      android:layout_height="300dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:src="@drawable/logobrand"
      android:visibility="visible" />

因为当我试着获得那个......

enter image description here

我搜索两个活动之间的imageview相同的位置 感谢

2 个答案:

答案 0 :(得分:0)

两项活动中的

android:layout_height="300dp"替换为android:layout_height="wrap_content"
并添加第二个活动android:layout_marginto="Xdp"看起来像第一个活动!

<强> activity1.xml

<ImageView
  android:id="@+id/imageView1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_alignParentLeft="true"
  android:layout_centerVertical="true"
  android:src="@drawable/logobrand"
  android:visibility="visible" />


activity2.xml

<ImageView
  android:id="@+id/imageView1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_alignParentTop="true"
  android:layout_centerHorizontal="true"
  android:layout_marginTop="35dp"
  android:src="@drawable/logobrand"
  android:visibility="visible" />

希望得到帮助

答案 1 :(得分:0)

您可以使用以下方法计算布局的marginTop(无需更改任何内容):

   // waiting for layout to be created.
   new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            // top of your logo when when center vertical
            int originalPosition = iV1.getTop();
            System.out.println("original position :: " + originalPosition);

            // vertical upward shift using your animation property
            int verticalShift = (int) (parentView.getHeight() * 0.35f);    
            System.out.println("vertical shift :: " + verticalShift);

            // final margin from top
            int marginTop = originalPosition - verticalShift;
            System.out.println("actual margin top :: " + marginTop);

            // testing it on another view
            FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) iV2
                    .getLayoutParams();
            lp.setMargins(0, originalPosition - verticalShift, 0, 0);

            iV2.setLayoutParams(lp);

        }
    }, 100);

我希望这会有所帮助。