android的ImageSwitcher是一个图片更换而产生动画过渡的控件,appdemo里面有例子,其实是一个很好的图片浏览的例子,但有一个不好的地方就是选择小图时,速度太快,每个经过中点的小图都产生一次事件,导致大图切换效果不理想。 比如点击第一张,放大第一张,点击第三张,是先放大第二张,再放大第三张,滑动时经过的所有图片都显示一次,很不理想。 我们可以用线程来处理这个问题,一定的时间后如果选择的index值不变,说明已经稳定不变,显示大图。 修改一下即可: /*
* 原代码 */ // public void onItemSelected(AdapterView parent, View v, int position, long id) { // mSwitcher.setImageResource(mImageIds[position]); // } /* * code: hqlulu * http://www. * 增加以下代码 */ private int showingIndex = -1; private static final int TIME_OUT_DISPLAY = 300; private int toShowIndex = 0; @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Log.v("test", "onItemSelected arg2="+arg2+" arg3="+arg3); toShowIndex = arg2; final Handler handler = new Handler() { public void handleMessage(Message msg) { if(showingIndex != toShowIndex){ showingIndex = toShowIndex; mSwitcher.setImageResource(mImageIds[toShowIndex]); } } }; Thread checkChange = new Thread() { public void run() { int myIndex = toShowIndex; try { sleep( TIME_OUT_DISPLAY ); if( myIndex == toShowIndex ){ handler.sendEmptyMessage(0); Log.v("test", "+++ stable can show ..."); }else{ Log.v("test", "+++ not stable..."); } } catch (InterruptedException e) { e.printStackTrace(); } } }; checkChange.start(); } |
|
来自: 厦门社保代缴 > 《android实例》