【发布时间】:2014-04-12 07:01:40
【问题描述】:
我有一个包含 300 个单元格的日历的表格布局。当用户在流/移动中触摸日期时,触摸例如6天,它设置了一个背景drawable。
drawable 使用 XML 设置(形状、矩形、...)。它只在这 6 天内迭代,而不是在所有单元格上。
问题是,在 Nexus 7 和旧设备上设置 backgroundDrawable 会消耗太多时间。当手指在第6天时,它设置第4天直到它也到达最后一天!!!
我该如何改进它?
流程:onDown(...)、onMove(...) 超过 6 天、onUp(...)。
编辑:
public boolean onMove(MotionEvent e) {
Day selectedDay = searchForSelectedDay((int) e.getX(), (int) (e.getY() + getScrollY()));
if (selectedDay != null && selectedDay != mPreviousDay){
defineDayContent(mPreviousDay, selectedDay);
}
...
defineDayContent(Day arg0, Day arg1){
//iterates from arg0 till arg1 and sets the background
for(Day d : (iterate from arg0 till arg1)){
d.setBackground(Calendar.BACKGROUND_DRAWABLE);
}
}
【问题讨论】:
-
你认为迭代有什么好处?
-
如果您在第一天按下手指并将其移动到第 6 个单元格(作为示例),每次您的手指更改日期时,其单元格背景由 setBackground(Drawable) 设置。这就是我所说的迭代,基本上没有真正的迭代。
-
我认为问题在于,要在视图上绘制背景,系统会非常深入,并且每次都会进行新布局。
标签: android caching view bitmap drawable