開源專案之Android Afinal框架
專案如圖:
本文參考網路!
Afinal是一個開源的android的orm和ioc應用開發框架,其特點是小巧靈活,程式碼入侵量少。在android應用開發中,通過Afinal的ioc框架,諸如ui繫結,事件繫結,通過註解可以自動繫結。通過Afinal的orm框架,無需任何配置資訊,一行程式碼就可以對android的sqlite資料庫進行增刪改查操作。同時,Afinal內嵌了finalHttp等簡單易用的工具,可以輕鬆的對http就行求情的操作。Afinal的宗旨是簡潔,快速。約定大於配置的方式。儘量一行程式碼完成所有事情。
Afinal框架的各個模組帶來了的便捷
1、FinalDB模組:android中的orm框架,一行程式碼就可以進行增刪改查。支援一對多,多對一等查詢。
2、FinalActivity模組:android中的ioc框架,完全註解方式就可以進行UI繫結和事件繫結。無需findViewById和setClickListener等。
3、FinalHttp模組:通過httpclient進行封裝http資料請求,支援ajax方式載入。
4、FinalBitmap模組:通過FinalBitmap,imageview載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。FinalBitmap可以配置執行緒載入執行緒數量,快取大小,快取路徑,載入顯示動畫等。FinalBitmap的記憶體管理使用lru演算法,沒有使用弱引用(android2.3以後google已經不建議使用弱引用,android2.3後強行回收軟引用和弱引用,詳情檢視android官方文件),更好的管理bitmap記憶體。FinalBitmap可以自定義下載器,用來擴充套件其他協議顯示網路圖片,比如ftp等。同時可以自定義bitmap顯示器,在imageview顯示圖片的時候播放動畫等(預設是漸變動畫顯示)。
將Afinal框架帶進你的工程的過程
1.下載Afinal的jar包。推薦到GIT上下載(https://github.com/yangfuhai/afinal),這裡不僅提供了Afinal 的jar包,還包括Afinal的原始碼以及詳細API。
2.將下載後的jar包新增到Android工程裡面。相信大家都會,不過也可能會遇到當新增了Afinal包後,繼承FinalActivity的Activity會報java.lang.classNotFound這種錯誤,這種情況你最好將Afinal 包直接拷貝到Android工程的lib資料夾裡面。這時你看Android的Dependencies包裡面如果有了Afinal包就再次執行APK應該就不會有錯了。
3.一個依賴Afinal包的工程還需要新增它所需要的許可權:我們在AndroidManifest.xml檔案裡面新增如下許可權:
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
FinalDB使用方法:
- FinalDb db = FinalDb.create(this);
- User user = new User();
- user.setEmail("mail@tsz.net");
- user.setId(1);
- user.setName("michael yang");
- db.save(user);
FinalActivity使用方法:
- public class AfinalDemoActivity extends FinalActivity {
- //無需呼叫findViewById和setOnclickListener等
- @ViewInject(id=R.id.button,click="btnClick") Button button;
- @ViewInject(id=R.id.textView) TextView textView;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- public void btnClick(View v){
- textView.setText("text set form button");
- }
- }
FinalHttp使用方法:
- FinalHttp fh = new FinalHttp();
- fh.get("http://www.yangfuhai.com", new AjaxCallBack(){
- @Override
- public void onLoading(long count, long current) { //每1秒鐘自動被回撥一次
- textView.setText(current+"/"+count);
- }
- @Override
- public void onSuccess(String t) {
- textView.setText(t==null?"null":t);
- }
- @Override
- public void onStart() {
- //開始http請求的時候回撥
- }
- @Override
- public void onFailure(Throwable t, String strMsg) {
- //載入失敗的時候回撥
- }
- });
上傳檔案 或者提交資料:
- AjaxParams params = new AjaxParams();
- params.put("username", "michael yang");
- params.put("password", "123456");
- params.put("email", "test@tsz.net");
- params.put("profile_picture", new File("/mnt/sdcard/pic.jpg")); // 上傳檔案
- params.put("profile_picture2", inputStream); // 上傳資料流
- params.put("profile_picture3", new ByteArrayInputStream(bytes)); // 提交位元組流
- FinalHttp fh = new FinalHttp();
- fh.post("http://www.yangfuhai.com", params, new AjaxCallBack(){
- @Override
- public void onLoading(long count, long current) {
- textView.setText(current+"/"+count);
- }
- @Override
- public void onSuccess(String t) {
- textView.setText(t==null?"null":t);
- }
- });
使用FinalHttp下載檔案:
- FinalHttp fh = new FinalHttp();
- fh.download("http://www.xxx.com/下載路徑/xxx.apk", "/mnt/sdcard/testapk.apk", new AjaxCallBack() {
- @Override
- public void onLoading(long count, long current) {
- textView.setText("下載進度:"+current+"/"+count);
- }
- @Override
- public void onSuccess(File t) {
- textView.setText(t==null?"null":t.getAbsoluteFile().toString());
- }
- });
- private GridView gridView;
- private FinalBitmap fb;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.images);
- gridView = (GridView) findViewById(R.id.gridView);
- gridView.setAdapter(mAdapter);
- fb = new FinalBitmap(this).init();//必須呼叫init初始化FinalBitmap模組
- fb.configLoadingImage(R.drawable.downloading);
- //這裡可以進行其他十幾項的配置,也可以不用配置,配置之後必須呼叫init()函式,才生效
- //fb.configBitmapLoadThreadSize(int size)
- //fb.configBitmapMaxHeight(bitmapHeight)
- }
- ///////////////////////////adapter getView////////////////////////////////////////////
- public View getView(int position, View convertView, ViewGroup parent) {
- ImageView iv;
- if(convertView == null){
- convertView = View.inflate(BitmapCacheActivity.this,R.layout.image_item, null);
- iv = (ImageView) convertView.findViewById(R.id.imageView);
- iv.setScaleType(ScaleType.CENTER_CROP);
- convertView.setTag(iv);
- }else{
- iv = (ImageView) convertView.getTag();
- }
- //bitmap載入就這一行程式碼,display還有其他過載,詳情檢視原始碼
- fb.display(iv,Images.imageUrls[position]);
- return convertView;
- }
相關文章
- Android開源框架Afinal簡介Android框架
- 【Android】Android的快速開發框架AfinalAndroid框架
- android開源專案和框架Android框架
- android開源專案和框架(轉)Android框架
- 【Android】開源專案UniversalImageLoader及開源框架ImageLoaderAndroid框架
- Android 開源專案Android
- android開源專案Android
- android開源專案【專案篇】Android
- android開源專案集合Android
- 開源專案之kisso
- 開源專案之憾
- 【Android開源專案分析】android輕量級開源快取框架——ASimpleCache(ACache)原始碼分析Android快取框架原始碼
- Android開源專案彙總Android
- android開源專案【developer篇】AndroidDeveloper
- [譯] 開源專案之 NginxNginx
- 開源專案之---cgi ( cgicc )
- 開源專案之:DotNetNuke
- Android開源專案推薦之【圖片選擇器】Android
- 【Android】Android開源專案精選(一)Android
- 最新Android開源庫、工具、開源專案整理分享Android
- Android開源專案釋出jCenterAndroid
- Android開源專案庫彙總Android
- [轉] Android優秀開源專案Android
- Android 開源專案DiskLruCache 詳解Android
- 一個優秀的Android開源框架學習專案ForgetSkyWanAndroidAndroid框架NaN
- Android、iOS、Mac開源專案推薦AndroidiOSMac
- Android Droid-Fu 開源專案Android
- Android 開源專案PhotoView原始碼分析AndroidView原始碼
- 推薦10個Android開源專案Android
- 上百個Android開源專案分享Android
- 開源專案 pyqt 軟體自動更新框架QT框架
- 開源專案之七宗罪
- android 外掛化開發 開源專案列表Android
- Android開源專案以及開源庫集合(持續更新中)Android
- Android專案中最火最常用的優秀開源專案Android
- Android常用的開源框架Android框架
- Android 面試開源框架篇Android面試框架
- Android的MVC開源框架AndroidMVC框架