Android 平常開發問題總結

平常開發中碰到了各類開發問題,撿選了一部分分享出來。有些問題很是簡單,屬於編碼規範類,有些屬於特定狀況下碰到的問題,不是很常見。不太準確的地方,歡迎共同探討下~android

1.requestFeature() must be called before adding content

requestWindowFeature(Window.FEATURE_NO_TITLE);// 隱藏標題
複製代碼

須要在onCreate以前調用,不然在4.4.2的機型上會報錯:git

2.小米6.0系統打開瀏覽器時閃退

Calling startActivity() from outside of an Activity context requires the FLAG_NEW_TASK flag.web

public static void openBrowser(Context context, String url) {
    Uri uri = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);
}
複製代碼

也就是要加上面的FLAG_ACTICITY_NEW_TASK(其它手機看到是ok的)瀏覽器

3.設置TextView的顏色值無效

titleTv.setTextColor(colorId);//錯誤的方式(常見封裝類調用)
   titleTv.setTextColor(ContextCompat.getColor(context,colorId));//正確的方式
複製代碼

4.國際化引用問題

a.靜態/類全局變量須要單獨判斷; b.string 中文本空格效果沒法體現,給字符串加上雙引號緩存

<string name="Chinese"> 中   文 </string>
<string name="Chinese">" 中   文 "</string>
複製代碼

注意:使用Application.getString的方式,在切換語言後,並無切換這種方式引用的資源內容。能夠改成另外的activity裏面的getString方法獲取bash

5.魅族7.0的系統在webview中點擊後閃退

ActivityManagerForce removing ActivityRecord{6dd5804 u0 包名/當前WebviewActivity t8819}: app died, no saved state
複製代碼

不支持onCustumView方法,去掉便可微信

6.button上的英文默認爲大寫

android:textAllCaps="false"
複製代碼

7.vivo上收到push後打不開指定的頁面(根本就沒反應)

在這裏插入圖片描述
系統會自動彈出,可是進入設置打開便可。

8.TextView顯示不全

TextView使用WrapContent,lines=1可是內容顯示不全 只能顯示在屏幕內的部分,在屏幕外的部分,在屬性動畫拉出來看的時候就沒有。 (這種問題發生在自定義跑馬燈控件時)app

public static int getTextViewLength(TextView view, String text) {
    TextPaint paint = view.getPaint();
    int textLength = (int) Layout.getDesiredWidth(text, 0, text.length(), paint);
    return textLength;
}
複製代碼

而後給TextView設置寬度。ide

9. No Activity found to handle Intent { act=android.intent.action.VIEW_DOWNLOADS flg=0x10000000 }

三星 SM-C7000(C7) 6.0.1的系統就會出如今這個問題post

if(intent.resolve(context.getPackageManager))!=null){
...
}
複製代碼

使用隱式intent進行startActivity時,最好加上該種判斷和try catch,由於保不許哪一種機型就出問題了

10.設置dialog邊角

getWindow().setBackgroundDrawableResource(R.drawable.widget_dialog_round_corner);
複製代碼

11.三星機型報錯E/rsC++(16241): RS CPP error: Blur radius out of 0-25 pixel bound

在這裏插入圖片描述
大意就是TextView的shadowRadius不能大於25,是xml代碼中的問題,改小shadowRadius便可。
在這裏插入圖片描述
包括button下的部分模糊的狀況也是該問題致使的。

12.分享連接至微信沒法顯示連接的縮略圖

友盟分享連接若是內容中帶有紅包字樣,那麼圖片會失效顯示不出來(分享的主體卻是能夠本身看到)

13.小米手機上的App使用瀏覽器打開尾綴帶apk的地址沒法正常下載安裝

阿里雲、應用寶的地址是會被攔截到使用小米手機系統自帶的下載器進行下載安裝,而這個下載器會默認使用迅雷下載組件,阿里雲的地址下載完畢後點擊下載完成的push會顯示文件沒法識別(而應用寶的地址能正常安裝),小米系及華爲應用的下載地址以及非.apk結尾的地址則會按照正常流程跳入瀏覽器進行下載。關閉小米手機上的迅雷下載組件的功能後,則能夠經過點擊push正常安裝,不會出現文件沒法識別的問題。 因此解決這個問題的很簡單,把下載地址換成非apk結尾的地址便可

14.桌面圖標不更換的緣由

android:roundIcon="@mipmap/logo"
複製代碼

application中這個屬性也要設置

15.優化打開應用白屏問題

白屏的緣由是系統自己啓動是須要時間的(背景默認就是白色)。 通常作法:

