我在 androids 动画类的 applyTransformation 方法中得到除以零的错误:
05-15 21:13:59.330: E/AndroidRuntime(16997): java.lang.ArithmeticException: divide by zero
05-15 21:13:59.330: E/AndroidRuntime(16997): at com.special.ResideMenuDemo.FontResize.applyTransformation(FontResize.java:34)
这就是我的 applyTransformation 方法:
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
super.applyTransformation(interpolatedTime, t);
SpannableStringBuilder spanTxt = new SpannableStringBuilder("He");
int length = spanTxt.length();
for (int i = 0; i < length; i++) {
/*Log.e("Log", "length : " + length + "\r\n" +
"i : " + i + "\r\n" +
"interpolatedTime : " + interpolatedTime);*/
float size = 1 / (1 / length * (i+1)) * interpolatedTime;
if(size >= 1)
continue;
spanTxt.setSpan(new RelativeSizeSpan( size ), i, i+1, 0 );
}
text.setText(spanTxt);
}
如果 interpolatedTime 为 0,则第一个字母的大小应为 0
float size = 1 / (1 / length * (i+1)) * interpolatedTime;
float size = 1 / (1 / 2 * (0 + 1)) * 0,0;
但我得到的错误除以零
最佳答案
您正在使用 1/2
执行整数除法,这在 Java 中会产生另一个整数 0
,从而导致除以零错误。
将 1
指定为 float
文字 1.0f
,以强制从一开始就进行浮点运算。
float size = 1 / (1.0f / length * (i+1)) * interpolatedTime;
关于java - applyTransformation 上除以零错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23687083/