首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NineOldAndroids ObjectAnimators不使用ProGuard和签名的apk

NineOldAndroids ObjectAnimators不使用ProGuard和签名的apk
EN

Stack Overflow用户
提问于 2014-03-01 21:22:02
回答 2查看 2.8K关注 0票数 5

我使用NineOldAndroids‘ObjectAnimators在Android v2标记中使用以下代码淡出:

代码语言:javascript
复制
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.ofFloatMarker的模糊alpha属性不匹配。如何让动画在使用ProGuard时工作?

为了完整起见,这是我的Pro卫士规则的唯一内容。

代码语言:javascript
复制
-dontwarn com.squareup.okhttp.**
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-01 21:25:51

它使用反射,因此需要完整的方法名,即setAlpha(),如下所示:

代码语言:javascript
复制
 # This is due to ObjectAnimator using reflection to access get/sets
 -keep class com.your.package.ClassThatUsesObjectAnimator { *; }
票数 11
EN

Stack Overflow用户

发布于 2014-12-20 20:26:45

Nineolddroids库已经是开源的,所以在它上运行程序是毫无意义的。

如果您可以在混淆您自己的源文件和第三方开源库之间进行选择,那么选择您自己的源文件是明智的。

将这些行添加到您的proguard-project.txt中,您的应用程序就会正常工作。

代码语言:javascript
复制
## 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.** { *; }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22120546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档