gpt4 book ai didi

java - Android TranslateAnimation 到中心

转载 作者:搜寻专家 更新时间:2023-11-01 07:35:49 25 4
gpt4 key购买 nike

我需要对 ImageView 应用平移动画,这个 ImageView 位于特定位置,我需要将其动画化到屏幕中央。这是我翻译的 xml 代码,但它不会将 ImageView 动画化到中心。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<translate
android:duration="500"
android:fromXDelta="0%p"
android:fromYDelta="0%p"
android:toXDelta="50%p"
android:toYDelta="50%p" />
</set>

这是 ImageView 所在的 XML:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/WelcomeLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/welcome_background"
android:orientation="vertical" >

<ImageView
android:id="@+id/welcome_innovaLogo"
android:layout_width="300dp"
android:layout_height="150dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="1dp"
android:layout_marginTop="5dp"
android:contentDescription="@string/welcome_innovaLogoString"
android:scaleType="fitXY"
android:src="@drawable/innova_logo" >
</ImageView>

<TextView
android:id="@+id/welcome_innovaInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/welcome_innovaLogo"
android:layout_marginTop="20dp"
android:layout_toRightOf="@+id/welcome_innovaLogo"
android:text="@string/welcome_innovaInfoString"
android:textColor="#9acd32"
android:textStyle="bold" />

<TextView
android:id="@+id/welcome_innovaHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/welcome_innovaInfo"
android:layout_marginRight="20dp"
android:text="@string/welcome_innovaHeaderString"
android:textColor="#9acd32"
android:textSize="20sp"
android:textStyle="italic" />

<ListView
android:id="@+id/welcome_commandsListView"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_below="@+id/welcome_innovaLogo"
android:layout_marginTop="40dp"
android:cacheColorHint="#00000000" />

<LinearLayout
android:id="@+id/welcome_loadingLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="450dp"
android:orientation="horizontal"
android:visibility="invisible" >

<ProgressBar
style="?android:attr/progressBarStyleSmall"
android:layout_width="50dp"
android:layout_height="50dp"
android:indeterminateDrawable="@drawable/progress_large" />

<TextView
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_marginLeft="10dp"
android:gravity="center_vertical"
android:text="Loading Data..."
android:textColor="@color/green_color"
android:textSize="19sp" >
</TextView>
</LinearLayout>

<!--
<fragment
android:id="@+id/welcome_facebookFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/welcome_innovaLogo"
android:layout_marginLeft="20dp"
android:layout_marginTop="?android:attr/actionBarSize"
android:layout_toRightOf="@+id/welcome_commandsListView"
class="innovaEgypt.com.Welcome.FacebookFragment" >
</fragment>
-->

最佳答案

看看this问题。我给出了类似的答案,但动画不是来自 xml,而是来自代码。希望对您有所帮助。


编辑:

您的问题是动画没有考虑图像尺寸。动画以 ImageView 的原点坐标为中心。

我仍然建议我的解决方案。

我尝试了我链接的答案中的代码并且它有效。只需复制此函数:

private void moveViewToScreenCenter( View view )
{
RelativeLayout root = (RelativeLayout) findViewById( R.id.WelcomeLayout );
DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics( dm );
int statusBarOffset = dm.heightPixels - root.getMeasuredHeight();

int originalPos[] = new int[2];
view.getLocationOnScreen( originalPos );

int xDest = dm.widthPixels/2;
xDest -= (view.getMeasuredWidth()/2);
int yDest = dm.heightPixels/2 - (view.getMeasuredHeight()/2) - statusBarOffset;

TranslateAnimation anim = new TranslateAnimation( 0, xDest - originalPos[0] , 0, yDest - originalPos[1] );
anim.setDuration(1000);
anim.setFillAfter( true );
view.startAnimation(anim);
}

并将您的 View 作为参数传递给它:

    ImageView img1 = (ImageView) findViewById( R.id.welcome_innovaLogo );
moveViewToScreenCenter(img1);

如果您的图像仍然消失,可能是因为它在您的其他小部件后面,例如 ListView。如果是这种情况,请在 Listview 之后重新构建定义 ImageView 的 xml 布局(只需剪切并粘贴 ImageView) .

关于java - Android TranslateAnimation 到中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com