Android AdapterView添加动画
我有一个片段,它由一个GridView组成。用户可以单击操作栏图标将新项目添加到此GridView的底部。我想用一个动画来表示这个动作,其中GridView滚动到添加前数据集的底部,然后向下滚动一行(如果需要适合新项目),然后为添加新项目设置动画 My GridView由CursorAdapter支持,它由使用加载程序的ContentProvider填充,因此数据集更新是通过在Android AdapterView添加动画,android,animation,android-animation,Android,Animation,Android Animation,我有一个片段,它由一个GridView组成。用户可以单击操作栏图标将新项目添加到此GridView的底部。我想用一个动画来表示这个动作,其中GridView滚动到添加前数据集的底部,然后向下滚动一行(如果需要适合新项目),然后为添加新项目设置动画 My GridView由CursorAdapter支持,它由使用加载程序的ContentProvider填充,因此数据集更新是通过在onLoadFinished()中调出光标来提供的 我已将该过程分解为几个步骤: 如果还没有,请滚动到现有数据集的底部
onLoadFinished()
中调出光标来提供的
我已将该过程分解为几个步骤:
GridView.smoothScrollToPosition(GridView.getCount())
,然后调用Handler.postDelayed(RestOfAnimationRunnable,一些时间间隔)
挂起GridView.getLastVisiblePosition()
等于GridView.getCount()-1
。虽然很难看,但它很管用。(如果你有更好的主意,请告诉我!)
4的问题是,使用ViewTreeObserver
执行动画的模式取决于从Android获得正确的最终条件,如许多参考资料中关于的描述。换句话说,新视图必须是最后一个可见视图,但如果GridView的最后一行已满,则它将是第一个v在屏幕外的新行中查看
因此,我正在寻找一种方法,告诉GridView滚动到底部,在第3步和第4步之间滚动,并且不将其绘制到屏幕上(因为这会使动画出错)。到目前为止,我已经尝试过:
- 将GridView设置为转录模式:这可以工作,但会导致其他问题(例如,如果最后一行有空间放置新项目,则现有项目将完全透明),甚至会对我在此GridView上的其他动画产生负面影响
- 将GridView的选择设置为新创建的最后一个项目:这可能是我正在寻找的,但我不确定将其放置在何处。我尝试在
这会导致GridView刷新,但这似乎没有任何效果。可能需要额外的步骤,如手动请求布局swapCursor()之后使用它
我认为我对上述第二种解决方案的理解是正确的,但我想从比我更了解这一点的人那里得到一些建议,因为它变得非常粗糙,我觉得我可能会把这里的事情搞得一团糟。我觉得我对代码的理解不够,无法给出一个很好的答案。不是吗他可能是一种方法
这是一个比我想象的更好的解决方案。谢谢!