1. ホーム

アンドロイドの開発プロセスで発生した問題点

2022-02-21 14:41:32

アンドロイドの開発中に遭遇した問題点を記録する。

1. 同じincludeをxml内で複数回使用することは可能ですか?

http://www.apkbus.com/android-104152-1-1.html

アンドロイドでのincludeタグの使用

http://blog.csdn.net/wangljgood/article/details/6556175

2.アンドロイドボタンがlinerlayoutの下部にセンタリングされている。
Set the weight outside the button to 1.0

http://www.cnblogs.com/gzggyy/archive/2013/05/17/3083218.html

http://www.eoeandroid.com/forum.php?mod=viewthread&tid=564
http://blog.csdn.net/feng88724/article/details/6318430
http://www.360doc.com/content/13/0102/22/6541311_257754535.shtml
http://blog.csdn.net/aminfo/article/details/7847761
http://blog.csdn.net/xsl1990/article/details/19125193
http://www.cnblogs.com/bavariama/archive/2013/01/29/2881225.html
http://www.oschina.net/question/97118_34523
http://www.eoeandroid.com/thread-67329-1-1.html

The android:scaleType controls how the image is resized/moved to match the size of the ImageView.

ScaleType / android:scaleType values are different in meaning.

CENTER /center is centered according to the original size of the image, when the length/width of the image exceeds the length/width of the View, the centered part of the image is intercepted and displayed.

CENTER_CROP / centerCrop expands the size of the image to make it equal to or larger than the length (width) of the View.

CENTER_INSIDE / centerInside centers the content of the image, making the image length/width equal to or smaller than the View's length/width by scaling down or original size.

FIT_CENTER / fitCenter to scale up/down the image to the width of the View and center it.

FIT_END / fitEnd scales the image up/down to the width of the View and displays it in the lower part of the View

FIT_START / fitStart scales the image up/down to the width of the View, displaying it in the upper part of the View

FIT_XY / fitXY to display the image without scaling up/down to the size of the View

MATRIX / matrix Use matrix to draw and dynamically shrink and enlarge the image to display it.


3.ボタン形状
<application  
 android:name="xxx.MyApplication">  

Problem: Using some classes under v4 package such as viewpager or fragmentActivity, when we press F3 we can't see the source code, this time we need to associate the source code, the association of the source code is not the same as the association of the android source code.

Solution.

1, first create a configuration file in the project libs directory: android-support-v4.jar.properties (this is recommended)

2, find the src source code address of android-support-v4 in the directory of the SDK you installed

My address is: D:\eclipse\android-sdk\extras\android\compatibility\v4\src

3. Edit the android-support-v4.jar.properties file as follows (note the double slash)

src = D:\\eclipse\\\android-sdk\\\extras\\\\android\\\compatibility\\\v4\\src

4, close your own project and then open it, at this time go in and select ViewPager after F3 you can see the source code.

5、Congratulations: the source code of android-support-v4 has been successfully associated with it.


4. アニメーション
Java->Code Style->Formatter in window's Preferences

By this step is to find the Ctrl+Shift+F formatting template, which cannot be modified directly here. Because it is the default template of eclipse, it is read-only.

We can new a Formatter, and then click edit to modify the template.

I modify the template is mainly to modify that Ctrl+Shift+F after changing my code for more lines.

Modify the Line Wrapping tab in the tab, there is a Maximum line with: 80 (default).

Here the default is 80 we can change it to 120, so that no more than 120 characters will not be line wrap!

Any other formatting you need can be modified in here. Of course you can also export your custom format, the export is xml format. Later in other places

You can also import. This way you don't have to customize it anymore.

http://androiddoc.qiniudn.com/


6.imageview スケールに合わせて拡大縮小する
Eclipse setting up unformatted comments


androidはどうやって時差を取得しているのですか?

7. 7. ImageLoaderは、エラー解決を使用する前に、設定でinitする必要があります。

imageLoader.init(ImageLoaderConfiguration.createDefault(MainActivity.this));

8.java.lang.StackOverflowError(スタックオーバーフローエラー)

StackOverflow この問題は、通常、プログラム内のデッドループや再帰的な呼び出しによって発生します。

