Android蹲坑的疑難雜癥集錦一

各位看官老爺子你們好,我就是那個挖坑不埋嘹锁,還喜歡開新礦的小喵同志。

問大家一個問題压昼,在Github上找項目的時候瘤运,看到中文簡介說明你們是不是覺得這個項目很low不屑一顧匠题?

最近朋友無意中說,在Github上看到中文的項目點都不想點進去郁季,太low了钱磅。想想好像很多大神的項目都是純英語的,so盖淡,作為只有四級程度的小同志褪迟,我就是那個項目里彌漫著中文的家伙(ノQ益Q)ノ彡┻━┻答憔,你們怎么看掀抹?我挺喜歡中文的?
 
例牌Github:https://github.com/CarGuo :歡迎各種姿勢的star傲武,fuck,watch戒幔。

這期要聊的是那么躺在坑里的需求土童,想想這一路走來,本人還能正常的行走于人世敢订,真是好感動呢罢吃,感謝產(chǎn)品和QA的不殺之恩。

  • 1矾柜、TextView的由于Span導(dǎo)致省略號顯示不正常問題就谜。

  • 2、TextView容易被背景同化看不清丧荐?增加陰影吧虹统。

  • 3、啟動白屏一會或者點擊logo卡頓很久沒反應(yīng)的暴力解決车荔。

  • 4、打開自定義圖庫族吻,選擇圖片容易OOM,頁面崩潰回到程序crash宜雀。

  • 5握础、ViewPager嵌套RecyclerView還有輪播圖的手勢沖突,參考:linkagescroll禀综。

  • 6定枷、透明主題會導(dǎo)致手機背景在切換Tab的時候穿透到桌面,一般MainActivity不要用這個欠窒。

  • 7、ViewPager的實時數(shù)據(jù)刷新型将。

  • 8荐虐、CardView 慎用,因為在某些低版本的機器上會有白帶腕铸,需要的話可以用shape實現(xiàn)圓角铛碑。

  • 9、圖片壓縮安利酪耳。

  • 10刹缝、RecyclerView的回到頂部的優(yōu)化颈将。

1、之前分享過一篇文章《文本編輯和顯示(emoji表情颂砸,@某人、鏈接高亮點擊)》人乓,這里用到的Spanable替代String用于TextView的顯示色罚,一般情況下是沒什么問題的,但是如果你需要在列表中或者詳情中做省略號處理戳护,你就有可能發(fā)現(xiàn)腌且,省略號居然出現(xiàn)在表情的前面,把一大段文字給省略了铺董;又或者直接最后面顯示了一部分的表情。原因Google可閱喘鸟,這里就說說我農(nóng)村式的做法吧:

是的驻右,自己截斷,根據(jù)你需要的行數(shù)愕把,對應(yīng)的在顯示的時候把數(shù)據(jù)截斷森爽,然后自己加上···(這里如有更好的記得評論分享啊橘蜜!)

textView.setText(spannable);
textView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        textView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        if (textView.getLineCount() > lineCount) {
            int endOfLastLine = textView.getLayout().getLineEnd(lineCount - 1);
            if (endOfLastLine > 4) {
                CharSequence newVal = textView.getText().subSequence(0, endOfLastLine - 4);
                textView.setText(newVal);
                textView.append("...");
            }
        }
    }
});

2付呕、TextView經(jīng)常會因為背景圖片的原因而導(dǎo)致出現(xiàn)看不清文字的情況徽职,這里無數(shù)次考慮之后,決定某些特殊地方可以用輕微的陰影解決姆钉。

android:shadowColor="#AA000000"
android:shadowDy="1"
android:shadowRadius="1"

3抄瓦、啟動頁問題钙姊,其實最好是做冷啟動優(yōu)化埂伦,但是作為一個時間緊(tou)張(lan)的程序猿,我是在WelcomeActivity的主題里設(shè)置了主題立镶,暴力解決类早,雖然這不是長久之計:

<!--window背景圖-->
<style name="WelcomeActivtyTheme" parent="AppTheme">
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowBackground">@drawable/welcome_png</item>
</style>

4、打開自定義圖庫OOM主要要解決的還是內(nèi)存釋放的問題缭召,有時候內(nèi)存一下子來的太猛還是不行的逆日,而且邏輯有問題的崩潰導(dǎo)致APP直接回到解放前的確得不償失,所以呢:

直接把選擇Activityyoga新的process進程打開搪哪,這樣閃退了也不影響APP啊坪圾,數(shù)據(jù)該怎么返回還是怎么返回。什么漓概?首次啟動的時候回卡白屏幾秒病梢,下面的主題暴力幫助你。什么觅彰?打開卡頓一會才能看到頁面护奈。我試了微信也會望艺,所以如果有優(yōu)化的控件記得評論分享下萝喘,這樣我可以愉悅的去找產(chǎn)品說(zhuang)教(B)梦抢。

<activity
    android:name=".ImageSelectActivity"
    android:process=":tools"
    android:screenOrientation="portrait"
    android:theme="@style/ThemeAlpha" />
···
<style name="ThemeAlpha" parent="AppTheme">
    <item name="android:windowDisablePreview">true</item>
</style>

