我在我开发的应用中实现了半透明到不透明的ActionBar
效果(Google Play的应用页面,Google音乐),我已经制作了a ScrollView
会在滚动更改时通知,然后我的听众会计算ActionBar
相对于某个最大高度的不透明度比率。这很有效,但现在我已经在我的滚动更改监听器中实现了类似的功能。
float ratio = (float) Math.min(Math.max(t, 0), limitHeight) / limitHeight;
toolBarDrawableAlpha = (int) (ratio * 255);
toolBarTypeColorDrawable.setAlpha(toolBarDrawableAlpha);
int dexEntryPictureNewSize = Math
.max(dexEntryPictureMinSize, (int) ((1 - ratio / 2) * dexEntryPictureSize));
dexEntryPicture.getLayoutParams().height = dexEntryPictureNewSize;
dexEntryPicture.getLayoutParams().width = dexEntryPictureNewSize;
dexEntryPicture.requestLayout();
int dexEntryPictureNewBottomMargin = Math.max(dexEntryPictureMarginBottom,
Math.min(dexEntryPictureMaxMarginBottom,
(int) ((ratio * 1.5) * dexEntryPictureMaxMarginBottom)));
((FrameLayout.LayoutParams) dexEntryPicture
.getLayoutParams()).bottomMargin = dexEntryPictureNewBottomMargin;
dexEntryPicture.requestLayout();
int dexEntryNameNewTopPadding = Math.max(dexEntryNamePaddingTop,
Math.min(dexEntryNameMaxPaddingTop, (int) ((ratio) * dexEntryNameMaxPaddingTop)));
dexEntryName.setPadding(dexEntryName.getPaddingLeft(), dexEntryNameNewTopPadding,
dexEntryName.getPaddingRight(), dexEntryName.getPaddingBottom());
正如你所看到的,我使用相同的不透明度比率来改变我的视图中的一些高度,宽度,边距,填充值,这也很有效,但我一直在想是否有&#39一种以更有效的方式实现这一目标的方法,或者如果我犯了一些可怕的性能错误,我只有一台设备来测试它,它运行起来相当活泼,非常流畅,但想知道是否较小的设备不会抱怨它。
如果你想知道我的最终效果是什么,那就是某种视差(?)滚动,其中固定背景视图中有另一个居中视图(如一个轮廓图像圆圈)这个居中的视图相对于不透明度比率缩小和扩展,也移动了一些填充,因此视图似乎被推到顶部。