設置Theme

<style name="MNoActionBar" parent="Theme.AppCompat.NoActionBar">
    <!--<item name="android:windowFullscreen">false</item>-->
    <!--<item name="android:windowBackground">@drawable/welcome</item>//此行能夠給window設置背景圖片,單獨設置此項不設置透明的話是沒有延遲打開的狀況(無白屏切換,和啓動頁使用同一資源則無縫切換,但默認是全屏的)-->
    <item name="android:windowIsTranslucent">true</item>//設置透明以後不會有和頁面背景圖之間色值的閃爍,同時點擊桌面圖標時會有些延遲進入頁面
</style>

複製代碼

針對具體的activity:若是一個activity中既要顯示全屏的啓動圖,也要等到內容加載完畢後顯示最新內容(非全屏),那麼就應該對相關方法的進行判斷設置:

private void setFullScreenEnable(boolean isEnable) {
    if (isEnable) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //隱藏狀態欄
    } else {
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //顯示狀態欄
    }

}
複製代碼

若是在含有Webview的頁面中,則能夠分別在onCreate方法和onpageFinished的回調中進行設置便可。

特殊狀況:若是整個頁面是加載的H5,即使使用了上面的設置,仍是會有白屏一閃而過的情景。這是H5頁面自己渲染致使的,那麼目前的處理方法是針對啓動頁作個延時dismiss的效果,這樣就遮蓋了白屏一閃而過的瞬間:

fullLoadingView.postDelayed(new Runnable() {//須要作下延遲,不然會出現頁面一瞬間白屏的狀況(應該是頁面渲染H5的緣由)
    @Override
    public void run() {
        fullLoadingView.setVisibility(View.GONE);
        setFullScreenEnable(false);
    }
}, 300);
複製代碼

16.打開外部應用時,多個頁面被調起

B應用打開A應用的cActivity時,A應用的其它Activity也會被打開(以前存在的,A應用一直在後臺) 這是taskAffinity的緣故,由於共用了同一個任務棧,因此在manifest文件中設置另一個任務棧便可:

android:taskAffinity=".payAct"
複製代碼

17.獲取webview的bitmap

根據獲得網頁的高度來設置webview的高度。同時h5作好適配,等比縮放寬高。與此同時可能出現,獲取bitmap信息有空白的ui內容,這時候要作延遲獲取,由於onPageFinished方法只是拉取了代碼,並不表示頁面渲染完畢。

webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
複製代碼

設置爲NARROW_COLUMNS時,若是webview自己不是全屏的,則分享出去的圖片則不能鋪滿全屏。

18.Error inflating class ImageView

Xml確定沒寫錯,可是爲啥高版本能夠,低版本就報錯呢?

在這裏插入圖片描述
這是由於圖片資源文件被放到了低版本文件夾中去了,因此高版本inflate不到。

19.EditText digits屬性

android:digits="0123456789"
複製代碼

經常使用來限定EditText的輸入格式。

20. android studio 全局搜索結果不全

緩存緣由

在這裏插入圖片描述

21. bottomSheetDialog設置圓角

<style name="BottomSheetDialog" parent="Theme.Design.Light.BottomSheetDialog">
    <item name="bottomSheetStyle">@style/bottomSheetStyleWrapper</item>
</style>
<style name="bottomSheetStyleWrapper" parent="Widget.Design.BottomSheet.Modal">
    <item name="android:background">@android:color/transparent</item>
</style>

new BottomSheetDialog(context,R.style.BottomSheetDialog)//設置style

複製代碼

22.ScrollView中的LinearLayout的layout_weigt無效

ScrollView中添加:

android:fillViewport="true" 
複製代碼

23.Process 'command 'E:\android\tool\sdk\build-tools\26.0.3\aapt.exe'' finished with non-zero exit value 1

重啓清緩存,構建、提升版本都無效,緣由在於編碼不規範!

android:drawableTop="2dp" //錯誤代碼!!!
複製代碼

通常出現該中問題能夠比的下文件的history看看有哪些資源文件引用等不規範的地方,實在找不出就回退版原本看下。

24.dialog中的TextView顯示不全的問題

是由於使用了contentTv.setText(Html.fromHtml(content)); 而不是直接的contentTv.setText(content); 前者的換行也沒用,也有可能由於其文本含有錯誤的HTML標籤文本的緣故,因此須要在使用時要考慮下兼容。

25.浮點型精度問題

因此,結合業務狀況來使用BigDecimal會好些。
相關文章
相關標籤/搜索