github位址
gradle:
//專案gradle中
allprojects
}}//模組gradle中
implementation 'com.github.goodluck028:showloading:1.0.3'
使用方法
//activity
loadingshow.with(mainactivity.this).showloading();
loadingshow.with(mainactivity.this).dismiss();
//fragment
loadingshow.with(testfragment.this).showloading();
loadingshow.with(testfragment.this).dismiss();
//view
textviewtestview=findviewbyid(r.id.tv_test_view);
loadingshow.with(testview).showloading();
loadingshow.with(testview).dismiss();
注意事項
在fragment的oncreateview()方法中使用會無效,是由於fragment的載入機制引起的,建議在onresume()方法中使用,後續版本想辦法解決。
實現思路
找到需要顯示loading頁的view,然後把它從view樹中打斷,再包裹上乙個framlayout,然後再接回原來的view樹中。
actively中的view
網上很多方法是這樣的
getwindow().getdecorview().findviewbyid(android.r.id.content)
我通過以上方法拿到的是個null,可能是和我的android sdk版本有關。
viewgroup decor = (viewgroup) activity.getwindow().getdecorview();
viewgroup contentroot = (viewgroup) decor.getchildat(0);
viewgroup bar = (viewgroup) contentroot.getchildat(1);
actionbaroverlaylayout act = (actionbaroverlaylayout) bar.getchildat(0);
view content =null;
try catch (exception ex)
層層包裹,最終我們拿到乙個actionbaroverlaylayout,這還不是我們真正想要的view,通過斷點除錯,我們發現真正的view是乙個私有變數mcontent。這就好辦了,通過反射拿出。至此,我們通過actively拿到了想要的view。
這裡要注意的一點是,可能其它版本的sdk有不同的實現,需要根據實際情況調整以上**。
fragment中的view
fragment中的view獲取起來是非常簡單的。
fragment.getview()
打斷view幷包裹framelayout
我們要找到原view在父view中的布局引數和index,這個好辦:
//替換注入framelayout
mframelayout =new framelayout(mcontentview.getcontext());
mframelayout.setlayoutparams(mcontentview.getlayoutparams());
viewgroup parent = (viewgroup)mcontentview.getparent();
for (int i =0; i < parent.getchildcount(); i++)
}//嫁接使用者view
framelayout.layoutparams lp =new framelayout.layoutparams(framelayout.layoutparams.match_parent, framelayout.layoutparams.match_parent);
mcontentview.setlayoutparams(lp);
mframelayout.addview(mcontentview);
顯示loading或者error頁面
有了前面幾步的操作,剩下的就是在注入的framelayout中動態顯示自己想要的view了。
framelayout.layoutparams lp =new framelayout.layoutparams(framelayout.layoutparams.match_parent, framelayout.layoutparams.match_parent);
view.setlayoutparams(lp);
mframelayout.addview(view);
關於我 如何優雅的限制文字顯示
lang en charset utf 8 documenttitle body lispan style head 文字內容文字內容文字內容文字內容文字內容li 文字內容文字內容文字內容文字內容文字內容li 其實寫多少都無所謂,我只能看到這麼多,就這麼多,反正不可以再多了span ul body ...
如何優雅的控制文字顯示行數
如何簡單有效的隱藏超出長度的多行文字呢?曾經覺得只能通過指令碼輔以配置才能比較完美的解決這個問題,這兩天才發現原來webkit瀏覽器中已經有完美的解決方案了。這篇文章介紹了隱藏多行文字的幾種方式。下面介紹下webkit瀏覽器中純css的解決方案。line clamplook,就這麼簡單。webkit...
前端如何優雅地顯示 JSON
json.cn 是我們開發過程中,經常用來格式化顯示json字串的工具 那麼如何在自己編寫的前端介面顯示同樣風格的 格式化之後json字串呢?網上流傳的版本顯示出來效果並不盡如人意,因此小改了一下。pre csspre string number boolean null key jssyntaxh...