Android在没有动画的情况下设置Imageview位置
我有这个图像视图Android在没有动画的情况下设置Imageview位置,android,xml,android-layout,imageview,Android,Xml,Android Layout,Imageview,我有这个图像视图 activity1.xml <ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="300dp" android:layout_alignParentLeft="true" android:layout_centerVertical="tr
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" />
<?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>
<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" />
<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" />
有了这个结果
我用这个动画为它制作动画anim.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" />
<?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>
<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" />
<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" />
因此,我得到:
但是,在我的其他活动中,如果不使用动画,我如何能够拥有与ImageView相同的位置?Activity2.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" />
<?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>
<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" />
<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" />
因为当我尝试的时候我得到了
我搜索两个活动之间imageview的相同位置
感谢您在这两项活动中将android:layout\u height=“300dp”替换为
android:layout\u height=“wrap\u 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="300dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:src="@drawable/logobrand"
android:visibility="visible" />
<?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>
<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" />
<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" />
希望对您有所帮助您可以使用以下方法计算布局的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);
我希望这会有所帮助。
android:layout\u centerHorizontal
不应该改为android:layout\u centerVertical
?听起来你需要在第二个活动中模拟动画图像的最终位置。你能不能改变高度来包装内容,用marginTop来达到同样的位置?