歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android API個人庫的建設(附源碼)

建設個人的API庫, 不但可以積累一些常見的工作經驗, 更重要的養成持續改進的好習慣, 因此決定從今天起, 開始建設Android的API庫, 關鍵點在於

1. 常用GUI

2. 四大組件的應用場景

3. IPC 場景

4 JNI場景

5 Binder 機制, 尤其是本地側 


借助系統Activity過濾的功能, 可以自動實現對上述的系統API描述的Activity進行加載, 加載如下面的源碼所示:

  1. package com.ostrichmyself;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6.   
  7. import android.app.ListActivity;  
  8. import android.content.Intent;  
  9. import android.content.pm.PackageManager;  
  10. import android.content.pm.ResolveInfo;  
  11. import android.os.Bundle;  
  12. import android.util.Log;  
  13. import android.view.View;  
  14. import android.widget.ListView;  
  15. import android.widget.SimpleAdapter;  
  16.   
  17. /** 
  18.  * 這個界面完全是用來展示的, 它的作用是啟動其它待展示的Activity. 
  19.  * 目前用List方式去展示, 參考API Demo的實現 
  20.  * @author tiant5 
  21.  * 
  22.  */  
  23. public class MainActivity extends ListActivity {  
  24.     /** Called when the activity is first created. */  
  25.     @Override  
  26.     public void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.           
  29.           
  30.           
  31.         setListAdapter(new SimpleAdapter(this, getData(),  
  32.                 android.R.layout.simple_list_item_1, new String[] { "title"},  
  33.                 new int[] { android.R.id.text1}));  
  34.         getListView().setTextFilterEnabled(true);  
  35.           
  36.           
  37.   
  38.     }  
  39.       
  40.     private List<HashMap<String, Object>> getData()  
  41.     {  
  42.           
  43.         ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();  
  44.         //通過下面的方式提取設定的UI Activity   
  45.         Intent mainIntent = new Intent("action.ostrichmyself.ui"null);  
  46.         mainIntent.addCategory("catagory.ostrichmyself.ui");  
  47.   
  48.         PackageManager pm = getPackageManager();  
  49.         List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0);  
  50.         for (int i = 0; i < list.size(); i++)  
  51.         {  
  52.             HashMap<String, Object> hashMap = new HashMap<String, Object>();  
  53.             ResolveInfo info = list.get(i);  
  54.             Log.e("--ostrichmyself--", info.activityInfo + "-activeInfo-");  
  55.             hashMap.put("title", info.loadLabel(pm).toString());  
  56.             Intent intent = createIntent(info.activityInfo.applicationInfo.packageName, info.activityInfo.name);  
  57.             hashMap.put("intent", intent);  
  58.             data.add(hashMap);  
  59.         }  
  60.         return data;  
  61.     }  
  62.       
  63.     protected Intent createIntent(String pkg, String componentName) {  
  64.         Intent result = new Intent();  
  65.         result.setClassName(pkg, componentName);  
  66.         return result;  
  67.     }  
  68.       
  69.       
  70.     @Override  
  71.     protected void onListItemClick(ListView l, View v, int position, long id) {  
  72.         HashMap<String, Object> map = (HashMap<String, Object>) l.getItemAtPosition(position);  
  73.   
  74.         Intent intent = (Intent) map.get("intent");  
  75.         startActivity(intent);  
  76.     }  
  77. }  
這樣,當Manifest.mf文件中描述了對應的action為action.ostrichmyself.ui; category為category.ostrichmyself.ui的activity時, 將自動加載成列表.Manifest.mf文件如下描述:
  1. <activity android:name=".composite.GridActivity001" android:label="Grid效果">  
  2.     <intent-filter>  
  3.         <category android:name="catagory.ostrichmyself.ui" />  
  4.          <action android:name="action.ostrichmyself.ui" />  
  5.     </intent-filter>  
  6. </activity>  

第一批納入規劃的為UI的布局, 這些布局大多來自比較優秀的實踐, 部分采用了反編譯的方式得到.


  1. 並列的應用列表方式.
  2. 優秀實踐的登錄界面

展示效果:

Android API個人庫的建設源碼下載地址:

相關文件下載在Linux公社的1號FTP服務器裡,下載地址:

FTP地址:ftp://www.linuxidc.com

用戶名:www.linuxidc.com

密碼:www.muu.cc

在 2011年LinuxIDC.com\10月\10月\Android API個人庫的建設源碼

下載方法見 http://www.linuxidc.net/thread-1187-1-1.html

Copyright © Linux教程網 All Rights Reserved