SwipeRefreshLayout - 更改动画计时

时间:2016-04-15 19:09:39

标签: android view swiperefreshlayout

SwipeRefreshLayout使用set变量作为结束动画。在某些用例中,我需要将其更改为0,但我无法弄清楚如何。这是变量:

;WITH CTE AS
(
     SELECT VisitID, UserID, UserName, VisitDate,
            COUNT(2) OVER(PARTITION BY UserID) AS countVal
     From Visit
     WHERE VisitDate BETWEEN '04/01/2016' AND '04/03/2016'
)

SELECT *
FROM CTE
WHERE countVal>=2

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要访问私有字段,并使用Java反射API将值更新为0。由于该字段是最终字段,因此您需要更新其修饰符以删除此信息,如this post中所述。

Field duration = SwipeRefreshLayout.class.getDeclaredField("SCALE_DOWN_DURATION");
duration.setAccessible(true); // counteract private modifier

Field mods = Field.class.getDeclaredField("modifiers"); // retrieve modifiers for the constant field
mods.setAccessible(true);
int finalValue = mods.getModifiers() & ~Modifier.FINAL; // flip final value, allowing mutation of the field
mods.setInt(mods, finalValue);
duration.setInt(hack, 0); // set value

不言而喻,但由于这是SwipeRefreshLayout的一个实现细节,因此无法确保将来不会在没有警告的情况下中断。如果你需要这样的几个修改,那么分类和维护你自己的版本可能是一个更好的解决方案。