2017-06-07 3 views
0

画面をダブルクリックすると起動するアンドロイドスタジオでアニメーションを作成しようとしています。私はスクロールビューを使用しているので、それは画面全体を占めているので、ダブルタップを検出するためのビューとして使用しました。Androidスタジオでのアニメーションの停止

私は2つのことが起こることを望んでいました:1.画面をダブルタップすると、アニメーションが開始され、停止する必要があります。そして2.ボリューム・ロッカーで演奏すると、すでにアニメーションが開始されていても、アニメーションが高速化されます。

これまでのところ、ここでダブルタップ方式のための私のコードです:

ます。private void doubleTapToScroll(){ findViewById(R.id.minchaScroll).setOnTouchListener(新しいView.OnTouchListener(){ プライベートGestureDetector gestureDetector =が、新しいGestureDetector(新GestureDetector.SimpleOnGestureListener(){@Override 公共ブールonDoubleTap(MotionEvent電子){

   mScrollView.post(new Runnable() { 

        @Override 
        public void run() { 

//       while(mScrollView.getScrollY() <= findViewById(R.id.alenuPart3).getBottom()){ 
// 
//        audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
//        int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING); 
// 
// 
//        ObjectAnimator.ofInt(mScrollView, "scrollY", (findViewById(R.id.minchaLinearLayout)).getBottom()).setDuration(currentVolume*100000).start(); 
// 
//       } 
         audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
         int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING); 
         ObjectAnimator animator = ObjectAnimator.ofInt(mScrollView, "scrollY", (findViewById(R.id.minchaLinearLayout)).getBottom()).setDuration(currentVolume * 10000); 

         autoScrollOn = !autoScrollOn; 

         if (animator.isRunning()) { 
          animator.start(); 
         } else { 
          animator.cancel(); 
         } 

         Log.d("In Run Method", String.valueOf(autoScrollOn)); 
        } 
       }); 
       return super.onDoubleTap(e); 
      } 
     }); 

私はアニメーションが無意志何らかの理由で、今のところ第1部に取り組んでいます休止する。

また、パート2ではすでにボリュームレベルを取り入れていますが、アニメーションが開始する前にボリュームを変更すると別の速度で動作しますが、アニメーションがオンの間に速度を変更しようとしていますループやアニメーションを再起動しながら、私は理想的な方法、任意のアイデアとは思わない?

ありがとうございます!

アップデート:私は試してみました.pause、.end、mScrollView.clearAnimation(); (それが良い考えであればわからない)

答えて

0

私はそれを理解した。

それが原因の行にした

ObjectAnimator animator = ObjectAnimator.ofInt(mScrollView, "scrollY", (findViewById(R.id.minchaLinearLayout)).getBottom()).setDuration(currentVolume * 10000); 

私はすべてのシングル、ダブルクリックnew animator objectを作成していたので、私は二ダブルクリックでアニメーターを一時停止に行ったとき。私は新しいアニメータオブジェクトを作成し、それを一時停止していました。

booleanfirstDoubleClickに修正してから、それをfalseとしました。次回は、new objectではなく、pausedを古いものにしました。

関連する問題