Java View.getTranslationX/Y()是否等效?
我目前正在做一个小项目,需要帮助(显然)。该项目本身涉及到我用JellyBean BeanBag easteregg创建一个独立的应用程序,并且已经成功地做到了这一点,但是我还想创建并维护与2.3 sdk的兼容性,并且还使用Nineodeldroids库成功地做到了这一点。2.3 API不支持setScaleX()或setScaleY()方法,因此我做了以下更改: 从 到 这个问题来自于ViewHelper setScale,它需要一个视图参数,而普通调用只需要一个浮点值。我试过使用Java View.getTranslationX/Y()是否等效?,java,android,android-view,Java,Android,Android View,我目前正在做一个小项目,需要帮助(显然)。该项目本身涉及到我用JellyBean BeanBag easteregg创建一个独立的应用程序,并且已经成功地做到了这一点,但是我还想创建并维护与2.3 sdk的兼容性,并且还使用Nineodeldroids库成功地做到了这一点。2.3 API不支持setScaleX()或setScaleY()方法,因此我做了以下更改: 从 到 这个问题来自于ViewHelper setScale,它需要一个视图参数,而普通调用只需要一个浮点值。我试过使用
for (int i=0; i<getChildCount(); i++) {
View v = getChildAt(i);
ViewHelper.setScaleX(v,scale); ViewHelper.setScaleY(v,scale);
}
用于(int i=0;i您只初始化了一次scale
。为什么您希望循环中的每一个都不同?将scale
初始化移动到循环中。我尝试使用您的建议,但仍然收到相同的结果,您能提供一个示例说明您的意思吗?简单地将其移动到循环中并没有这样做lve您是否记录了每次初始化的scale
值?这应该很简单。如果scale
值相同,那么它们当然都是相同的比例。您的建议引导了我正确的方向,并最终解决了问题
final float scale = lerp(MIN_SCALE,MAX_SCALE,z);
ViewHelper.setScaleX(v,scale); ViewHelper.setScaleY(v,scale);
for (int i=0; i<getChildCount(); i++) {
View v = getChildAt(i);
ViewHelper.setScaleX(v,scale); ViewHelper.setScaleY(v,scale);
}
static Random sRNG = new Random();
static float MIN_SCALE = 0.2f;
static float MAX_SCALE = 1f;
static float lerp(float a, float b, float f) {
return (b-a)*f + a;
}
static float randfrange(float a, float b) {
return lerp(a, b, sRNG.nextFloat());
}
for (int i=0; i<getChildCount(); i++ ) {
View v = getChildAt(i);
float scale = randfrange(MIN_SCALE,MAX_SCALE);
ViewHelper.setScaleX(v,scale); ViewHelper.setScaleY(v,scale);
}