我正在尝试在Android工作室制作一个动画,当我双击屏幕时它将启动。由于我使用滚动视图并占据整个屏幕,因此我将其用作检测双击的视图。
我想要发生两件事:
当我双击屏幕时,动画应该开始和停止。
当我使用音量摇杆时,即使动画已经开始,它也会加快动画效果。
到目前为止,这是我的双击方法代码:
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();
(不确定这是否是一个好主意)
答案 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>