Androidの日々の開発問題の要約:これらの問題は十分に熱くなく、いつでも削除されて暴走します!

日々の開発でさまざまな開発上の問題に遭遇し、そのうちのいくつかを選んで共有しました。いくつかの問題は非常に単純でコーディング標準に属しており、いくつかは特定の状況で発生する問題であり、あまり一般的ではありません。不正確な場所、一緒に議論することを歓迎します〜

1.コンテンツを追加する前にrequestFeature()を呼び出す必要があります

requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题

onCreateの前に呼び出す必要があります。そうしないと、4.4.2モデルでエラーが報告されます。

2.ブラウザを開くとMi6.0システムがクラッシュする

アクティビティコンテキストの外部からstartActivity()を呼び出すには、FLAG_NEW_TASKフラグが必要です。

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メソッドを使用すると、言語を切り替えた後、このメソッドによって参照されるリソースコンテンツは切り替えられません。別のアクティビティでgetStringメソッドに変更して取得できます

5.Webビューをクリックした後にMeizu7.0システムがクラッシュする

ActivityManagerForce removing ActivityRecord{6dd5804 u0 包名/当前WebviewActivity t8819}: app died, no saved state

onCustumViewメソッドをサポートしていません。削除するだけです。

6.ボタンの英語はデフォルトで大文字です

android:textAllCaps="false"

7.インビボでプッシュを受信した後、指定されたページを開くことができません(まったく応答がありません)

システムは自動的にポップアップしますが、設定を入力して開くだけです。

8.TextViewが完全に表示されない

TextViewはWrapContent、lines = 1を使用しますが、コンテンツは完全には表示されません。
画面の一部にのみ表示でき、属性アニメーションを引き出すと画面の外側の部分は使用できません。
(この種の問題は、マーキーコントロールをカスタマイズするときに発生します)

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の幅を設定します。

9.インテントを処理するアクティビティが見つかりません{act = android.intent.action.VIEW_DOWNLOADS flg = 0x10000000}

Samsung SM-C7000(C7)6.0.1システムがこの問題で発生します

if(intent.resolve(context.getPackageManager))!=null){
...
}

startActivityに暗黙のインテントを使用する場合は、この種の判断を追加してcatchを試すのが最善です。これは、どのモデルかわからない場合に問題になるためです。

10.ダイアログコーナーを設定します

getWindow().setBackgroundDrawableResource(R.drawable.widget_dialog_round_corner);

11.SamsungモデルがエラーE / rsC ++(16241)を報告します:RS CPPエラー:0〜25ピクセルの範囲外のぼかし半径

主なアイデアは、TextViewのshadowRadiusを25より大きくすることはできないということです。これは、xmlコードの問題であり、shadowRadiusを小さい値に変更するだけです。

ボタンの下の部分のぼやけもこの問題によって引き起こされます。

12. WeChatへのリンクを共有する場合、リンクのサムネイルを表示できません

Umeng共有リンクのコンテンツに赤い封筒が含まれている場合、画像は無効になり、表示されません(共有の対象は自分で見ることができます)

13.ブラウザを使用して接尾辞apkが付いたアドレスを開くと、Xiaomi携帯電話のアプリを正常にダウンロードしてインストールできません

アリババクラウドとAppbaoのアドレスは、Xiaomi携帯電話システムに付属のダウンローダーを使用してダウンロードおよびインストールするために傍受されます。このダウンローダーはデフォルトでThunderダウンロードコンポーネントを使用します。アリババクラウドアドレスがダウンロードされたら、プッシュボタンをクリックします。ダウンロードが完了した後、ファイルを認識できず(アプリケーションの宝物アドレスを正常にインストールできます)、XiaomiおよびHuaweiアプリケーションのダウンロードアドレスと.apkで終わらないアドレスがブラウザにジャンプしてダウンロードします。通常のプロセス。Xiaomi携帯電話のThunderダウンロードコンポーネント機能をオフにした後、プッシュをクリックして通常どおりにインストールでき、ファイルが認識されないという問題は発生しません。

したがって、この問題の解決策は非常に簡単です。ダウンロードアドレスをapk以外の終了アドレスに変更するだけです。

14.デスクトップアイコンが置き換えられない理由

android:roundIcon="@mipmap/logo"

アプリケーションのこの属性も設定する必要があります

15.アプリケーションを開くときの白い画面の問題を最適化する

