我使用NineOldAndroids‘ObjectAnimators在Android v2标记中使用以下代码淡出:
mMarkerSelected = mMap.addMarker(new MarkerOptions()
.position(location.getLatLng())
.title(location.getName())
.snippet(location.getId())
.icon(BitmapDescriptorFactory.defaultMarker(location.getMarkerHue())));
mMarkerSelected.setAlpha(0.0f);
ObjectAnimator.ofFloat(mMarkerSelected, "alpha", 0.0f, 1.f)
.setDuration(300).start();这完全适用于apk的可调试版本。
然而,当我签署我的apk和使用ProGuard时,突然标记不会消失。我的猜测是,alpha属性已被混淆,因此将"alpha"传递到ObjectAnimator.ofFloat与Marker的模糊alpha属性不匹配。如何让动画在使用ProGuard时工作?
为了完整起见,这是我的Pro卫士规则的唯一内容。
-dontwarn com.squareup.okhttp.**发布于 2014-03-01 21:25:51
它使用反射,因此需要完整的方法名,即setAlpha(),如下所示:
# This is due to ObjectAnimator using reflection to access get/sets
-keep class com.your.package.ClassThatUsesObjectAnimator { *; }发布于 2014-12-20 20:26:45
Nineolddroids库已经是开源的,所以在它上运行程序是毫无意义的。
如果您可以在混淆您自己的源文件和第三方开源库之间进行选择,那么选择您自己的源文件是明智的。
将这些行添加到您的proguard-project.txt中,您的应用程序就会正常工作。
## Nineolddroid related classes to ignore
-keep class com.nineoldandroids.animation.** { *; }
-keep interface com.nineoldandroids.animation.** { *; }
-keep class com.nineoldandroids.view.** { *; }
-keep interface com.nineoldandroids.view.** { *; }https://stackoverflow.com/questions/22120546
复制相似问题