使用myButton.setText设置按钮文本可防止动画发生

时间:2017-10-19 19:32:29

标签: android animation settext

我的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;
}

0 个答案:

没有答案