Android開発ノウハウ集合(更新中)
5139 ワード
知っていることをいくつか書いておきますが、
1.タイミングクリーンアップC:Documents and SettingsAndroid 123.下のandroidフォルダ
2.settings----Language&software keyで入力時にソフトキーボードを表示するかどうかの設定ができます
3.コード出力デバッグを行う場合、次のような出力方法があります.
/*異なるロゴ情報を印刷*/
4.Drawableフォルダ関連
リソースファイル名のネーミングには、すべて小文字が必要であり、個別の数値ネーミングはできません.
以前のバージョンではdrawableは1つしかありませんでしたが、2.1バージョンではdrawable-mdpi、drawable-ldpi、drawable-hdpiの3つがあり、これら3つは主にマルチ解像度をサポートするためです.
drawable-hdpi、drawable-mdpi、drawable-ldpiの違い:
(1)drawable-hdpiには、WVGA(480 x 800)、FWVGA(480x 854)などの高解像度の画像が格納されている.
(2)drawable-mdpiにはHVGA(320 x 480)のような中程度の解像度の画像が格納されている
(3)drawable-ldpiにはQVGA(240 x 320)のような低解像度の画像が格納されている
システムは機械の解像度に応じて、これらのフォルダの中に対応する画像を探します.開発プログラムでは、異なるプラットフォームの異なる画面と互換性を持つために、各フォルダに必要に応じて異なるバージョンの画像を保存することをお勧めします.
5.Context文字通りの意味コンテキスト:
framework packageにあるandroid.content.Contextでは、実はこのクラスはLONG型で、Win 32のHandleハンドルのように、多くの方法でContextを通じて呼び出し者のインスタンスを識別する必要があります.例えば、Toastの最初のパラメータはContextです.一般的にActivityでは、呼び出し者を表すインスタンスがActivityであり、buttonのonClick(View view)などの方法になった場合、私たちはthisを使うと間違いを報告するので、Activity Nameを使うかもしれません.これは、Contextを実装するクラスが主にAndroid特有のいくつかのモデル、Activity、Service、BroadcastReceiverを持っているためです.
従来のContextインスタンスを必要とする方法には、主に様々なサービス実装クラスがあります.たとえば、SensorManagerがインスタンス化する際にgetSystemService(String)メソッドを必要とする場合はContextのインスタンスで実行する必要があります.また、openFileInputや一般的なToastのmakeTextメソッドなどのプライベートファイルシステムI/Oもあります.
6.
emulator: ERROR: the user data image is used by another emulator. aborting
このような誤りが現れて私はネット上で調べて、プログラムが正常な関係がないため招いたようで、更に深いレベルの原因について、私もまだはっきりしていないで、もし誰が知っていたら教えて下きます
一時的な処理方法:
7.ウィンドウのフォーマットを半透明にする
8.画面サイズ取得
方法A:
方法B:
9.取得メモリサイズ
10.Appインストール/アンインストールイベントのリスニング
A.Define a class derived from class BroadcastReceiver;
B.Register broadcast receiver;
11.IPアドレスを取得する
12.Monitor Media Event: mount/unmount..
A.Define a class derived from class BroadcastReceiver;
B.Register broadcast receiver;
1.タイミングクリーンアップC:Documents and SettingsAndroid 123.下のandroidフォルダ
2.settings----Language&software keyで入力時にソフトキーボードを表示するかどうかの設定ができます
3.コード出力デバッグを行う場合、次のような出力方法があります.
/*異なるロゴ情報を印刷*/
Log.v(TAG, "VERBOSE");
Log.d(TAG, "DEBUG");
Log.i(TAG, "INFO");
Log.w(TAG, "WARN");
Log.e(TAG, "ERROR");
4.Drawableフォルダ関連
リソースファイル名のネーミングには、すべて小文字が必要であり、個別の数値ネーミングはできません.
以前のバージョンではdrawableは1つしかありませんでしたが、2.1バージョンではdrawable-mdpi、drawable-ldpi、drawable-hdpiの3つがあり、これら3つは主にマルチ解像度をサポートするためです.
drawable-hdpi、drawable-mdpi、drawable-ldpiの違い:
(1)drawable-hdpiには、WVGA(480 x 800)、FWVGA(480x 854)などの高解像度の画像が格納されている.
(2)drawable-mdpiにはHVGA(320 x 480)のような中程度の解像度の画像が格納されている
(3)drawable-ldpiにはQVGA(240 x 320)のような低解像度の画像が格納されている
システムは機械の解像度に応じて、これらのフォルダの中に対応する画像を探します.開発プログラムでは、異なるプラットフォームの異なる画面と互換性を持つために、各フォルダに必要に応じて異なるバージョンの画像を保存することをお勧めします.
5.Context文字通りの意味コンテキスト:
framework packageにあるandroid.content.Contextでは、実はこのクラスはLONG型で、Win 32のHandleハンドルのように、多くの方法でContextを通じて呼び出し者のインスタンスを識別する必要があります.例えば、Toastの最初のパラメータはContextです.一般的にActivityでは、呼び出し者を表すインスタンスがActivityであり、buttonのonClick(View view)などの方法になった場合、私たちはthisを使うと間違いを報告するので、Activity Nameを使うかもしれません.これは、Contextを実装するクラスが主にAndroid特有のいくつかのモデル、Activity、Service、BroadcastReceiverを持っているためです.
従来のContextインスタンスを必要とする方法には、主に様々なサービス実装クラスがあります.たとえば、SensorManagerがインスタンス化する際にgetSystemService(String)メソッドを必要とする場合はContextのインスタンスで実行する必要があります.また、openFileInputや一般的なToastのmakeTextメソッドなどのプライベートファイルシステムI/Oもあります.
6.
emulator: ERROR: the user data image is used by another emulator. aborting
このような誤りが現れて私はネット上で調べて、プログラムが正常な関係がないため招いたようで、更に深いレベルの原因について、私もまだはっきりしていないで、もし誰が知っていたら教えて下きます
一時的な処理方法:
adb kill-server
adb devices
7.ウィンドウのフォーマットを半透明にする
getWindow().setFormat(PixelFormat.TRANSLUCENT);
8.画面サイズ取得
方法A:
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
hAndW[0] = display.getWidth();
hAndW[1] = display.getHeight();
方法B:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
hAndW[0] = dm.widthPixels;
hAndW[1] = dm.heightPixels;
9.取得メモリサイズ
ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(outInfo);
//
outInfo.availMem
//
outInfo.lowMemory
10.Appインストール/アンインストールイベントのリスニング
A.Define a class derived from class BroadcastReceiver;
B.Register broadcast receiver;
MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_INSTALL);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addAction(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
...
filter.addDataScheme("package"); //This line is very important. Otherwise, broadcast can't be received.
registerReceiver(myReceiver, filter);
11.IPアドレスを取得する
A.Connect via WIFI
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
B.Connect via GPRS
public String getLocalIpAddress(){
try{
for(Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();){
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();){
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()){
return inetAddress.getHostAddress().toString();
}
}
}
}catch (SocketException ex){
Log.e(S.TAG, ex.toString());
}
return null;
}
12.Monitor Media Event: mount/unmount..
A.Define a class derived from class BroadcastReceiver;
B.Register broadcast receiver;
MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
filter.addAction(Intent.ACTION_MEDIA_EJECT);
...
filter.addDataScheme("file"); //This is important. Otherwise, broadcast can't be received
registerReceiver(myReceiver, filter);