ListView无法很好地处理TranslateAnimation

时间:2016-08-27 08:45:28

标签: android listview animation

例如,如果我向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

如果有人有更明智的解决方案,请帮助我。感谢。

1 个答案:

答案 0 :(得分:0)

我已经找到了答案。如果你使用动画来移动视图,那么视图的位置实际上不会移动。它只是更新画布的矩阵。所以它会导致你所看到的实际上并不是它的样子。如果你想触摸视图,你会发现你的位置错误。