forezp / banya

An open resource for Douban API with NETEASY Music's UI.
930 stars 245 forks source link

README.md提到的沉浸式布局Bug决解办法 #4

Closed 7449 closed 6 years ago

7449 commented 7 years ago

你仔细看statusBarUtils的源码,color值是用@colorInt注解修饰的,你getThemeColor的时候并没有使用@ColorInt修饰,所以无法修改颜色值 解决办法: @ColorInt public static int getThemeColor() { SharedPreferences pref = context.getSharedPreferences("ThemeColor", context.MODE_PRIVATE); return pref.getInt("themeColor", defalutThemeColor); }

getThemeColor用@ColorInt修饰 StatusBarUtils本身并没有问题

ZhangLanqiu commented 7 years ago

@7449 那个作者好像不怎么说话了,所以麻烦一下向您请教个问题! 在 FilmLiveAdapter 中有这么几行代码(大约在40行):

    ViewGroup.LayoutParams params=holder.iVFilm.getLayoutParams();
    int width= ScreenUtils.getScreenWidthDp(context);
    int ivWidth=(width-ScreenUtils.dipToPx(context,80))/3;
    params.width=ivWidth;
    double height=(420.0/300.0)*ivWidth;
    params.height=(int)height;
    holder.iVFilm.setLayoutParams(params);

这个应该是适配的代码,可是我却不明白为什么这个适配的算法要这么写,我通过打log也得出他们的值了我的手机是MX6!

    width = 1080
    ScreenUtils.dipTopx =240
    ivWidth = 280
    height = 392.0

我技术不是很好,您能给我讲一下吗? 非常感谢

7449 commented 7 years ago

@ZhangLanqiu ImageView的高宽都是wrap_content,代码中宽高,LayoutParams是用于子view给父view传达自己想变成什么样子的一个类,代码中设置的是px,而不是dp。 你可以注掉这段代码,xml 宽设置为match_parent,高度为160dp左右 或者 holder.iVFilm.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) height)); 效果都差不多

ZhangLanqiu commented 7 years ago

@7449 非常感谢! 这块我清楚了!但是。。。。还是有些地方我不是很明白! 拜谢了! 1、图片的宽度为什么要这么算? 获取屏幕的宽度我理解,但是为什么还要减去一个 dipToPx ? 最后还 / 3 ??

int ivWidth=(width-ScreenUtils.dipToPx(context,80))/3 

width = 1080 ScreenUtils.dipToPx(context,80) = 240 ivWidth=280

2、计算高度的时候为什么还要先拿 ( 420.0 / 300.0 ) * ivWidth ?

这些地方我自己琢磨不明白,网上也不知道怎么查! 这个问题可能对您来说很简单,可是对于我这个半吊子水准的人不是很明白! 希望您看到并且有空的话,解答一下! 再次感谢了

7449 commented 7 years ago

其实没必要除以3,因为recyclerView已经设置了 recyclerview.setLayoutManager(new GridLayoutManager(getActivity(), 3)); item会自己三分屏幕,至于高度还有dipToPx由你自己写,你想的复杂了,你试试去掉dipToPx,直接除以3,就只是item变高了而已。

cl465809880 commented 6 years ago

@7449
根据你描述的方法,加上了@colorint,在切换主题时状态栏颜色依然没有改变