Android 開發小技巧(2)
轉自:農民伯伯: http://www.cnblogs.com/over140/
常用代碼
7.1???在當前Activity中啟動另外一個Activity
startActivity(new Intent(this,目標Activity.class));
7.2???從當前ContentView從查找控件
(Button)findViewById(R.id.btnAbout)//R.id.btnAbout指控件id。
7.3???獲取屏幕寬高
DisplayMetrics dm = new DisplayMetrics();
//獲取窗口屬性
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;//320
int screenHeight = dm.heightPixels;//480
7.4???無標題欄、全屏
//無標題欄
requestWindowFeature(Window.FEATURE_NO_TITLE);
//全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//注意在setContentView()之前調用,否則無效。
7.5???注冊activity
所有用到的Activity都必須在AndroidManifest.xml中注冊,否則會報空指針錯誤。如:
八、?????????????Adb命令行
8.1?? DOS進入android-sdk-windows\tools目錄
8.2?? Linux
登錄linux命令:adb shell
列出當前文件:ls
刪除文件:rm?文件名
8.3?? Sqlite
登錄sqlite命令:sqlite3
8.4?? Adb命令
列出當前有哪些活動的模擬器:adb devices
上傳文件:adb push
安裝apk文件:adb install android123.apk
九、??Apk文件破解
9.1???獲取apk的資源圖片
直接用?WinRAR打開,res/drawable直接拖拽出來即可。
9.2???獲取xml文件信息
雖然能用WinRAR看到里面的xml文件,但是xml是經過優化的,無法直接查看,需要使用apktool工具,-:https://code.google.com/p/android-apktool/。
下載apktool-1.3.1.tar.bz2和apktool-install-windows-2.2_r01-2.tar.bz2解壓到同一個目錄,然后把待破解的apk文件拷貝到同一目錄,DOS進入該目錄,輸入:aapt d 91callinfo.apk 91callinfo,這里第四個參數為破解完存放的路徑。
9.3???反編譯dex獲取Java源代碼
Apktool工具只能反編譯成smali的中間代碼文件,這里需要借助另外一個開源工具:dex2jar,-:http://code.google.com/p/dex2jar/。這個工具不能直接翻譯成java文件,但是可以把dex文件轉換成jar文件,然后可以通過jad工具把jar文件反編譯成Java源文件,如果只是看看源碼的話可以用jd-gui,-:
http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip?。
dex文件(classes.dex)可以用WinRAR從apk文件中解壓出來。
十、?????????????小技巧
10.1??????????使用系統的圖標
例如調用系統打電話的圖標:
10.6??????????界面可視化布局工具 系統提供可視化布局并不好用,這里推薦一款,布局完后點生成代碼即可: DroidDraw:http://www.droiddraw.org/ 10.7??????????在Eclipse中看Android的源碼 將源代碼拷貝至android-sdk-windows\platforms\android-4\sources下即可。注意源碼版本對應android-4文件夾,這里指Android1.6的源碼。 十一、??????Q & A 11.1??????????用模擬器調試頻繁連不上,或者報emulator-5554 disconnected的錯誤? Window(窗口) -> Show Views(顯示視圖) -> device -> view menu(視圖菜單)-> Reset adb 11.2??????????匿名類中如何使用this? classname(類名).this *去掉android的屏幕上的title bar 在進行android開發時,每個Activity會默認帶上一個title bar用以顯示程序名,有時為了擴大屏幕的顯示區域需要去掉這個title bar,去掉屏幕上的title bar有3個方法, 第一個方法是在代碼去掉title bar 在Activity的onCreate中加入如下代碼: this.requestWindowFeature(Window.FEATURE_NO_TITLE); 但是使用這種方法,是在Activity將要顯示的時候,仍然會出現title bar,然后再將其去掉,用戶體驗不好。 第二種方法是使用style配置文件,步驟如下: 1.在res/values文件夾下創建一個xml文件,名為mainStyle.xml,內容如下: 2.然后在AndroidManifest.xml中需要去掉title bar的activities的節點上加上一個樣式屬性,代碼如下 android:configChanges="keyboardHidden|orientation|locale" android:theme="@style/NoTitle"> 第三種方法是直接在AndroidManifest.xml中進行修改, 把需要去掉title bar的activities的節點上加上一個樣式屬性,代碼如下: android:configChanges="keyboardHidden|orientation" android:theme="@android:style/Theme.NoTitleBar"/> 也可以在AndroidManifest.xml文件的application節點上修改,對所有的activity都有效,代碼如下: *Android獲得Location信息的方法 在開發一些與定位有關的程序的時候,經常需要獲得設備的Location,獲取設備的Location的方法如下: 1.創建一個LocationListener接口的實現類,可以使用匿名類,代碼如下: public final LocationListener mLocationListener01 = new LocationListener() { @Override public void onLocationChanged(Location location) {} @Override public void onProviderDisabled(String provider) {} @Override public void onProviderEnabled(String provider) {} @Override public void onStatusChanged(String provider, int status, Bundle extras) {} }; 2.創建LocationManager,并且調用其上的requestLocationUpdates方法,注意:這里需要GPS和NetWork都要請求更新location,前者為WIFI/基站定位,后者為GPS定位,當一種定位方式不能使用的時候,還可以使用另外一種。 LocationManager locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 10, mLocationListener01); locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10, mLocationListener01); 3.編寫獲取location信息的方法,在這里先使用GPS定位方式獲取location信息,如果獲取不到就使用WIFI/基站方式獲取: public static Location getLocation(Context context) { LocationManager locMan = (LocationManager) context .getSystemService(Context.LOCATION_SERVICE); Location location = locMan .getLastKnownLocation(LocationManager.GPS_PROVIDER); if(location==null){ location = locMan .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); } Log.i(TAG, "---location:" + location); return location; } 如何有效適應Android機差異較大的屏幕分辨率 其實,在你layout的xml文件中,編寫的時候是不是用了許多的padding呢?如果是,那你就蛋疼了。因為這樣的布局永遠是無法適應所有手機屏幕的。正確的做法應該是使用weight屬性。 過程很簡單:首先,將你控件的layout中的width、height設置為fill-parent,不要使用wrap——content。因為wrap-content的大小是不固定的。而weight(權重)這個屬性很好的解決了這個問題。 當包裹在控件外面的Layout的width、height屬性都設置為fill-parent時,可以利用weight的反比特性。即如果控件A設置weight為9,控件B設置weight為20,那么A所占的空間為20/(9+20),B所占的空間為9/(9+20)。這樣的反比屬性對任何分辨率下的手機都是合適的。 當然,字體就不行了。那怎么保證字體能夠跟布局一樣能夠自適應呢? 呵呵,很簡單,就是在你的res文件夾中創建一個文件夾,叫做values-320x240。其中320x240是你手機屏幕的分辨率,根據你手機屏幕的情況做不同的命名,例如values-800x480。在該文件夾下創建一個dimens.xml文件,定義各種字體的大小。那么系統就會自動根據你手機屏幕的分辨率去調用響應的文件夾。 另外,值得提醒的是,記得在你默認的values文件下的dimens.xml文件中也要寫上相應的字體大小哦,因為當系統無法認識你手機屏幕大小的時候,它會自動去找你默認文件中的東西,沒有寫的話程序會崩潰。 Android HTTP Java
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。