5村缸、更新ViewPager鸵闪,這里簡單上代碼,感受下蚌讼,我就靜靜的不說話.....((/- -)/:

 resolveViewLogic();//比如更新list數(shù)據(jù)
 fragmentPagerAdapter.setUpdateFlag(true);//讓其更新
 fragmentPagerAdapter.notifyDataSetChanged();
 fragmentPagerAdapter.setUpdateFlag(false);//關(guān)了

···
public class RefreshFragmentPagerAdapter extends FragmentPagerAdapter {

    private List<Fragment> fragments;
    private FragmentManager fragmentManager;
    private boolean updateFlag;


    public boolean isUpdateFlag() {
        return updateFlag;
    }

    public void setUpdateFlag(boolean updateFlag) {
        this.updateFlag = updateFlag;
    }

    public void setFragments( List<Fragment> fragments) {
        this.fragments = fragments;
    }

    
    public RefreshFragmentPagerAdapter(FragmentManager fragmentManager, List<Fragment> fragments) {
        super(fragmentManager);
        this.fragments = fragments;
        this.fragmentManager = fragmentManager;
    }

    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }

    @Override
    public int getCount() {
        return fragments.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return "";
    }
    
    //讓其更新
    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }

    //核心方法
    @Override
    public Object instantiateItem(ViewGroup container, int position) {

        if (updateFlag) {//根據(jù)需求添加更新標(biāo)示
            //得到緩存的fragment
            Fragment fragment = (Fragment) super.instantiateItem(container, position);
            //得到tag芥喇,這點很重要
            String fragmentTag = fragment.getTag(); //這里的tag是系統(tǒng)自己生產(chǎn)的凰萨,我們直接取就可以
            //如果這個fragment需要更新
            FragmentTransaction ft = fragmentManager.beginTransaction();
            //移除舊的fragment
            ft.remove(fragment);
            //換成新的fragment
            fragment = fragments.get(position);
            //添加新fragment時必須用前面獲得的tag,這點很重要
            if (!fragment.isAdded()) {
                ft.add(container.getId(), fragment, fragmentTag);
                ft.attach(fragment);
                ft.commit();
            }
            return fragment;
        } else {
            return super.instantiateItem(container, position);
        }
    }
}

9武通、圖片壓縮安利:Luban珊搀,壓縮效果真的不錯,和微信一拼囚枪,就是那種長的離譜的圖片壓縮后效果不佳簿晓,其他都很不錯,反正我是直接把里面的thirdCompress拿出來套到自己里面忆植。

private File thirdCompress(@NonNull File file) 

10谒臼、RecyclerView的回到頂部的優(yōu)化。

也許你會問拾氓,不就是一鍵回去么底哥,為什么還要優(yōu)化房官?
 
 因為愛情续滋,不會輕易悲傷,產(chǎn)品經(jīng)理都是年輕的模樣蜡峰,看看回到頂部的效果朗恳,所以就有了這個優(yōu)化:

記得先停止?jié)L動,然后回到第十個油航,然后在智能的滾到頂部臀脏,不信你試試,感覺舒服好多喲秒啦。

protected void goToTop() {
    mRecyclerView.stopScroll();
    mLayoutManager.setSmoothScrollbarEnabled(true);
    if (firstVisibilityPosition > 10) {
        mLayoutManager.scrollToPositionWithOffset(10, 0);
    }
    mRecyclerView.smoothScrollToPosition(0);
    firstVisibilityPosition = 0;
}
聽說你要給吃的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末余境,一起剝皮案震驚了整個濱河市灌诅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌即舌,老刑警劉巖挎袜,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盯仪,死亡現(xiàn)場離奇詭異,居然都是意外死亡全景,警方通過查閱死者的電腦和手機爸黄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門揭鳞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诗良,“玉大人鲁驶,你說我怎么就攤上這事钥弯。” “怎么了脆霎?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵睛蛛,是天一觀的道長。 經(jīng)常有香客問我荸频,道長客冈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任和悦,我火速辦了婚禮渠缕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘馍忽。我一直安慰自己蚜迅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布坐梯。 她就那樣靜靜地躺著刹帕,像睡著了一般谎替。 火紅的嫁衣襯著肌膚如雪蹋辅。 梳的紋絲不亂的頭發(fā)上侦另,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音弃锐,去河邊找鬼殿托。 笑死,一個胖子當(dāng)著我的面吹牛旋廷,可吹牛的內(nèi)容都是我干的礼搁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼熊镣,長吁一口氣:“原來是場噩夢啊……” “哼募书!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鬼吵,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤齿椅,失蹤者是張志新(化名)和其女友劉穎启泣,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寥茫,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年险耀,在試婚紗的時候發(fā)現(xiàn)自己被綠了玖喘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡贬派,死狀恐怖赠群,靈堂內(nèi)的尸體忽然破棺而出旱幼,到底是詐尸還是另有隱情突委,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布缘缚,位于F島的核電站敌蚜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏齐媒。R本人自食惡果不足惜纷跛,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望唬血。 院中可真熱鬧唤崭,春花似錦、人聲如沸腕侄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拌汇。三九已至,卻和暖如春噪舀,著一層夾襖步出監(jiān)牢的瞬間与倡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工息拜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留净响,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓赞别,卻偏偏與公主長得像配乓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子犹芹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 自己總結(jié)的Android開源項目及庫羽莺。 github排名https://github.com/trending,g...
    passiontim閱讀 2,531評論 1 26
  • EnglishVersion ->_->:https://github.com/jiang111/awesome-...
    聶順閱讀 1,219評論 0 4
  • 各種幫助類匯總:https://github.com/Blankj/AndroidUtilCode 常用的 ios...
    懦弱的me閱讀 1,211評論 0 51
  • 今天晚上聽了荒给,蓉蓉姐分享的親子關(guān)系刁卜,她不是專業(yè)的育兒老師,但她有兩個很優(yōu)秀的孩子挑辆,通過分享我接受到這幾個點...
    華源紙箱閱讀 659評論 0 4
  • 我應(yīng)該是不記得了魁亦。 有過很多的夢想渔隶,夢想自己 成為作家,這是大多數(shù)孩子的夢吧洁奈,誰讓寫作文是學(xué)習(xí)的一部分呢间唉。偶爾有篇...
    九月露水閱讀 140評論 0 1