Fadein只有Android中的按钮文字

时间:2016-10-22 12:18:27

标签: android android-layout animation button

我使用以下代码仅淡入Button文本。但它为整个Animation animationFadeIn = AnimationUtils.loadAnimation(this, R.anim.fade_in); //register btn listener m_btn_register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { m_btn_register.startAnimation(animationFadeIn); } }); 提供了fadein。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<alpha
    android:fromAlpha="0.1"
    android:toAlpha="1.0"
    android:duration="2000"
    />
</set>

fade_in.xml

hive (human_resources)> show partitions employees ;
OK
country=IN/state=PU
country=US/state=CA
country=US/state=IL
Time taken: 0.119 seconds, Fetched: 3 row(s)

实现这一目标的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

注意:按钮的自定义跨度不适用于棒棒糖及以上。有这个

 <Button
    android:textAllCaps="false"

我的CustomSpan

public class CustomSpan extends CharacterStyle implements UpdateAppearance {

    private int alpha;

    public int getAlpha() {
        return alpha;
    }

    public void setAlpha(int alpha) {
        this.alpha = alpha;
    }

    public CustomSpan() {

    }

    @Override
    public void updateDrawState(TextPaint paint) {
        paint.setAlpha(alpha);

    }
}

自定义属性

 private static final Property<CustomSpan, Integer> FADE_INT_PROPERTY
        = new Property<CustomSpan, Integer>(Integer.class, "FADE_INT_PROPERTY") {

    @Override
    public void set(CustomSpan span, Integer value) {
        span.setAlpha(value);
    }
    @Override
    public Integer get(CustomSpan object) {
        return object.getAlpha();
    }
};

然后

String text = button.getText().toString();

final CustomSpan span = new CustomSpan();
final SpannableString spannableString = new SpannableString(text);

int start = 0;
int end = text.length();
spannableString.setSpan(span, start, end, 0);
button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ObjectAnimator objectAnimator = ObjectAnimator.ofInt(
                    span, FADE_INT_PROPERTY, 0, 255);
            objectAnimator.setEvaluator(new IntEvaluator());
            objectAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    button.setText(spannableString);
                }
            });
            objectAnimator.setDuration(10000);
            objectAnimator.start();

        }
    });

Gif enter image description here

答案 1 :(得分:0)

以这种方式更改您的代码

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

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:duration="@android:integer/config_shortAnimTime"
           android:pivotX="50.0%"
           android:pivotY="50.0%"
           android:fromXScale="1.0"
           android:toXScale="0.9"
           android:fromYScale="1.0"
           android:toYScale="0.9"/>
    <alpha android:duration="@android:integer/config_shortAnimTime"
            android:fromAlpha="1.0"
            android:toAlpha="0.7"/>
</set>

还有一件事宣称Animation是全球性的。

答案 2 :(得分:0)

我认为没有使用动画API 的解决方案,因为它适用于视图,并且不会处理它的内容。

因此,我认为您应该为按钮创建容器视图,并为新容器添加按钮背景。 然后将按钮背景设置为透明。

之后,仅为按钮制作动画。