在Android Studio中停止动画

时间:2017-06-07 16:21:31

标签: java android xml android-animation

我正在尝试在Android工作室制作一个动画,当我双击屏幕时它将启动。由于我使用滚动视图并占据整个屏幕,因此我将其用作检测双击的视图。

我想要发生两件事:

  1. 当我双击屏幕时,动画应该开始和停止。

  2. 当我使用音量摇杆时,即使动画已经开始,它也会加快动画效果。

  3. 到目前为止,这是我的双击方法代码:

    private void doubleTapToScroll() {
        findViewById(R.id.minchaScroll).setOnTouchListener(new View.OnTouchListener() {
            private GestureDetector gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
                @Override
                public boolean onDoubleTap(MotionEvent e) {
                    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 and mScrollView.clearAnimation();(不确定这是否是一个好主意)

1 个答案:

答案 0 :(得分:0)

我明白了。

这是因为在以下方面:

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

我每次双击都会创建new animator object,所以当我第二次双击时暂停动画师。我正在创建一个新的动画对象并暂停它。

我通过制作boolean firstDoubleClick然后将其false放在那里来修复它。下一次,它没有new object而是paused旧的。{/ p>