画面が白くなるのは、システム自体の起動に時間がかかるためです(デフォルトでは背景が白です)。
一般診療:

テーマを設定する

<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>

特定のアクティビティの場合:アクティビティでフルスクリーンの起動図を表示する必要があるだけでなく、コンテンツのロード後に最新のコンテンツ(フルスクリーンではない)を表示する必要がある場合は、関連する方法を判断して設定する必要があります。

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ページ自体のレンダリングが原因であるため、現在の処理方法は、白い画面が点滅する瞬間をカバーするために、起動ページの遅延却下効果を作成することです。

fullLoadingView.postDelayed(new Runnable() {//需要做下延迟,否则会出现页面一瞬间白屏的情况(应该是页面渲染H5的原因)
    @Override
    public void run() {
        fullLoadingView.setVisibility(View.GONE);
        setFullScreenEnable(false);
    }
}, 300);

16.外部アプリケーションを開くと、複数のページが呼び出されます

アプリケーションBがアプリケーションAのcActivityを開くと、アプリケーションAの他のアクティビティも開かれます(以前はアプリケーションAがバックグラウンドにありました)。
これは、同じタスクスタックを共有するため、taskAffinityによるものです。マニフェストファイル1つのタスクスタックで十分です。

android:taskAffinity=".payAct"

17.webviewのビットマップを取得します

取得したWebページの高さに応じてWebビューの高さを設定します。同時に、h5はうまく適応し、幅と高さは比例してスケーリングされます。同時に、取得したビットマップ情報に空白のUIコンテンツが含まれている場合がありますが、onPageFinishedメソッドはコードをプルするだけで、ページがレンダリングされるわけではないため、この時点では取得を遅らせる必要があります。 。

webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);

NARROW_COLUMNSに設定すると、Webビュー自体が全画面表示でない場合、共有画像を全画面表示にすることはできません。

18.クラスImageViewの膨張エラー

Xmlは間違いなく間違っていませんが、なぜ高バージョンはOKなのに、低バージョンはエラーを報告するのですか?

これは、イメージリソースファイルが低バージョンのフォルダーに配置されているため、高バージョンのインフレートを使用できないためです。

19.EditText桁プロパティ

android:digits="0123456789"

EditTextの入力形式を制限するためによく使用されます。

20. AndroidStudioのグ​​ローバル検索結果が不完全です

キャッシングの理由

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 'コマンド' E:\ android \ tool \ sdk \ build-tools \ 26.0.3 \ aapt.exe ''がゼロ以外の終了値1で終了しました

再起動してキャッシュをクリアし、バージョンをビルドして改善することは無効です。その理由は、コーディングが標準化されていないためです。

android:drawableTop="2dp" //错误代码!!!

一般に、問題が発生した場合は、ファイルの履歴を比較して、どのリソースファイル参照やその他の不規則性を確認できます。見つからない場合は、バージョンをロールバックして確認してください。

24.ダイアログでのTextViewの不完全な表示の問題

これは
、直接のcontentTv.setText(content);の代わりにcontentTv.setText(Html.fromHtml(content));が使用されているためです。
前者の改行も役に立たず、テキストに間違ったHTMLタグテキストが含まれている可能性があります。を使用する場合は、互換性を考慮する必要があります。

25.浮動小数点の精度の問題

したがって、BigDecimalをビジネス条件と組み合わせて使用​​することをお勧めします。

やっと

言うまでもなく、誰もがコンセンサスを持っていると思います。業界がどうであれ、最も強力な人物は間違いなくピラミッドの終わりにいる人物です。したがって、優れたプログラマーになりたいのであれば、背を高くする必要があります。技術専門家になることは一夜にして問題ではなく、時間の浪費と技術の蓄積が必要です。

この点については、当時Androidの方向性を確立したときに、技術を体系的に学ぶ方法など、成長の道筋を整理し始めました。

ここでは、最後に、整理に1年以上かかった一連のAndroid学習リソースを共有します:Androidソースコード分析、Androidサードパーティライブラリソースノート、Androidアドバンストアーキテクト7トピック学習、長年にわたるBATインタビュー質問分析パッケージ、 Androidマスタースタディノートなど。待ってください。これらのコンテンツは、フルバージョンが必要なすべての人や友人と無料で共有できます。すべてのコンテンツを表示するにはここをクリックしてください。

おすすめ

転載: blog.csdn.net/weixin_44339238/article/details/112477932
おすすめ