Android Gallery 滑动中止监听方案(不起线程)

转载请注明地址:http://my.oschina.net/zhanyu/blog/70724java

网上查了很多Gallery中止监听位置的方法,都是经过起线程而后睡眠来判断,我以为这样不必开线程,耗费资源,赞成的举手android

偶然看图库源码的时候看见一段代码,packages\apps\Gallery\src\com\android\camera\ViewImage.javaapp

 

private void scheduleDismissOnScreenControls() { mHandler.removeCallbacks(mDismissOnScreenControlRunner); mHandler.postDelayed(mDismissOnScreenControlRunner,2000);//延迟 }

         再结合gallery的OnItemSelectedListener,就能够在滑动中止后执行一些操做:ide

 

class MyOnSelectLinstener implements OnItemSelectedListener {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {
         scheduleDismissOnScreenControls();
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
    
}
private void scheduleDismissOnScreenControls() {
        mHandler.removeCallbacks(mDismissOnScreenControlRunner);
        mHandler.postDelayed(mDismissOnScreenControlRunner, 2000);
}

  在Runnable中执行操做,当Gallery滑动换页的时候,mHandler先把Runnable从列队中删除,其中的操做所以不会执行,而后在列队中添加延迟的Runnable,若是在延迟的时间内没有再次翻页就执行Runnable中的操做,这里能够在gallery中进行判断,拖动的时候能够不执行Runnable中的方法,具体就不说了。post

Gallery不停滑动的时候,Handler列队中有Runnable的话,就会从列队中删除,Gallery中止后的相关操做放在Runnable中执行,由于删除Runnable以后又在列队中添加了同一个Runnable,设置了延迟,好比两秒,这时候再次滑动Gallery会重复执行删除了添加Runnable,若是添加延迟的Runnable以后没有滑动,两秒后就会执行Runnable中的相关操做,达到滑动中止监听的效果。.net

相关文章
相关标签/搜索