文本视图上的 Android 缩放动画会导致文本移动

dra*_*awk 3 android android-animation

我有一个动画定义为

规模.xml

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
          android:fromXScale="1.0"
          android:fromYScale="1.0"
          android:toXScale="2.0"
          android:toYScale="2.0"
          android:duration="3000">        
    </scale>
</set>
Run Code Online (Sandbox Code Playgroud)

这是通过编程添加的

TextView tv2 = (TextView) pw.getContentView().findViewById(R.id.playresultPopupYardsTextView);
Animation scale = AnimationUtils.loadAnimation(this, R.anim.scale);
scale.setStartOffset(5000);
scale.setFillAfter(true);
tv2.clearAnimation();
tv2.setAnimation(scale);
Run Code Online (Sandbox Code Playgroud)

pw 是一个 PopupWindow 定义为

LayoutInflater inflater = (LayoutInflater) this.getSystemService(view.getContext().LAYOUT_INFLATER_SERVICE);                
            final PopupWindow pw = new PopupWindow(
               inflater.inflate(R.layout.playresult_popup, null, false), 
               700, 
               300, 
               true);
Run Code Online (Sandbox Code Playgroud)

布局如下 playresult_popup.xl

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:padding="10dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#CC667788"
    >

    <TextView
        android:id="@+id/playresultPopupPlaysTextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:gravity="center_horizontal"
        android:textStyle="bold"
        android:textColor="#FFFFFF"
        android:textSize="22sp"
        android:text=""
    />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:gravity="center_horizontal"
        android:textStyle="bold"
        android:textColor="#FFFFFF"
        android:textSize="18sp"
        android:text="Yards Gained"
    />        


    <TextView
        android:id="@+id/playresultPopupYardsTextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:gravity="center_horizontal"
        android:textStyle="bold"
        android:textColor="#FFFFFF"
        android:textSize="18sp"
        android:text=""
    />        

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

当缩放动画运行时,它会按预期缩放文本,但每一步都会向弹出窗口的右侧移动。我想知道这是否是因为我没有声明枢轴点 - 如果是这样,如何获得正确的枢轴点来使用,以便文本保持在原位,只是按比例缩放?

我已经搜索过,但无法找到解释。

dra*_*awk 5

我明白了这一点。我没有意识到您可以使用枢轴点的百分比值。添加pivotX =“50%”和pivotY =“50%”解决了这个问题。所以:

<scale android:fromXScale="1.0"
       android:fromYScale="1.0"
       android:toXScale="2.0"
       android:toYScale="2.0"
       android:pivotX="50%"
       android:pivotY="50%"
       android:duration="3000">
</scale>
Run Code Online (Sandbox Code Playgroud)