在Android中,Fadein仅显示按钮文本
我使用以下代码仅淡入在Android中,Fadein仅显示按钮文本,android,android-layout,animation,button,Android,Android Layout,Animation,Button,我使用以下代码仅淡入按钮文本。但它给出了整个按钮的fadein Animation animationFadeIn = AnimationUtils.loadAnimation(this, R.anim.fade_in); //register btn listener m_btn_register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(
按钮
文本。但它给出了整个按钮的fadein
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);
}
});
淡入.xml
<?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>
实现这一点的正确方法是什么?将代码更改为这种方式
<?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
gloabal.我认为没有使用Animation API的解决方案,因为它在视图上工作,并且不考虑它的内容
因此,我认为您应该为按钮创建容器视图,并为新容器添加按钮背景。
然后将按钮背景设置为透明
之后,仅为按钮制作动画。注意:对棒棒糖和更高版本的按钮使用自定义跨距不起作用。这个也有
<Button
android:textAllCaps="false"
自定义属性
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();
}
};
Gif可能的重复您希望文本的每个字符都淡入吗?没有像这样的完整文本这是我的字符串
好的。这可以通过Spanable字符串完成。让我把我的解决方案贴出来吧。我会检查的。这也是动画整个视图。我只需要动画按钮文本我看到你的输出捕捉。这正是我想要的。非常感谢。我会在星期一检查,然后我会确认你。酷。我几个小时前就有了解决办法。我面临的唯一问题是不能吃棒棒糖或更高的东西。所以我被卡住了。后来我才知道,在棒棒糖中,他们去掉了按钮上的自定义跨距,以符合材料设计准则。别忘了检查一下便条。同时检查你的目标api。我的目标是棉花糖。不可能?有效。但必须添加
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();
}
});