异步加载进度条,屏蔽搜索键

当进行耗时的操作时,就会写个进度条在界面上运行。但是按返回键,搜索键时,进度条会消失,但是耗时的操作还在进行中,怎么办呢?


进度条:ProgressDialog dialog;

1. 异步加载进度条屏蔽返回键很简单,只要设置dialog.setCancelable(false);即可。

2. 可是屏蔽搜索键没有现成的东西。
 想法一,重写onKeyDown函数:

定义个boolean boo = flase,在耗时操作中设置 boo = true;操作完成设置boo = flase;
重写onKeyDown:
public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_SEARCH: {
	if(boo){
                    return true;     
                }else{
                break;	
            }                   
         }
        return super.onKeyDown(keyCode, event);
    }

 

 运行发现此法不可行,按搜索键,搜索功能屏蔽了,但进度条还是消失了。


原来异步加载进度条后,进度条获取了焦点,而onKeyDown是屏幕的,不是进度条的。so

dialog.setOnKeyListener(new DialogInterface.OnKeyListener(){
    	public boolean onKey(DialogInterface dialog, int keyCode,KeyEvent event) {				
    		if (keyCode == KeyEvent.KEYCODE_SEARCH) {					
    			return true;				
    		}				
    		return false;			
    	}		
    });

 

 即可。

你可能感兴趣的:(异步加载)