zoukankan      html  css  js  c++  java
  • Android模拟键盘输入功能的实现

            在做关于输入框的操作指引时,用动态的输入效果比用静态的图片指示效果会好非常多,本文结合近期须要实现的一个搜索输入操作指引的功能介绍一下android平台模拟键盘输入的实现。

            在android上不知道怎么录制gif的动态图,直接截图看一下效果吧,详细看demo即可啦。


           实现起来非常easy,开一个线程。通过sleep控制输入字符的间隔时间,封装一个模拟键盘输入的方法,终于代码是这样子的:

    public class TypeInActivity extends BaseActivity {
    	@Override
    	public void setContentView() {
    		setContentView(R.layout.activity_type_in_layout);
    	}
    
    	@Override
    	public void findViews() {
    		
    	}
    
    	@Override
    	public void getData() {
    		
    	}
    
    	@Override
    	public void showConent() {
    		showGuide( );
    	}
    	
    	public void onClick( View v ){
    		switch( v.getId( ) ){
    		case R.id.searchBtnId:{
    			
    		}
    		break;
    		default:{
    			
    		}
    		break;
    		}
    	}
    	
    	private void showGuide( ){
    		new Thread( new Runnable( ) {
    			@Override
    			public void run() {
    				try {
    					Thread.sleep( 1000 );
    				} catch (InterruptedException e1) {
    					e1.printStackTrace();
    				}
    				
    				// “旋转”的拼音
    				int[] keyCodeArray = new int[]{KeyEvent.KEYCODE_X,KeyEvent.KEYCODE_U,KeyEvent.KEYCODE_A,KeyEvent.KEYCODE_N,KeyEvent.KEYCODE_SPACE,KeyEvent.KEYCODE_Z,KeyEvent.KEYCODE_H,KeyEvent.KEYCODE_U,KeyEvent.KEYCODE_A,KeyEvent.KEYCODE_N};
    				for( int keycode : keyCodeArray ){
    					try {
    						typeIn( keycode );
    						Thread.sleep( 200 );
    					} catch (InterruptedException e) {
    						e.printStackTrace();
    					}
    				}
    			}
    		}).start( );
    	}
    	
    	private void typeIn( final int KeyCode ){
    		try {
    			Instrumentation inst = new Instrumentation();
    			inst.sendKeyDownUpSync( KeyCode );
    		} catch (Exception e) {
    			Log.e("Exception when sendKeyDownUpSync", e.toString());
    		}
    	}
    }

    BaseActivity.java:(个人已经习惯这样写了。。。)

    public abstract class BaseActivity extends Activity {
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		init( );
    	}
    	
    	private void init( ){
    		setContentView( );
    		findViews( );
    		getData( );
    		showConent( );
    	}
    	
    	public abstract void setContentView( );
    	public abstract void findViews( );
    	public abstract void getData( );
    	public abstract void showConent( );
    }
            再找一个模拟打字的音效。在模拟输入的时候播放打字音效,效果还是能够的。

    。。


  • 相关阅读:
    090828 H 小道理
    091031 T PowerShell Solution
    关注我们共有的家园,别让企鹅成为传说
    发布网站时自动切换connectionString
    bookmark: partitioned tables in sql server 2005
    it did suprise me a little bit..
    无法删除附加到事件上的匿名代理
    如何在自己工程项目中使用TouchJSON框架
    VMware 8安装苹果操作系统Mac OS X 10.7 Lion正式版
    Net线程间通信的异步机制
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7065980.html
Copyright © 2011-2022 走看看