android - 按住按钮时限速功能

标签 android chromecast

    // RIGHT BUTTON
    Button btnRight = (Button) findViewById(R.id.btnRight);
    btnRight.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            if(event.getAction() == MotionEvent.ACTION_DOWN) {
                API_send_movement("move_right");
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                API_send_movement("stop_right");
            }
            return false; // This will enable players to drag their finger
        }

    });

目的:让玩家将手指向上、向左和向右拖过一些按钮。这就是它返回 false 的原因。

效果很好!

问题:我如何“限制”这个?目前它每刻发送一个信号,需要放慢速度,比如每 0.5 秒一次。

最佳答案

一个简单的方法是设置一个long lastCall;变量来存储最后一次API_send_movement("move_right");被调用的时间,如果有时间差则立即返回不够大。沿线的东西:

// RIGHT BUTTON 
Button btnRight = (Button) findViewById(R.id.btnRight);
btnRight.setOnTouchListener(new OnTouchListener() { 
    long lastCall;

    @Override 
    public boolean onTouch(View v, MotionEvent event) {
        if(lastCall + 500 > System.currentTimeMillis()) {
            return false;
        }

        lastCall = System.currentTimeMillis();
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
            API_send_movement("move_right"); 
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            API_send_movement("stop_right"); 
        } 
        return false; // This will enable players to drag their finger 
    } 

}); 

关于android - 按住按钮时限速功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27632119/

相关文章:

html - Chromecast 无法播放多个 HTML5 视频

java - 无法将 'ActionProvider' 转换为 'MediaRouteActionProvider'

android - 我想在我当前位置的周围精确地画一个圆圈,半径为 1 公里

android - 在android中应该使用哪种数据类型进行精确计算

Android CalendarView 检测月份变化

android - 如何配置 Gradle 任务序列

android - 让 GoogleCast 工作

javascript - window.chrome.cast 在 Android Chrome 浏览器上不可用

android - 我可以将 OnCreateView 与 Activity 一起使用还是仅与 fragment 一起使用?

gradle - Chromecast:Gradle:包android.support.v7.media不存在