首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NineOldAndroids,旋转或移动后不可单击的视图

NineOldAndroids,旋转或移动后不可单击的视图
EN

Stack Overflow用户
提问于 2012-11-01 08:58:42
回答 1查看 4.3K关注 0票数 8

我使用NineOldAndroids 2.4.0来动画对象,主要是为了控制的移动和转换。在Android4.0和更高版本上都能正常工作,但是在之前的版本(2.1,2.3)中,动画元素不能接收焦点,也不能点击。样本代码:

代码语言:javascript
复制
View v = findViewById(R.id.button1);
v.setOnClickListener(new OnClickListener() {

     @Override
     public void onClick(View v) {
        Toast.makeText(MainActivity.this, "Click!", Toast.LENGTH_SHORT).show();
     }
});
ObjectAnimator moveDown = ObjectAnimator.ofFloat(v, "translationY", 100f);
moveDown.setDuration(5000);
moveDown.start();

这是图书馆里的bug还是我做错了什么?如果这个库不支持“蜂窝动画API”的所有功能,那么在我的项目中,它将是无用的。

"Animation in Honeycomb"的Android博客上引用:由于系统实际上正在改变目标对象的属性,所以对象本身是变化的,而不仅仅是它们的外观。所以你移动的按钮实际上是移动的,而不仅仅是画在另一个地方。你甚至可以点击它的动画位置。去吧,点击它,我敢。

EN

回答 1

Stack Overflow用户

发布于 2012-12-19 13:34:42

现在我找到了答案:How to do interactive animation (translation) with Android

它说,与原生SDK一样,九雄机器人也有同样的限制。

所以我的解决方案:

代码语言:javascript
复制
myAnim.setListener(new AnimatorListenerAdapter() {
  @Override
  public void onAnimationEnd ( Animator nullPointer ) {
    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) child.getLayoutParams();
    params.bottomMargin += toYDelta;
    params.leftMargin += toXDelta;
    child.setLayoutParams(params);
  }
});
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13173808

复制
相关文章

相似问题

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