1.switch 開發(fā)遇到的問題: 在setChecked之前要先設(shè)置 setCheckChangedListener(null),之后再重新設(shè)置setCheckChangedListener(this);
說明:在開發(fā)中會(huì)遇到切換switch去發(fā)起請求 的情況,并且初始化也需要 先拿到狀態(tài)值再去設(shè)置當(dāng)前的狀態(tài) 獲取請求失敗的時(shí)候 需要將狀態(tài)回滾 但是并不希望去重新發(fā)起請求廷没, ok 這時(shí)候就需要 在setChecked之前要先設(shè)置 setCheckChangedListener(null),再重新設(shè)置setCheckChangedListener(this);
- 在basequickAdapter 使用的時(shí)候 默認(rèn)出現(xiàn)了頭部就不會(huì)顯示Empty嫌松,和尾部,配置以下方法也支持同時(shí)顯示:
setHeaderAndEmpty
setHeaderFooterEmpty
默認(rèn)頭部尾部都是占滿一行,如果需要不占滿可以配置:
setHeaderViewAsFlow
setFooterViewAsFlow
在項(xiàng)目中就是遇到 設(shè)置空布局文件 有問題就是這個(gè)的影響糖声,還有就是空頁面狀態(tài)的下拉刷新也會(huì)受相應(yīng)的影響身冬。
3.應(yīng)用啟動(dòng) 黑白屏問題,大家都知道要設(shè)置的步驟
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>
<!--解決啟動(dòng)白屏問題-->
<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>
需要強(qiáng)調(diào)的是 一定不要忘記android:opacity="opaque" 屬性的設(shè)置 冯丙,不然問題依然存在。
具體解釋見:http://www.reibang.com/p/ad4361d78222
4.今天在重構(gòu)首頁的時(shí)候 希望把首頁工作臺(tái)的復(fù)雜邏輯拉出來 寫到一個(gè)繼承自LinearLayout的view 中 然后 首頁主要展示首頁的邏輯 需要addHead的地方直接就可以add這個(gè)view作為header 就好 結(jié)果遇到一個(gè)問題 代碼如下
public MyView(Context context) {
super(context);
this.mContext = context;
myView = View.inflate(context, R.layout.xxh, null);
initHeaderView();//view 控件初始化
}
結(jié)果沒有報(bào)錯(cuò)遭京,但是就是不顯示當(dāng)前view
然后換個(gè)姿勢:添加this.addView(myView);這句話 顯示了 為啥呢胃惜?
再換個(gè)姿勢
myView = View.inflate(context, R.layout.xxh, this); 也正常泞莉;
再換個(gè)姿勢
myView= LayoutInflater.from(context).inflate(R.layout.xxh,this,true); 也ok
那
myView= LayoutInflater.from(context).inflate(R.layout.xxh,this,false); 這個(gè)不行了
好吧 看來是對LayoutInflater 理解不夠深刻 學(xué)習(xí)下吧
詳見:http://www.reibang.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應(yīng)用坐標(biāo)系統(tǒng)全面詳解
https://blog.csdn.net/feizhixuan46789/article/details/50520197
3)Android View的可見性檢查方法
https://blog.csdn.net/aikongmeng/article/details/72373748
- View.getViewTreeObserver 注意下這個(gè)方法
- 2019年1月15日: 在開發(fā)中遇到一個(gè)問題 :一個(gè)底部彈出框中包含了EditText控件,希望點(diǎn)擊空白處的時(shí)候 dialog消失并且鍵盤收起捺弦,實(shí)際情況是 dialog 消失沒問題饮寞, 但是鍵盤收起時(shí)好時(shí)壞,實(shí)現(xiàn)方式是用dialog的EditText發(fā)了postdelay 列吼,但是并沒有解決幽崩,后來就用了頁面中另外一個(gè)常駐控件發(fā)了postdelay 去做鍵盤收起 就好使了, ok 劃重點(diǎn)寞钥,這種需要postdelay 最好不要用dialog內(nèi)控件 因?yàn)閐ialog 彈框dismiss掉后控件會(huì)直接為空 postdelay 方法會(huì)直接發(fā)不出去慌申。
9.開發(fā)中遇到了Toast 不彈出問題,百思不得其解 理郑,后來發(fā)現(xiàn)需要打開懸浮窗權(quán)限蹄溉,現(xiàn)在好多繞過系統(tǒng)方法自定義Toast 解決問題的 還沒嘗試 嘗試了再回來總結(jié)
解決方案參考:https://tech.meituan.com/2018/03/29/toast-snackbar-replace.html
- android:descendantFocusability="blocksDescendants" 這個(gè)屬性 的重要性:在recycleView中 設(shè)置header 的時(shí)候 給header 添加 這個(gè)屬性 ,可以解決 “分頁數(shù)據(jù)加載完了的時(shí)候您炉,會(huì)自動(dòng)向上滑動(dòng)一段 “ 的問題 柒爵。
11.在用fresco給圖片設(shè)置圓角的基礎(chǔ)上設(shè)置border 的時(shí)候發(fā)現(xiàn) 圖片會(huì)有1px 的鋸齒,如下圖所示:
網(wǎng)上查了資料赚爵,可以加個(gè)overlay 棉胀,overlay可以是顏色 也可以是圖片,由于底圖不是純色 冀膝,這里顏色肯定搞不定了唁奢,于是想著找個(gè)1dp的底圖來做overlay ,結(jié)果UI童鞋說這個(gè)不好切圖窝剖,額麻掸。。赐纱。腫么辦脊奋?
后來又追蹤了好多屬性,發(fā)現(xiàn)還有個(gè)borderPadding 疙描,于是設(shè)置了個(gè)borderPadding=1dp ok 鋸齒消失了 狂魔,如下圖:
So Happy!
持續(xù)更新~~