运动使用LayoutParams和Paddings Android

时间:2014-10-23 15:51:21

标签: android performance android-layout

我在我开发的应用中实现了半透明到不透明的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一种以更有效的方式实现这一目标的方法,或者如果我犯了一些可怕的性能错误,我只有一台设备来测试它,它运行起来相当活泼,非常流畅,但想知道是否较小的设备不会抱怨它。

如果你想知道我的最终效果是什么,那就是某种视差(?)滚动,其中固定背景视图中有另一个居中视图(如一个轮廓图像圆圈)这个居中的视图相对于不透明度比率缩小和扩展,也移动了一些填充,因此视图似乎被推到顶部。

0 个答案:

没有答案