8

私はNineOldAndroids 2.4.0 を使用して、主にコントロールの移動と変換のためにオブジェクトをアニメーション化します。Android 4.0 以降ではすべて正常に動作しますが、以前のバージョン (2.1、2.3) ではアニメーション要素がフォーカスされず、クリックできません。サンプルコード:

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();

これはライブラリのバグですか、それとも私が間違っているのでしょうか? このライブラリが「ハニカム アニメーション API」のすべての機能をサポートしていない場合、私のプロジェクトでは役に立ちません。

「Animation in Honeycomb」の Android 開発者ブログの引用: システムは実際にターゲット オブジェクトのプロパティを変更しているため、オブジェクトの外観だけでなく、オブジェクト自体も変更されます。移動するボタンは、別の場所に描画されるだけでなく、実際に移動されます。アニメーション化された場所をクリックすることもできます。先に進んでクリックしてください。出来ることならどうぞ。

4

1 に答える 1

7

今私は答えを見つけました: Androidでインタラクティブアニメーション(翻訳)を行う方法

nineoldandroidsにはネイティブSDKと同じ制限があると書かれています。

だから私の解決策:

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);
  }
});
于 2012-12-19T13:34:42.817 に答える