1.switch 开发遇到的问题: 在setChecked之前要先设置 setCheckChangedListener(null),之后再重新设置setCheckChangedListener(this);
说明:在开发中会遇到切换switch去发起请求 的情况,并且初始化也需要 先拿到状态值再去设置当前的状态 获取请求失败的时候 需要将状态回滚 但是并不希望去重新发起请求, ok 这时候就需要 在setChecked之前要先设置 setCheckChangedListener(null),再重新设置setCheckChangedListener(this);
- 在basequickAdapter 使用的时候 默认出现了头部就不会显示Empty,和尾部,配置以下方法也支持同时显示:
setHeaderAndEmpty
setHeaderFooterEmpty
默认头部尾部都是占满一行,如果需要不占满可以配置:
setHeaderViewAsFlow
setFooterViewAsFlow
在项目中就是遇到 设置空布局文件 有问题就是这个的影响,还有就是空页面状态的下拉刷新也会受相应的影响。
3.应用启动 黑白屏问题,大家都知道要设置的步骤
1)写配置文件xx_splash_layer:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">
<item android:drawable="@color/white"/>
<item>
<bitmap
android:gravity="bottom"
android:src="@drawable/xx_splash"/>
</item>
</layer-list>
2)引入到theme:styles文件
<resources>
<!-- Base application theme. -->
<style name="XXDocterAppTheme" parent="XXAppTheme">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryDark">@color/white</item>
<item name="colorAccent">#FF404769</item>
</style>
<!--解决启动白屏问题-->
<style name="ThemeSplash" parent="XXDocterAppTheme">
<item name="android:windowBackground">@drawable/xx_splash_layer</item>
</style>
</resources>
3)在manifest文件中引入
<activity android:name=".SplashScreenActivity"
android:theme="@style/ThemeSplash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
需要强调的是 一定不要忘记android:opacity="opaque" 属性的设置 ,不然问题依然存在。
具体解释见:https://www.jianshu.com/p/ad4361d78222
4.今天在重构首页的时候 希望把首页工作台的复杂逻辑拉出来 写到一个继承自LinearLayout的view 中 然后 首页主要展示首页的逻辑 需要addHead的地方直接就可以add这个view作为header 就好 结果遇到一个问题 代码如下
public MyView(Context context) {
super(context);
this.mContext = context;
myView = View.inflate(context, R.layout.xxh, null);
initHeaderView();//view 控件初始化
}
结果没有报错,但是就是不显示当前view
然后换个姿势:添加this.addView(myView);这句话 显示了 为啥呢?
再换个姿势
myView = View.inflate(context, R.layout.xxh, this); 也正常;
再换个姿势
myView= LayoutInflater.from(context).inflate(R.layout.xxh,this,true); 也ok
那
myView= LayoutInflater.from(context).inflate(R.layout.xxh,this,false); 这个不行了
好吧 看来是对LayoutInflater 理解不够深刻 学习下吧
详见:https://www.jianshu.com/p/9fdbfcf9c857
5.如何在fragment中轻松使用 onWindowFocusChanged 方法?
1)第一步:
public interface IOnFocusListenable {
public void onWindowFocusChanged(boolean hasFocus);
}
2)第二步:
public class MyFragment implements IOnFocusListenable {
....
public void onWindowFocusChanged(boolean hasFocus) {
...
}
}
3)第三步:
public class MyActivity extends AppCompatActivity {
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(currentFragment instanceof IOnFocusListenable) {
((IOnFocusListenable) currentFragment).onWindowFocusChanged(hasFocus);
}
}
}
具体可见:https://stackoverflow.com/questions/30129984/how-to-get-the-onwindowfocuschanged-on-fragment
- view的可见性 分析:
1)getHitRect 、 getDrawingRect 、 getLocalVisibleRect 和getGlobalVisibleRect
https://blog.csdn.net/leunging/article/details/53083668
https://blog.csdn.net/u012554768/article/details/49661117
2)Android应用坐标系统全面详解
https://blog.csdn.net/feizhixuan46789/article/details/50520197
3)Android View的可见性检查方法
https://blog.csdn.net/aikongmeng/article/details/72373748
- View.getViewTreeObserver 注意下这个方法
- 2019年1月15日: 在开发中遇到一个问题 :一个底部弹出框中包含了EditText控件,希望点击空白处的时候 dialog消失并且键盘收起,实际情况是 dialog 消失没问题, 但是键盘收起时好时坏,实现方式是用dialog的EditText发了postdelay ,但是并没有解决,后来就用了页面中另外一个常驻控件发了postdelay 去做键盘收起 就好使了, ok 划重点,这种需要postdelay 最好不要用dialog内控件 因为dialog 弹框dismiss掉后控件会直接为空 postdelay 方法会直接发不出去。
9.开发中遇到了Toast 不弹出问题,百思不得其解 ,后来发现需要打开悬浮窗权限,现在好多绕过系统方法自定义Toast 解决问题的 还没尝试 尝试了再回来总结
解决方案参考:https://tech.meituan.com/2018/03/29/toast-snackbar-replace.html
- android:descendantFocusability="blocksDescendants" 这个属性 的重要性:在recycleView中 设置header 的时候 给header 添加 这个属性 ,可以解决 “分页数据加载完了的时候,会自动向上滑动一段 “ 的问题 。
11.在用fresco给图片设置圆角的基础上设置border 的时候发现 图片会有1px 的锯齿,如下图所示:
image.png
网上查了资料,可以加个overlay ,overlay可以是颜色 也可以是图片,由于底图不是纯色 ,这里颜色肯定搞不定了,于是想着找个1dp的底图来做overlay ,结果UI童鞋说这个不好切图,额。。。肿么办?
后来又追踪了好多属性,发现还有个borderPadding ,于是设置了个borderPadding=1dp ok 锯齿消失了 ,如下图:
image.png
So Happy!
持续更新~~
网友评论