3

我有一个显示“登录”的按钮。当用户点击它时,它会弹出一个警告对话框,其中包含用户登录信息。一旦用户输入他们的信息并点击 OK,按钮就会伸展到包含“欢迎,[用户名]”所需的宽度。我想要做的是将按钮宽度从“登录”更改为“欢迎,[用户名]”的动画。

我用九个补丁制作了按钮背景,如果我在 xml 文件中指定不同的宽度,它可以完美地工作。当我尝试将宽度从默认宽度更改为更长的宽度时,它只会像普通的 .png 而不是 9.png 一样拉伸。

这是我用来从一个静态宽度拉伸到另一个静态宽度的代码:

<Button
    android:id="@+id/signIn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:background="@drawable/button_nine_patch"
    android:textSize="20dip"
    android:layout_marginBottom="-2dip" />

 ScaleAnimation stretch = new ScaleAnimation(1.0f ,10.0f, 1.0f, 1.0f);

 this.signIn = (Button) this.findViewById(R.id.signIn);
 this.signIn.setOnClickListener(this);

 stretch.setDuration(2000);
 signIn.startAnimation(stretch);

因为我不知道一个人的名字有多少个字母,所以我需要能够从代码中设置按钮的最终宽度。

我疯狂地用谷歌搜索并浏览了所有的android文档,但我找不到这个问题的答案。

任何帮助将非常感激。

4

1 回答 1

1

当 Android 在视图上进行动画处理时,它会为当前视图而不是实际视图的位图表示动画。为视图设置动画需要处理视图周围的组件,并且成本会高得多。虽然这通常是有益的,但在您的情况下,它会将 9patch 变成任何旧位图,因此不会给您想要的结果。

我不知道有什么方法可以只转换视图的特定区域,并且在这里有一个专门针对此的问题:拉伸/缩放视图/位图的特定区域

于 2013-04-26T01:01:22.800 回答