日々の開発でさまざまな開発上の問題に遭遇し、そのうちのいくつかを選んで共有しました。いくつかの問題は非常に単純でコーディング標準に属しており、いくつかは特定の状況で発生する問題であり、あまり一般的ではありません。不正確な場所、一緒に議論することを歓迎します〜
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マスタースタディノートなど。待ってください。これらのコンテンツは、フルバージョンが必要なすべての人や友人と無料で共有できます。すべてのコンテンツを表示するには、ここをクリックしてください。