9.java.lang.ClassCastException: android.app.Application は MyApplication にキャストできない問題

この例外が発生する理由は、プロジェクトに新しいアプリケーション クラスを追加した後 (public class Application extends android.app.Application) 、クラス宣言が manifest.xml に追加されないため、コンパイラーが例外をスローすることです: java.lang. ClassCastException: android.app.Application は android_serialport_api.sample.Application にキャストできません。

解決するには、manifest.xmlに追加します。[html] プレーンコピーを表示

byzanz  
Installation and use of byzanz

Installation under Ubuntu

  sudo add-apt-repository ppa:fossfreedom/byzanz
sudo apt-get update sudo apt-get install byzanz

You can complete the recording process with the following command.
byzanz-record -d 40 -x 0 -y 0 -w 400 -h 320 byzanz-demo.gif

Where.

    -d 40 is the duration of the recording for 40 seconds
    -x 0 is the horizontal coordinate of the recording area
    -y 0 the vertical coordinate of the recording area, remember: the top right corner of the screen is the origin (0,0)
    -w 400 the width of the recording area
    -h 320 The height of the recording area

byzanz-demo.gif Saved filename

Detailed parameters can be viewed via byzanz-record --help.
http://www.tuicool.com/articles/YFJrem

Also: GIF screen recorder for windows V2.0


10. event.getAction()。
11. android-support-v4 と android-support-v13 の両方が依存関係リストで見つかりました。
12. android-support-v4 のソースコードを関連付ける方法
This method is called when the state changes, where arg0 has three states (0, 1, 2). arg0 == 1 means it is scrolling, arg0 == 2 means it is done, and arg0 == 0 means it is not doing anything.

When the page starts sliding, the three states change in the order (1, 2, 0)


また、以下の方法もあります。 http://blog.csdn.net/leon90dm/article/details/8521939、試していません。

<スパン 上記はeclipseでのやり方ですが、androidstudioではもっと簡単です。

13.eclipse 設定を修正する Ctrl+Shift+F の長さ
int CC [] ={1,2,3}; When the array is defined with initial values, the length of the array is set to 3.
 and the array can no longer be reassigned as it was when it was defined
but one by one
CC[0]=1;
CC[1]=2;
CC[2]=3;
Array constants can only be used in initializers It seems to say that arrays cannot be used for initialization

Add the property android:overScrollMode="always" to the XML for the ScrollView

Method 1, set it when the control is initialized

gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
setSelector(new ColorDrawable(Color.TRANSPARENT)); listView.setSelector(new ColorDrawable(Color.TRANSPARENT)).

Method 2, set the listSelector property in the layout file

 

<GridView
	android:listSelector="@android:color/transparent"
	android:numColumns="auto_fit"
	android:columnWidth="50dp"
	android:stretchMode="spacingWidth"
	android:layout_weight="1.0"
	android:layout_height="0dip"
	android:layout_width="match_parent"/>

<ListView
	android:listSelector="@android:color/transparent"
	android:layout_height="match_parent"
	android:layout_width="match_parent"/>

Of course, you can also customize the effect you want.

We recommend using method 2 to decouple the logic code from the layout file. 


14. android-develop のミラーパス [強調].
	       The background image disappears to a black background when the listview is dragged. Our own background image does not show up until after dragging.

	Workaround.

	      In xml: android:scrollingCache="false" or android:cacheColorHint="#00000000"

	     In the code: setScrollingCacheEnabled(false) or setCacheColorHint(0) or setCacheColorHint(Color.TRANSPARENT);

	Question 2.

	    The top and bottom edges of the listview have black shadows.

	Solution.

	   In xml: android:fadingEdge="none"

	  In code: setFadingEdgeLength(0);

Workaround.

Set the LinearLayout as a child in the ScrollView and put other Views in the LinearLayout.


google、調和された後、vpnを介して、または上記のミラーパスにアクセスします。

15.fragment Andriod開発秘話~Fragmentのレイジーローディング

