1、沉浸式图片状态栏使用ImageView控件,并且必须使用
android:background="@mipmap/img_mine_bg" 引入图片 不能使用双src引入!!!!!
2、单Activity多Fragment下自定义状态栏沉浸式+去除阴影+修改字体
// 自定义状态栏:沉浸式+去除阴影+黑色字体
private void MyStatusBarDark() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上
View decorView = getWindow().getDecorView();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4到5.0
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
}
//修改字体颜色
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//android6.0以后可以对状态栏文字颜色和图标进行修改
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);// SYSTEM_UI_FLAG_LIGHT_STATUS_BAR :黑色字体)(SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR :白色字体
}
}
3、ScrollView滑动监听
自定义ScrollView
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView;
public class MyScrollView extends ScrollView {
private OnScrollListener listener;
public void setOnScrollListener(OnScrollListener listener) {
this.listener = listener;
}
public MyScrollView(Context context) {
super(context);
}
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
//设置接口
public interface OnScrollListener{
void onScroll(int scrollY);
}
//重写原生onScrollChanged方法,将参数传递给接口,由接口传递出去
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
// System.out.println("111111"+t);
if(listener != null){
//这里我只传了垂直滑动的距离
listener.onScroll(t);
}
}
}
Fragment中调用
public class MineFragment extends Fragment {
private MineViewModel mineViewModel;
private MyScrollView myScroll;
private TextView tv_grzx;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
mineViewModel =
ViewModelProviders.of(this).get(MineViewModel.class);
View root = inflater.inflate(R.layout.fragment_mine, container, false);
tv_grzx = root.findViewById(R.id.tv_grzx);
myScroll = root.findViewById(R.id.MyScrollView);
myScroll.setOnScrollListener(new MyScrollView.OnScrollListener() {
@Override
public void onScroll(int scrollY) {
if (scrollY > 0) {
tv_grzx.setBackgroundColor(Color.argb(99,255,255,255));
}
}
});
mineViewModel.getText().observe(this, new Observer<String>() {
@Override
public void onChanged(@Nullable String s) {
// textView.setText(s);
}
});
return root;
}
}