Android的 - 按钮与按下时旋转/旋转“加载”的形象(Android - Button wit

2019-08-02 10:26发布

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

什么是做到这一点的最巧妙的方法? 对于实际的纺纱图形,我正打算使用@drawable/spinner_white_16自带了Android。

谢谢。

Answer 1:

您可以使用含有一个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);

然后,我也有一些代码,如果登录失败,从而推翻这些变化。



Answer 2:

下面是我想出了,希望它的可重复使用的实现:

ProgressButton

目前,当用户点击该按钮,它会显示绘制(和动画),为你,但你必须手动关闭该加载动画一旦你通过你的后台任务完成:

_progressButton.stopLoadingAnimation();

这将驳回任何您动画和显示之前的文本在那里。 缺少它,没有文字,而动画的唯一的事情是在进步,但我认为你们可以一起砍东西的那个。 我打算进一步扩大这一点,所以,它将使你打电话像_progressButton.setProgress(10)然后设置完成的百分比。 我甚至可以让它线程安全的。

这样,您就不必使用多个布局和嵌入按钮的顶部的任何textviews,它都为你处理。



Answer 3:

创建自己的按钮,这将会由中心的TextViewGONE ImageView 。 点击移动后TextView到左侧,使ImageView你绘制可见。



文章来源: Android - Button with rotating/spinning 'loading' image when pressed