Activityでは、ビューページャー(または他のコンテナー)と複数のフラグメントを組み合わせて使用することがありますが、各フラグメントがローカルまたはネットワークからデータをロードする必要がある場合、Activityの最初の作成時に多くのリソースを初期化する必要が出てきます。このような結果は、もちろん満足できるものではありません。そこで、このフラグメントに切り替えたら、初期化だけするようにできないか?

その答えは、フラグメントのsetUserVisibleHintメソッドにあります。  http://blog.csdn.net/maosidiaoxian/article/details/38300627

フラグメントの非表示と表示と組み合わせて使用します。

16. 切り替え時に複数のフラグメントが再インスタンス化されないようにする

http://www.yrom.net/blog/2013/03/10/fragment-switch-not-restart/

17. Android版GridViewへのheaderView追加について

グリッドウィズヘッダーリストアダプター StickyGridHeaders/  http://www.eoeandroid.com/blog-696650-48907.html

18.Eclipseで書式なしコメントを設定する
                    ViewParent parent = getParent();
                    if (parent ! = null) {
                        parent.requestDisallowInterceptTouchEvent(true);
                    }

In a pure layout, just set all but the bottommost view to weight 1.


  解決方法は以下の通りです。Windows -> Preferces -> java -> Code Style -> Formatter -> Edit -> Comments Uncheck " Enable Javadoc comment formatting" を実行します。

19.アンドロイド-ウルトラ-プルトゥ-リフレッシュ
20.Linux ダイナミック GIF 記録
1.Android Socket based chat application(II) http://www.cnblogs.com/-run/archive/2012/04/07/2434837.html#!comments download demo
MySQL server and client installation under Ubuntu 14.04 http://www.linuxidc.com/Linux/2014-10/107912.htm
Ubuntu installation of mysql and simple operations http://www.cnblogs.com/zhuyp1015/p/3561470.html
How to create a database in mysql http://www.360doc.com/content/11/0719/18/2104556_134548635.shtml
Java connection steps to connect to MYSQL database http://database.51cto.com/art/201006/204217.htm


2.XMPP based live chat project requires google account, currently can't login This project is a set of android live chat server based on android+asmack+openfire+xmpp, the project is directly connected to google talk server, you can use google account to login to the client, testing requires at least two google accounts. Add friends in the program to chat

3.Android phone communicate with pc via socket http://blog.csdn.net/tobacco5648/article/details/7742295


22. viewpageワイヤレスループ

http://www.cnblogs.com/xinye/archive/2013/06/09/3129140.html

23. public void onPageScrollStateChanged(int arg0)
This method is called when the state changes, where arg0 has three states (0, 1, 2). arg0 == 1 means it is scrolling, arg0 == 2 means it is done, and arg0 == 0 means it is not doing anything.

When the page starts sliding, the three states change in the order (1, 2, 0)


24.

eclipse.ini ファイルに -Dorg.eclipse.swt.browser.DefaultType=mozilla を追加し、クリーニングすればOKです。cleanコマンドを実行

26. ビューページャーでギャラリー(1画面に複数のフラグメント)効果を実装する。
27. svnコマンド

svn addコマンドでファイルを追加すると、毎回対応するフォルダに移動するので、追加したいファイルが同じフォルダにない場合は、以下の-forceで簡単に追加することができます。$ svn add * --force  http://developer.51cto.com/art/201005/201633.htm

もちろん今はstudioがsvn gitのようなコード管理ツールと統合されているので、直接使うのも簡単です。

28. 配列定数は初期化子でのみ使用可能です。
int CC [] ={1,2,3}; When the array is defined with initial values, the length of the array is set to 3.
 and the array can no longer be reassigned as it was when it was defined
but one by one
CC[0]=1;
CC[1]=2;
CC[2]=3;
Array constants can only be used in initializers It seems to say that arrays cannot be used for initialization


29.アンドロイドのプラグイン
30.スクロールビューはコンテンツが少なくてもスクロールできる
Add the property android:overScrollMode="always" to the XML for the ScrollView


31.gridview/listview クリックするとandroidのデフォルトの背景が黄色になる、選択時に黄色の背景を削除する方法
Method 1, set it when the control is initialized

gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
setSelector(new ColorDrawable(Color.TRANSPARENT)); listView.setSelector(new ColorDrawable(Color.TRANSPARENT)).

Method 2, set the listSelector property in the layout file

 

<GridView
	android:listSelector="@android:color/transparent"
	android:numColumns="auto_fit"
	android:columnWidth="50dp"
	android:stretchMode="spacingWidth"
	android:layout_weight="1.0"
	android:layout_height="0dip"
	android:layout_width="match_parent"/>

<ListView
	android:listSelector="@android:color/transparent"
	android:layout_height="match_parent"
	android:layout_width="match_parent"/>

Of course, you can also customize the effect you want.

We recommend using method 2 to decouple the logic code from the layout file. 


リストビューの基本的な問題点は他に2つあります。 問題1.

	       The background image disappears to a black background when the listview is dragged. Our own background image does not show up until after dragging.

	Workaround.

	      In xml: android:scrollingCache="false" or android:cacheColorHint="#00000000"

	     In the code: setScrollingCacheEnabled(false) or setCacheColorHint(0) or setCacheColorHint(Color.TRANSPARENT);

	Question 2.

	    The top and bottom edges of the listview have black shadows.

	Solution.

	   In xml: android:fadingEdge="none"

	  In code: setFadingEdgeLength(0);


32.ScrollViewは1つの子しかサポートしません、エラー ScrollViewは1つの直接の子しかホストできません。
Workaround.

Set the LinearLayout as a child in the ScrollView and put other Views in the LinearLayout.


33.viewpager スペーシングとキャッシュを設定する

viewPager.setOffscreenPageLimit(TOTAL_COUNT); viewPager.setPageMargin(getResources().getDimensionPixelSize(R.dimen.page_margin)) を実行します。

34. ファーストレベルキャッシュとセカンドレベルキャッシュの意味は何ですか?

スタティックラムのキャッシュをレベル1キャッシュ、後から追加されるダイナミックRAMをレベル2キャッシュと呼びます。RAMにはスタティックRAMのSRAMとダイナミックRAMのDRAMがあり、後者の方がはるかに高速で、現在私たちが使っているメモリは一般にダイナミックRAMです。

システムの速度を上げるためには、キャッシュを拡張すればいい、大きければ大きいほど、キャッシュできるデータが多いほど、システムは速くなると言うルーキーがいる。

キャッシュは通常スタティックRAMで、これは非常に高速です。

が、スタティック RAM は統合性が低い(同じデータを保存する場合、スタティック RAM はダイナミック RAM の 6 倍になる)。

価格が高い(スタティックRAMは同じ容量でダイナミックRAMの4倍)。

このことから、スタティックRAMをキャッシュとして拡張することは、非常に愚かな行為であることがわかり

しかし、システムの性能と速度を向上させるためには、キャッシュを拡張してその

そこで妥協案として、元々のスタティックRAMのキャッシュを拡張する代わりに、高速なダイナミックRAMをキャッシュとして追加し

この高速ダイナミックRAMは、通常のダイナミックRAMより高速ですが、元のスタティックRAMキャッシュより低速です。

オリジナルのスタティックラムキャッシュをレベル1キャッシュ、後から追加されたダイナミックRAMをレベル2キャッシュと呼んでいます。

1次キャッシュ、2次キャッシュの内容は、いずれもアクセス頻度の高いメモリ内のデータの複製(マッピング)であり、高速なCPUによる低速なメモリへのアクセスを軽減するために存在する。通常、CPUはデータや命令を探す際、まず1次キャッシュ、見つからなければ2次キャッシュ、それでも見つからなければメモリという順序で探す。

35. パフォーマンスの最適化:HashMapの代わりにSparseArrayを使用する<Integer,Object>

http://blog.csdn.net/haukey/article/details/8200404

36. コード指定

http://liuzhichao.com/p/1781.html#more-1781

37. // 念のため、親インターセプトを不許可にする。

                    ViewParent parent = getParent();
                    if (parent ! = null) {
                        parent.requestDisallowInterceptTouchEvent(true);
                    }



38. linerlayoutレイアウト、親ビューの下にビューを割り当てる方法
In a pure layout, just set all but the bottommost view to weight 1.


