我正在尝试设置进度条的动画,以便线性填充需要1分钟。
这是我的代码:
const array1 = [
{ kind: "E", path: ["short_name"], lhs: "testing", rhs: "testing1" },
{ kind: "E", path: ["agent_name"], lhs: "testing", rhs: "testing2" }
];
const array2 = [
{ lhs: "legacyId", rhs: "id_number" },
{ lhs: "name.short", rhs: "short_name" },
{ lhs: "name.long", rhs: "agent_name" },
{ lhs: "gender", rhs: "gender" },
{ lhs: "dob", rhs: "date_of_birth" }
];
const hashMap = {};
const commonValues = [];
for (let i = 0; i < array1.length; i++) {
const currentValue = array1[i].path[0];
hashMap[currentValue] = true;
}
for (let i = 0; i < array2.length; i++) {
const currentValue = array2[i].rhs;
if (hashMap[currentValue]) commonValues.push(currentValue);
}
//now commonValues contains all of the common between them. You may want to filter out duplicate matches, depends on your use case.
进度条填充时间太快,大约需要20秒,而不是1分钟
答案 0 :(得分:1)
在“开发人员选项”下,有“动画师持续时间比例”选项。这可能是导致您出现问题的原因。
希望有帮助。
答案 1 :(得分:0)
问题是由Android的“开发人员选项”下的动画持续时间比例设置为0.5引起的。
ValueAnimator类中有一个 setDurationScale()方法。它是隐藏的,但是 您可以使用反射来调用它,并使用它将持续时间比例设置为1:
try {
ValueAnimator.class.getMethod("setDurationScale", float.class).invoke(null, 1f);
} catch (Throwable t) {
Log.e(this.getClass().getName(), t.getMessage());
}
这将使ObjectAnimator不受全局动画师持续时间比例的影响。
如果您需要保存动画持续时间比例的当前选项值:
// Get duration scale from the global settings.
float durationScale = Settings.Global.getFloat(context.getContentResolver(),
Settings.Global.ANIMATOR_DURATION_SCALE, 0);