gpt4 book ai didi

android - 在滚动事件期间更改操作栏 alpha

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:22 24 4
gpt4 key购买 nike

我尝试在主 ScrollView 的滚动事件期间在我的操作栏上创建淡入淡出 alpha:

我试过这个:

//Active Overlay for ActionBar before set my content in the activity
getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

//create a new Drawable for the AB background
final ColorDrawable newColor = new ColorDrawable(getResources().getColor(R.color.primaryColor));
newColor.setAlpha(0);
getActionBar().setBackgroundDrawable(newColor);

//create a OnScrollListener to get ScrollY position
final ScrollView mainScrollView = (ScrollView) findViewById(R.id.place_detail_scrollView);
mainScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
final int scrollY = mainScrollView.getScrollY();
final int boundY = 300;
final float ratio = (float) (scrollY/boundY) ;
newColor.setAlpha((int)(ratio*255));
}
});

理论上,我的操作栏会在 ScrollView 的位置 0 和 300 之间淡化其 alpha。不幸的是,我的 AB 每次仍然透明......有什么想法吗?

最佳答案

我发现了问题,我使用的是 Jelly Bean 之前的设备,因此有解决此问题的方法。

事实上,对于 JELLY_BEAN_MR1 之前的设备,我们必须在 onCreate(Bundle) 方法中为 Drawable 附加以下 Callback :

private Drawable.Callback mDrawableCallback = new Drawable.Callback() {
@Override
public void invalidateDrawable(Drawable who) {
getActionBar().setBackgroundDrawable(who);
}

@Override
public void scheduleDrawable(Drawable who, Runnable what, long when) {
}

@Override
public void unscheduleDrawable(Drawable who, Runnable what) {
}
};

然后设置回调

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
mActionBarBackgroundDrawable.setCallback(mDrawableCallback);
}

就是这样,谢谢Cyril Mottier为此!

关于android - 在滚动事件期间更改操作栏 alpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25646501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com