39. 左側にドロワーがあるeditview

もし、左側か右側に画像を追加するだけなら、EditeViewのプロパティの一つ; android:drawableLeft を使って、テキストの左側にdrawableを出力することができます。真ん中やランダムに画像を追加する場合は、テキストを混在させるためにEditViewを書き換える必要があります

40. 暗号化アルゴリズム

41.01-07 15:34:23.160: E/AndroidRuntime(1932): 原因:java.lang.UnsatisfiedLinkError: AESをロードできませんでした:findLibraryはnullを返しました。

01-07 15:37:43.240: E/AndroidRuntime(2537): java.lang.UnsatisfiedLinkError: ネイティブメソッドが見つかりません:com.jetsun.hbfc.core.AESCoder. decryptCNew:()Ljava/lang /String;

01-07 15:37:43.230: D/dalvikvm(2537)です。JNI_OnLoad が /data/data/com.jetsun.hbfc/lib/libAES.so 0x4160abe0 で見つからず、初期化をスキップしています。

01-07 15:37:43.230: W/dalvikvm(2537)。ネイティブの Lcom/jetsun/hbfc/core/AESCoder;.decryptCNew:()Ljava/lang/String の実装が見つかりませんでした。

整数からポインタをキャストなしで返す [デフォルトで有効] 。

01-07 17:51:47.520: D/dalvikvm(12438)です。No JNI_OnLoad found in /data/data/com.jetsun.hbfc/lib/libAES.so 0x41601a80, skip init 01-07 17:51: 47.525: I/JNIMsg(12438): jclass == NULL 01-07 17:51:47.525: I/JNIMsg(12438): step 1 : jclass Begin ok ! 01-07 17:51:47.525: I/JNIMsg(12438): encryptC == NULL 01-07 17:51:47.525: I/JNIMsg(12438): step 2 : decryptC new failed 01-07 17:51:47.525: ステップ 2 : encryptC new failed 01-07 17:51:47.525: I/JNIMsg(12438): step 2 : encryptC == null 01-07 17:52:52.525 525: I/JNIMsg(12438): step 2 : decryptC new failed 01-07 17:51:47.525: I/JNIMsg(12438): step 2 : decryptC new failed 01-07 17:51:47.525: I/ JNIMsg(12438): step 2 : decryptC method prepared ok !

41.jni ベース

アンドロイド __android_log_print 印刷機能__ ソースコード  http://blog.csdn.net/sno_guo/article/details/8143050  JNIフィールド記述子 "([Ljava/lang/String;)V"  http://fgsink.blog.163.com/blog/static/16716997020124310169911/  JNI関数の説明 http://blog.csdn.net/caimouse/article/category/661872/2  Android NDKベースの学習の旅 ----- C言語からJavaへの呼び出し http://www.cnblogs.com/luxiaofeng54/archive/2011/08/17/2142000.html  JNI_OnLoad が見つからない ... init をスキップする http://stackoverflow.com/questions/11798054/no-jni-onload-found-in-skipping-init  eclipse ndkの設定に関する詳細な説明 http://www.cnblogs.com/chenjiajin/archive/2012/04/12/2444188.html  Android NDKベースのラーニングジャーニー

ndkのハイライトを集計

http://www.cnblogs.com/chenjiajin/archive/2012/04/12/2444188.html http://www.cnblogs.com/luxiaofeng54/archive/2011/08/17/2142000.html http://blog.csdn.net/caimouse/article/details/6853795 http://fgsink.blog.163.com/blog/#m=0&t=1&c=fks_084071081085086066085080094095085080086066082095095068084

42.md5 aes暗号化

固定鍵キーによるAES暗号化  http://fenglingcorp.iteye.com/blog/586600  android Rsa アルゴリズム 暗号化 平文-->公開鍵-->暗号文 暗号文-->鍵-->平文  http://blog.sina.com.cn/s/blog_6568e7880100x8r9.html  javaの暗号化・復号化の技術 著者 http://snowolf.iteye.com/blog/379860  AndroidのAES暗号化アルゴリズムとその実装 http://blog.csdn.net/randyjiawenjie/article/details/6587986  Android向けAES暗号化・復号化ツール http://www.cnblogs.com/carlosk/archive/2012/05/18/2507975.html

