我使用方法page
在ViewPager
中为transformPage
制作动画:
问题:我需要修复scale
的值(介于0.8 => 1之间,我的意思是:0.81,0.82,0.83 ...... 0.89,0.90 ,... 0.99)变量取决于位置(从0.5到1)以获得从小到大的平滑动画。
else if (position >= 0.5F && position <= 1F) {
...
scale = ??;
ViewCompat.setScaleX(page, scale);
ViewCompat.setScaleY(page, 0.85F);
}
到目前为止我尝试了什么:
scale = (float) (0.8 + ((10*position)/100)); ==> not correct
我也尝试了多个else if
,例如:
else if (position >= 0.5F && position <= 0.625F) {
scale = .97
}
else if (position >= 0.625F && position <= 0.75F) {
scale = .9
}
else if (position >= 0.75F && position <= 0.875F) {
scale = .85
}
else if (position >= 0.875F && position <= 1.0F) {
scale = .80
}
==&GT;结果是如此滞后。
请帮助,谢谢
- 更新:使用@RadekJ回答我得到反向结果:从1到0.8:
答案 0 :(得分:1)
我总是这样做:
float progressStart = 0.5f
float progressEnd = 1f;
float progressDelta = progressEnd - progressStart;
float progress = (position - progressStart)/progressDelta;
if(progress>1)progress=1;
if(progress<0)progress=0;
float endValue = 1f;
float startValue = 0.8f;
float delta = endValue - startValue;
float currentScale = startValue + delta*progress;
ViewCompat.setScaleX(page, currentScale);