Android - 按钮旋转/旋转' loading'按下时的图像

时间:2012-11-07 12:11:31

标签: android android-animation android-ui

我的应用上有一个很大的“登录”按钮。当用户点击此按钮时,我想用“登录...”替换文本,将其对齐到左边而不是中心,并在右边放一个旋转的圆圈(但仍然在按钮内)。我想在我的应用程序的其他地方使用基本相同的按钮(但具有不同的初始和加载文本)。

最好的方法是什么?对于实际旋转图形,我计划使用Android附带的@drawable/spinner_white_16

感谢。

3 个答案:

答案 0 :(得分:9)

您可以使用包含TextView和ImageView的RelativeLayout创建自己的按钮。

<RelativeLayout android:id="@+id/login"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    onClick="[yourLoginMethod]" >

    <TextView android:id="@+id/login_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Log In" />

    <ImageView android:id="@+id/login_loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/login_text"
        android:visibility="gone" />

</RelativeLayout>

然后在调用任何登录方法时,更改TextView的内容,使其右对齐,并将ImageView可见性设置为可见。

loginText.setText("Logging In...");
LayoutParams params = loginText.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
loginText.setLayoutParams(params);
loginLoading.setVisibility(View.VISIBLE);

然后我还会有一些代码可以在登录失败时撤消这些更改。

答案 1 :(得分:6)

这是我想出的一个实现,希望它可以重用:

ProgressButton

此刻,当用户点击该按钮时,它会为您显示可绘制(和动画),但是您必须在完成后台任务后手动关闭加载动画:

_progressButton.stopLoadingAnimation();

这将为您关闭任何动画并显示之前的任何文本。唯一缺少它的是动画正在进行中没有文字,但我认为你可以一起破解一些东西。我计划进一步扩展它,以便它可以调用类似_progressButton.setProgress(10)的内容,然后设置完成的百分比。我甚至可以让它安全线程。

这样您就不必使用多个布局并在按钮顶部嵌入任何文本视图,而且全部都是为您处理的。

答案 2 :(得分:3)

创建您自己的按钮,该按钮由一个居中的TextViewGONE ImageView组成。点击向左移动TextView,然后在您的可绘制内容显示ImageView