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

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


进度条:ProgressDialog dialog;

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

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

Java代码 复制代码 收藏代码
  1. 定义个boolean boo = flase,在耗时操作中设置 boo = true;操作完成设置boo = flase;
  2. 重写onKeyDown:
  3. public boolean onKeyDown(int keyCode, KeyEvent event) {
  4. switch (keyCode) {
  5. case KeyEvent.KEYCODE_SEARCH: {
  6. if(boo){
  7. return true;
  8. }else{
  9. break;
  10. }
  11. }
  12. return super.onKeyDown(keyCode, event);
  13. }
定义个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

Java代码 复制代码 收藏代码
  1. dialog.setOnKeyListener(new DialogInterface.OnKeyListener(){
  2. public boolean onKey(DialogInterface dialog, int keyCode,KeyEvent event) {
  3. if (keyCode == KeyEvent.KEYCODE_SEARCH) {
  4. return true;
  5. }
  6. return false;
  7. }
  8. });
dialog.setOnKeyListener(new DialogInterface.OnKeyListener(){
    	public boolean onKey(DialogInterface dialog, int keyCode,KeyEvent event) {				
    		if (keyCode == KeyEvent.KEYCODE_SEARCH) {					
    			return true;				
    		}				
    		return false;			
    	}		
    });

 

即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值