2016-09-28 19 views
0

まず、私がもっている最大の問題は、アンドロイドのアニメーションを想定したり、願ったり、イオスのように行動することです。アンドロイドアニメーションの問題とiosとの比較

私は、100ミリ秒ごとに更新される時間インジケータを持っています。私は、時間の経過とともに、xの位置を流動的に移動させたいと思います。 IOS

コード:

[NSTimer scheduledTimerWithTimeInterval:.1f target:self selector:@selector(moveIndicator:) userInfo:nil repeats:YES]; 

moveIndicator関数内。

[UIView animateWithDuration:.1f delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ 

    _playIndicatorView.frame = CGRectMake(myXpos, _playIndicatorView.frame.origin.y, _playIndicatorView.frame.size.width, _playIndicatorView.frame.size.height); 

} completion:^(BOOL finished) { 
}]; 

そして、これは次のようになります。

enter image description here

私はアンドロイドでこれをやろうとしていると、アニメーションは、私が期待どおりに動作しません

のAndroidコード:

Initの場合.1fタイマー。

private Runnable runnable = new Runnable() { 
     public void run() { 
      if (!killMoveIndicatorTimer) { 
       moveIndicator(); 
       handler.postDelayed(this, 100); 
      } 
     } 
    }; 

コールrunnableのために私が使用しています:移動のため

handler = new Handler(); 
runnable.run(); 

私が使用している指標:

ObjectAnimator anim = ObjectAnimator.ofFloat(playerIndicatorView, "translationX", myXpos); 
anim.setDuration(100); 
anim.start(); 

と次のようになります。

enter image description here

、あまりにも、この他のオプション:私はそこになければなら絶対に確信しています

enter image description here

playerIndicatorView.animate().x(myXpos); 

のように見えますbこのアニメーションを可能な限りiosに似せる何らかの方法。

お時間をいただきありがとうございます。

+0

私は推測しなければならないとしたら、あなたの問題は、アニメーションではありませんが、それはメインアプリケーションスレッドを拘束されてやっている他の仕事と:二たとえば

あなたはLinearInterpolatorを使用していません。 – CommonsWare

答えて

0

あなたが使用する必要があります:あなたの最初の例と

ObjectAnimator anim = ObjectAnimator.ofFloat(playerIndicatorView, "translationX", backgroundStripe.getWidth()); 
anim.setDuration(3000); 
anim.start(); 

主な問題はhandler.postDelayed(this, 100);あなたのアニメーションが期間100msのを持っているとし、完了ハンドラが100msの後に次のアニメーションを実行します後です。

ViewPropertyAnimator viewPropertyAnimator = playerIndicatorView.animate(); 
viewPropertyAnimator.setInterpolator(new LinearInterpolator()); 
viewPropertyAnimator.setDuration(2000); 
viewPropertyAnimator.translationX(backgroundStripe.getWidth()); 
関連する問題