例如,如果我向TranslateAnimation
添加listview
,让listview向上移动并保持其性能最终,列表视图将成功动画。但问题是该项目listview无法正确处理触摸事件。
当我触摸item1时,将选择item2并启动item2's onClick()
method.Something就像视图已移动但触摸事件仍然与视图的最后位置相关。
我展示了我的代码如下:
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,dd));
Animation animation=new TranslateAnimation(0,0,0,-height*3);
animation.setDuration(500);
animation.setInterpolator(new AccelerateDecelerateInterpolator());
animation.setFillAfter(true);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, position+"", 0).show();
}
});
当我使用View.animate().translateY()
为列表视图设置动画时,该项可以正确处理触摸事件。唯一的问题是 API 11 或更高版本支持此方法,而我使用 API 8 。
如果有人有更明智的解决方案,请帮助我。感谢。
答案 0 :(得分:0)
我已经找到了答案。如果你使用动画来移动视图,那么视图的位置实际上不会移动。它只是更新画布的矩阵。所以它会导致你所看到的实际上并不是它的样子。如果你想触摸视图,你会发现你的位置错误。