SDCard存储下,音量键连拍shutter动画消失且不可再点击。
原因:SDCard模式下没有设计连拍需求,正常弹出提示语不可进行连拍。然而动画设置有问题,只有shutter消失的动画,没有shutter复原的动画。
方法:
BaseModuleUi模块中重写onKeyUp和onKeyDown方法:
@Override
public boolean onKeyUp(int keyCode,KeyEvent event){
switch(keyCode){
case KeyEvent.KEYCODE_VOLUME_DOWN:
setShutterButtonAnimation(5);
return true;
case KeyEvent.KEYCODE_VOLUME_UP:
setShutterButtonAnimation(5);
return true;
}
}
@Override
public boolean onKeyDown(int keyCode,KeyEvent event){
switch(keyCode){
case KeyEvent.KEYCODE_VOLUME_DOWN:
onShutterButtonSwipe(true);
return true;
case KeyEvent.KEYCODE_VOLUME_UP:
onShutterButtonSwipe(true);
return true;
}
}
@Override
public boolean onShutterButtonSwipe(boolean pressed){
if(pressed && isSDCardSavePath.equals("YES") && isBrustShot){
setShutterButtonAnimation(4);
}
}
@Override
public void setShutterButtonAnimation(int num){
volumeBurstCaptureAnimation(num)
}
private void volumeBurstCaptureAnimation(int paramInt) {
if (paramInt == 1) {
float f = this.MAX_OFFSET_Y;
showShutterCricleStrokeHide(true);
if (!this.mIsBurstShotStart && !this.mIsVideoStart && f > this.mBurstStartThreshold)
this.mIsBurstShotStart = true;
if (this.mIsBurstShotStart) {
this.mShutterLongPressCheckHandler.removeCallbacksAndMessages(null);
this.mSpringAnimationX.getSpring().setStiffness(50.0F);
this.mSpringAnimationY.getSpring().setStiffness(50.0F);
this.mSpringAnimationX.animateToFinalPosition(1.0F);
this.mSpringAnimationY.animateToFinalPosition(1.0F);
float f1 = this.mShutterOriginY;
float f2 = Math.max(f1, Math.min(this.mShutterButtonDownY - this.mBurstStartThreshold + f, this.mActivity.getResources().getDimension(2131099868) + f1));
f1 = this.mActivity.getResources().getDimensionPixelSize(2131099874);
this.mBurstShotSpringAnimationY.animateToFinalPosition(f);
this.mCameraBurstTextAnimationY.animateToFinalPosition((f - f1 / 2.0F * 3.0F) / 2.0F);
if (f2 >= this.mActivity.getResources().getDimension(2131099868) && !this.mIsBurstShotTaken) {
this.mIsBurstShotTaken = true;
takeBurstShot();
}
}
} else if (paramInt == 4) {//此处设置下拉动画,shutter消失
this.mShutterLongPressCheckHandler.removeCallbacksAndMessages(null);
float f2 = this.MAX_OFFSET_Y;
float f1 = this.mActivity.getResources().getDimensionPixelSize(2131099874);
this.mBurstShotSpringAnimationY.animateToFinalPosition(f2);
this.mCameraBurstTextAnimationY.animateToFinalPosition((f2 - f1 / 2.0F * 3.0F) / 2.0F);
} else if (paramInt == 5) {//此处设置上滑动画,shutter恢复
this.mIsBurstShotTaken = false;
this.mSpringAnimationX.getSpring().setStiffness(200.0F);
this.mSpringAnimationX.getSpring().setDampingRatio(0.3F);
this.mSpringAnimationX.animateToFinalPosition(1.0F);
this.mSpringAnimationY.getSpring().setStiffness(200.0F);
this.mSpringAnimationY.getSpring().setDampingRatio(0.3F);
this.mSpringAnimationY.animateToFinalPosition(1.0F);
this.mBurstShotSpringAnimationY.getSpring().setStiffness(600.0F);
this.mBurstShotSpringAnimationY.getSpring().setDampingRatio(0.66F);
this.mBurstShotSpringAnimationY.animateToFinalPosition(1.0F);
this.mCameraBurstTextAnimationY.animateToFinalPosition(this.mCameraBurstTextOriginY);
this.mShutterLongPressCheckHandler.removeCallbacksAndMessages(null);
stopLongPressAnimation();
this.mIsShutterButtonDown = false;
this.mIsVideoStart = false;
this.mShutterButton.setDrawLongBurst(false);
this.mShutterButton.setEnableDragFloating(true);
this.mShutterButton.setmOffsetYLongBurst(0);
this.mShutterCricleStrokeHide.postDelayed(new Runnable() {
public void run() {
ShutterButtonAnimation.this.showShutterCricleStrokeHide(false);
}
}, 1000L);
} else {
this.mBurstShotSpringAnimationY.getSpring().setStiffness(600.0F);
this.mBurstShotSpringAnimationY.getSpring().setDampingRatio(0.66F);
this.mBurstShotSpringAnimationY.animateToFinalPosition(1.0F);
this.mCameraBurstTextAnimationY.animateToFinalPosition(this.mCameraBurstTextOriginY);
showShutterCricleStrokeHide(false);
}
}