java - Android:动画视图以根据值向上移动
问题描述
我有一个CollapsingToolbarLayout
并且AppBarLayout
我已经计算了用户滚动并通过此代码执行某些动画的百分比:
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
float totalScrollRange = Math.abs(appBarLayout.getTotalScrollRange());
float offset = Math.abs(verticalOffset);
float scrollOffsetPercentageReverse;
float scrollOffsetPercentage;
float percentage;
if (offset > 0) {
percentage = (offset / totalScrollRange) * 100;
} else {
percentage = 0;
}
int reverse = 100 - (int) percentage; // 100 = 0,
if (reverse > 0) {
scrollOffsetPercentageReverse = 255.0f * (reverse / 100.0f);
scrollOffsetPercentage = 255 * (percentage / 100);
mBookCoverThumb.setImageAlpha((int) scrollOffsetPercentageReverse);
}
float scalePercentage = reverse / 100.0f;
mBookCoverThumb.setScaleX(scalePercentage);
mBookCoverThumb.setScaleY(scalePercentage);
}
});
如您所见,我Scale
已经Alpha
在mBookCoverThumb
. 但是,我还希望它根据我拥有的百分比值动画向上移动,反之亦然,它会回到原来的位置。我试过了view.animate().translationY(percentage)
,view.setTranslateY(percentage)
但我认为我做得不对。有什么建议么?
这是当前的行为:
mBookCover
锚定到我的这AppBarLayout
就是为什么当我滚动时它会向上移动但我相信布局约束会阻止它进一步向上滚动。
解决方案
推荐阅读
- angular - 我可以从选择列表中获取对象的用户名吗?
- azure - 部署 [不同项目文件夹] 而不是选定文件夹 [当前项目文件夹]。使用“appService.deploySubpath”来改变这种行为
- r - R清理杂乱的数据:变量值作为表中的标题
- flutter - 何时在冻结中实现抽象类?
- r - 使用 multiplot (coefplot) R 绘制形状和颜色的单独图例
- python-sphinx - 是否将文档分隔在不同的存储库中?
- android - 有没有办法在安卓手机中检测程序化激光扫描仪?
- android - android微调器的自定义不起作用
- c - c const *char 函数会内存泄漏吗?
- wordpress - 按钮链接在 WP 面包店的定价平面形式中不起作用