我的android代码中有一个最奇怪的错误。
基本上,我正在用相机流式传输视频,我有一个按钮来启动和停止流,称之为myButton
。
如果我点击按钮来启动流,我的代码会myButton.setText("stop")
,所以如果用户想要停止流,按钮现在会停止。
在我的onTouchEvent
中,我有代码可以检测向上滑动或向下滑动,并使菜单消失/相应显示。
向上和向下滑动会动画我的菜单以滑出屏幕或滑回屏幕。它在我尝试开始流式传输之前工作得非常好,但是如果我点击开始流媒体按钮,则菜单离开屏幕(翻译-menuView.getHeight()
距离以使其离开屏幕),然后如果我尝试滑动菜单再次退回,它不会出现。但是,它肯定会收到onTouchEvent
,因为如果我单击停止按钮(myButton.setText("start")
将执行),则菜单会立即弹出到屏幕中间而没有任何动画(似乎动画必须已无形地发生了。)
任何人都可以了解导致这种情况的原因?一直在四处寻找并查找但没有运气。感谢
更新了相关代码:
@Override
public void onClick(View v) {
ToggleButton clickedButton;
switch (v.getId()) {
case R.id.start_stop_stream:
if (!recording) {
Thread t = new Thread(){
@Override
public void run(){
startRecording();
}
};
t.start();
startStopButton.setText("Stop");
startStopButton.setTextColor(Color.RED);
} else {
Thread t = new Thread(){
@Override
public void run(){
stopRecording();
}
};
t.start();
startStopButton.setText("Start");
startStopButton.setTextColor(Color.BLACK);
}
break;
}
}
和
public boolean onTouchEvent(MotionEvent touchevent) {
switch (touchevent.getAction()) {
case MotionEvent.ACTION_DOWN:
downTouch = touchevent.getY();
break;
case MotionEvent.ACTION_UP:
if(menuView != null){
releaseTouch = touchevent.getY();
SharedPreferences.Editor editor = sp.edit();
if (downTouch < releaseTouch && Math.abs(downTouch-releaseTouch) > 100) {
menuView.animate().translationY(0);
editor.putString("menuDisplayed", "True");
editor.apply();
return true;
}
if (downTouch > releaseTouch && downTouch-releaseTouch > 100) {
menuView.animate().translationY(-menuView.getHeight());
rtmpURL = rtmpURLText.getText().toString();
editor.putString("rtmpUrl", rtmpURL);
editor.putString("menuDisplayed", "False");
editor.apply();
Log.v("EditText", rtmpURLText.getText().toString());
return true;
}
}
break;
}
return false;
}