暗号化方式 AES 暗号化方式 AES/CBC/PKCS5Padding 暗号化ベクトル iv secretkey 秘密鍵 符号化方式 utf-8

43. プロガードの使用

コードが難読化されたときに、難読化されない部分。

44.ソケット

ソケットの簡単な使い方  http://www.cnblogs.com/harrisonpc/archive/2011/03/31/2001565.html  インスタントメッセージング
xmppによるopenfireの導入と展開 openfireのスマック開発 [1]  http://blog.csdn.net/shimiso/article/details/8816558  Openfire+Sparkチャットデモ  http://www.apkbus.com/android-69413-1-1.html  openfireのAndroidクライアント実装 http://download.csdn.net/detail/sky_monkey/5820879#comment

45. オーディオコーデック

FFmpegをAndroidに移植する - コンパイル編  http://blog.csdn.net/gobitan/article/details/22750719#reply

46.f5 ロードバランシング
47. ポケット・ナビゲーター -- APPアーキテクチャとナビゲーション・デザイン  http://www.yixieshi.com/ucd/13188.html

 APPナビゲーションデザインの手順は、大きく分けて以下の3つです。

  1. APPフレームワークの構成:情報アーキテクチャまたはタスク分析

  2.フレームワークの階層判定:フラットとツリー

  3. ナビゲーションに特化した表現:コントロールフォームと配置

48. モバイルアプリのアーキテクチャ設計

http://blog.csdn.net/uxyheaven/article/details/38041091  レイヤードアーキテクチャ+MVCによるモバイルアプリの設計 http://www.cnblogs.com/Logen/archive/2012/11/08/2760638.html

49.アンドロイドブティック オープンソースプロジェクト

http://blog.csdn.net/caesardadi/article/details/21091645

50.GDBを使ったJNIコードのデバッグ

Android NDKアプリケーションの原理  http://shihongzhi.com/ndk/  NDK開発ガイド - Android NDKの概要 http://hualang.iteye.com/blog/1135105

51.ubuntuでSogou入力メソッド使用中に突然"Sogouパネルプログラムの読み込みに失敗しました入力メソッドを使用するには再起動してください"と表示され、使用できない

解決方法 ターミナル sogou-qimpanel &

52. layout_alignBaselineの役割
53. android:layout_weightの本当の意味

android:layout_weightの本当の意味は、一度Viewが設定されると(有効であると仮定して)、Viewの幅は元の幅(android:layout_width)に残りのスペースの割合を加えたものと同じです!android:layout_weightは、Viewが設定された後に、そのViewの幅を変更することができます。  簡単に言うと、残ったスペースの重さです。 http://blog.csdn.net/yanzi1225627/article/details/24667299

54. インスタントメッセージング

基本:ソケット 原理:長いソケット接続を保証する方法  http://blog.csdn.net/chengyingzhilian/article/details/7633640  アンドロイドのサーバーへの長い接続 [ソケット  http://blog.csdn.net/yaya_soft/article/details/11778593

1.Android Socket based chat application(II) http://www.cnblogs.com/-run/archive/2012/04/07/2434837.html#!comments download demo
MySQL server and client installation under Ubuntu 14.04 http://www.linuxidc.com/Linux/2014-10/107912.htm
Ubuntu installation of mysql and simple operations http://www.cnblogs.com/zhuyp1015/p/3561470.html
How to create a database in mysql http://www.360doc.com/content/11/0719/18/2104556_134548635.shtml
Java connection steps to connect to MYSQL database http://database.51cto.com/art/201006/204217.htm


2.XMPP based live chat project requires google account, currently can't login This project is a set of android live chat server based on android+asmack+openfire+xmpp, the project is directly connected to google talk server, you can use google account to login to the client, testing requires at least two google accounts. Add friends in the program to chat

3.Android phone communicate with pc via socket http://blog.csdn.net/tobacco5648/article/details/7742295


55. ubuntuは、ポート占有率、実行中のプログラム、プロセスの強制終了を表示します。