繁体   English   中英

Android surfaceview onTouchEvent限制?

[英]Android surfaceview onTouchEvent limiting?

当您有用于动画/游戏/ ...的surfaceView类时,您在同一类中具有onTouchEvent()方法和绘图/屏幕刷新方法。 现在,我只想休眠onTouchEvent方法,这样就不会每秒调用+ -80次并淹没CPU(并因此导致延迟)。 问题是,如果我在这节课上睡觉,它也会停止绘画。

** Edit88我正试图阻止onTouchEvent()调用过于频繁。 我的尝试:

@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d("firstTest",Integer.toString(event.getAction()));   //shows up
if (!sleeper.CurrentlySleeping) {
    Log.d("2ndTest",Integer.toString(event.getAction())); //not showing up
    ~~  some calculations and stuff  ~~

public class TouchSleeper extends Thread {
// If Thread is sleeping or not.
public static Boolean CurrentlySleeping;
public TouchSleeper() {
CurrentlySleeping = false;
this.setPriority(MIN_PRIORITY);
}

@Override
public void run() {
try {
    while (true) {
        CurrentlySleeping = true;
        TouchSleeper.sleep(50);
        CurrentlySleeping = false; }
    ~end~

首先是我的SurfaceView类的一段代码。 类/线程的第二部分,一直在更改布尔值。 请注意,我的第一个Log.d如何返回某些内容,而第二个却没有。 这告诉我,CurrentlySleeping永远不会虚假? 我仍然没有弄清楚事情...?

我认为,一开始不监听onTouch事件会更简单,而不是在确实发生onTouch事件时阻止处理代码,在这种情况下,您仍然会有调用该函数的开销(在这种情况下,当你不想的时候

因此,实现onTouchListener接口,并使用setOnTouchListener将其设置为视图。 现在,当您不想监听任何onTouch事件时,将其设置为NULL。

现在,不要使用睡眠,而是尝试使用“警报”或将延迟的消息发布到线程处理程序中,以在稍后的时间重置视图的onTouchListener (个人而言,我认为它比睡觉要整洁得多:))

如果该类具有onTouchEvent方法,则无法阻止其被调用。 只是让onTouchEvent返回false而不做其他任何事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM