开发者

Disable trackball click in Android

开发者 https://www.devze.com 2023-01-10 07:13 出处:网络
I\'ve run into some difficulties with implementing a custom progress dialog. Even though an overlay intercepts touch events the u开发者_JAVA技巧ser can still operate the trackball and click elements t

I've run into some difficulties with implementing a custom progress dialog. Even though an overlay intercepts touch events the u开发者_JAVA技巧ser can still operate the trackball and click elements that are supposed to be disabled.

Is there any way around this?

Edit: here's a solution

//=====================================================================================
protected void showProgressIndicator()
{
    progressIndicator_.show();
}

//=====================================================================================
@Override
public boolean onTrackballEvent(MotionEvent event)
{
    return progressIndicator_.getVisibility() == View.VISIBLE;
}

//=====================================================================================
protected void hideProgressIndicator()
{
    progressIndicator_.hide();
}

An then in show method

//=====================================================================================
public void show()
{
    setVisibility(VISIBLE);
    if (animationHandler_ != null)
        return;

    animationHandler_ = new Handler();
    animationHandler_.post(animateTask_);
    requestFocus();
}


In order to prevent your trackball doing anything while your activity is on screen, add the following code to your Activity subclass.

@Override 
public boolean dispatchTrackballEvent(android.view.MotionEvent ev) {
  return true;
};

I've tested this on a Google Nexus One phone and it works fine.


Check the onTrackballEvent() method. Then try to directly returning true in the method without doing anything in it. This should kill the event right away.


Override onTrackballEvent() does not work. Try overriding dispatchTrackballEvent(), do nothing in it just return true;.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号