我尝试使用setCallbackDuringFling在Gallery fling期间更新某些指示器,不知何故,每当我将其设置为(true)时,它都会断断续续。当我说“口吃”时,我的意思是下一个图像跳跃/捕捉进入视野,因此在投掷过程中视觉非常跳跃。即使我拖得很慢,下一张图片也会显示出来,然后当它向中间移动时,它就会卡入到位。
但是,如果我将其设置为false(因此onItemSelected仍然会被调用但在fling停止时只调用一次),滚动/拖动非常平滑。
我的onItemSelected(见下面的代码)根本不是密集的,因此我怀疑口吃是由场景背后的东西引起的。
有什么想法解决这个问题?
提前致谢。
// Set up Gallery listeners
myGallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// When scrolling stops, set the indicators
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
ImageView myIV;
// First reset myCurrentDot
myIV = (ImageView) findViewById (myDotID[myCurrentDot]);
myIV.setImageResource(R.drawable.grey);
// The set the "position" dot to red
myIV = (ImageView) findViewById (myDotID[position]);
myIV.setImageResource(R.drawable.red);
// update myCurrentDot
myCurrentRedDot = position;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}); // End Gallery Listener
答案 0 :(得分:0)
使用setCallbackDuringFling()
调用true
时,每次选择某个项目时,onItemSelected
实例都会调用AdapterView.OnItemSelectedListener
。
查看代码,我们可以看到findViewById()
被调用两次。也许找到视图是一个太沉重的过程。也许,您可以使用视图缓存机制,而不是每次都搜索视图。只需用视图缓存(myDotID
)替换布局ID缓存(ImageView[] myDotViews
)。