COCOFrame
COCOFrame它是一个轻量级的开发框架,综合Android APP开发过程中经常使用的工具,方法,特效.当中F类採用的AndroidQuery实现,做了进一步的封装及部分优化.
1. Jar包大小:166K
2. 下载地址:http://download.csdn.net/detail/landehuxi/7673747
3. 解压缩,项目导入COCOFrame.jar
4. 直接在代码中使用S,F,U三个类就可以.
(一)S 工具服务-service
初始化:S.init(this); //假设继承自BaseActivity则不用初始化.
S.SDCardService SD卡服务(获取SD卡路径,获取SD卡容量,)
S.SMService 短信服务(编辑发送短信,静默发送短信)
S.AppService 应用级别服务 (应用启动, 启动Activity,杀死线程,获取包名,获取版本号)
S.EncryptService 加密服务(MD5加密, DES加密/解密,RES加密解密)
S.DBService 数据库服务
S.DisplayService 显示相关服务(屏幕宽高,像素,dp转换, 调节屏幕亮度)
S.EmailService 邮件服务(静默发送邮件, 用户编辑邮件, 带附件的邮件)
S.HttpService 网络服务,眼下为空,直接採用F类的网络请求方法就可以.
S.ImgService 图片服务(滤镜,灰度,获取Bitmap,水印,放大缩小图片)
S.IOService 本地存储服务(asset存储,SD卡存储,SP存储)
S.KeyBoradService(隐藏软键盘,打开软键盘,查看键盘状态)
S.PhoneService(获取手机型号,获取SIM卡信息,获取电量,获取内存大小,获取手机品牌)
S.ClearService 内存释放清空服务(关闭流,回收Bitmap,回收Map,List,关闭数据库游标)
S.StringService 字符串服务(集成TextUtils,数字转文件体积,经常使用正则等)
S.GPService 地理位置服务.(当前用户所在国家,省,市,区,街道,邮编,经纬度,经纬度计算)
S.NetworkService 网络服务(网络类型,是否有网络,应用的上行流量,下行流量)
S.BatteryService 电池服务(电量,USB或直流电,电压,温度,电池品牌)
(二)F 极速开发-fast
F内置了开源项目AndroidQuery的实现,做了进一步的封装及部分优化,
初始化
F=new F(this); //假设继承自BaseActivity可直接使用F
基本使用方式
1.初始化控件,绑定监听器
F.id(R.id.btnLogin).clicked(listener)
F.id(R.id.btnLogin).clicked(this, "loginMethod");
F.id(R.id.textView).text(“test”);//设置文字
F.id(R.id.imgView).image(Bitmap);//设置图片.
F.id(R.id.imgView).image(“http://www.test.com/test.png”);//设置图片.同样地址的图片不会反复下载
F.id(R.id.imgView).image(“sdcard/test/test.png”);//设置图片.
F.id(R.id.imgView).image(Drawable);//设置图片.
F.id(R.id.imgView).image(id);//设置图片.
F.id(R.id.imgView).image(File);//设置图片.
F.id(R.id.ImageView).image(file, 300);//设置图片宽是300像素. 降低此宽度可有效降低图片内存占用.
F.id(R.id.imgView).image(url,false,false,50,50,bitmpaHolder,0,1.5f);//设置图片-多參数模式
n 图片下载地址
n 忽略
n 是否缓存
n 图片高度(决定了图片大小,0为原图大小)
n 忽略
n 站位图片,假设图片由于某种错误没显示,则用此图取代.(例:Bitmap bitmpaHolder=F.getCachedImage(android.R.drawable.star_on))
n 图片出现时的效果(比如:F.FADE_IN)
n 宽高比率,同一时候决定了图片总体宽高比
图片压缩处理:
ImageOptions options = new ImageOptions();
options.ratio = 1;//质量比率
options.anchor = 1.0; //部分显示图片来达到缩小内存效果. 1.0显示图片顶端, 0显示图片中间, -1.0显示图片底部 AQuery.ANCHOR_DYNAMIC动态
F.id(R.id.image).image(imageUrl, options);
2.发送网络请求
F.progress(U.Dialog(this));//网络请求添加等待效果
F.progress(F.id(R.id.Process)).download()//文件下载添加进度条.
AjaxCallback.setTimeout(15);//设置timeout,单位秒
覆盖AjaxCallback的timeout方法能够实现自己的网络超时动作,如读取缓存,友好提示等
发送网络请求
(1)带參数,不使用缓存,不使用映射.
HashMap < String,String > params = new HashMap < String,String > ();
params.put("formMap.USER_CODE", editName.getText().toString());
params.put("formMap.PASSWORD", editPassword.getText().toString());
F.progress(U.ViewWait(this).showWait()).ajax(URL_LOGIN, params, JSONObject.class, new AjaxCallback < JSONObject > () {@Override public void callback(String url, JSONObject json, AjaxStatus status) {
try {
String result = json.getString("result");
String key = json.getString("key");
JSONObject userinfo = json.getJSONObject("userinfo");
if ("1000".equals(result)) {
Toast.makeText(LoginActivity.this,"SthWrong!", Toast.LENGTH_LONG).show();
} else {
S.AppService.startAcvitity(LoginActivity.this, MainActivity.class);
finish();
}
} catch(JSONException e) {
e.printStackTrace();
}
}
});
}
(2)不带參数,不缓存,映射本地方法jsonCallBack:
public void asyncJson(){
String url="http://www.google.com/uds/GnewsSearch?
q=Obama&v=1.0";
aq.ajax(url, JSONObject.class, this, "jsonCallback");
}
public void jsonCallback(String url, JSONObject json, AjaxStatus status){
if(json != null){
//successful ajax call
}else{
//ajax error
}
}
(3)使用缓存
參数说明:
F.CACHE_TIME_1H;//缓存一小时
F.CACHE_TIME_24H;//缓存一天
F.CACHE_TIME_30M;//缓存30分钟
F.CACHE_TIME_DEFALUT;//框架默认
F.CACHE_TIME_UPDATA;//立即更新
可自行设置时间,单位毫秒.
//比如缓存1小时,则接口首次请求成功后返回的data将被存储,1小时内不管有无网络,应用重新启动,开关机等都将正常返回data,不会再次发送网络请求.假设想立即更新数据,可设置时间为F.CACHE_TIME_UPDATA.会立即获取最新的接口数据.
F.ajax(url, params,JSONObject.class, F.CACHE_TIME_1H, new AjaxCallback<JSONObject>() {
@Override
public void callback(String url, JSONObject json, AjaxStatus status) {
swipeRefreshLayout.setRefreshing(false);
Debug.out(json);
}
});
(4)下载文件-无进度条
F.download(url,file,new AjaxCallback<File>() {
@Override
public void callback(String url, File file,
AjaxStatus status) {
//文件完成下载的处理
}
});
(5)下载文件-有进度条
F.progress(F.id(R.id.process_DownApk).getProgressBar()).download(
URL_APK, apkFile, AjaxCallback<File>() {
@Override
public void callback(String url, File file,
AjaxStatus status) {
//文件完成下载的处理
}
});
(6)上传文件
String url = "http://www.test.com/upLoadFile.do";
Map<String, Object> params = new HashMap<String, Object>();
byte[] data = new byte[1000];
params.put("source", data);
File file = new File("test.png");
params.put("source", file);
F.ajax(url, params, JSONObject.class, this, "method");//method为上传成功后,调用的方法
(三)U 界面控件-ui
n 出现等待效果: U.Dialog().showWait();
n 取消等待效果: U.Dialog().cancelWait();
n 获取能显示GIF的View: U.View_Gif();
n 获取颜色选择器: U.View_SelectColor();
n 获取图片滤镜: U.ImageView_filter();//使图片变暗,变亮,饱和度变化,彩色变黑白
n 为指定控件加入摇一摇监听器: U.ListenShake(context, onShakeListener);
n 为图片添加手指缩放效果: U.ImageView_zoomTouch(view);
n 为控件添加点击效果(不须要图片,浅色图效果不明显): U.View_click(view);
n 为控件添加闪烁效果: U.view_toggle(view);
n 为ListView添加下拉刷新效果:(须要COCOBuild的createFolder任务支持)
1.<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/coco_ListRefresh"
android:layout_width="match_parent"
android:layout_height="match_parent" >
2.implements OnRefreshListener;
3.SwipeRefreshLayout sp=U.Effect_pullRefresh(this,this);
4.sp.setRefreshing(false);
n 显示确认Dialog: U.Dialog().showMakeSure();
n 显示选择Dialog: U.Dialog().showSelect();
n 採用反射强制Dialog是否能退出:U.Dialog().cancelAble(boolean);
n 实现了多个View之间的滑动切换U.View_RLFlippe();
1. View_RLFlippe views=U.View_RLFlippe(Context);
2. views.addView(view1);
3. views.addView(view2);
4. views.addView(view3);
view1,view2,view3之间就可以手机滑动切换.
时间有限,以上仅仅粗略列出了COCOFrame小部分功能,使用方式非常easy,可自行下载jar包使用.第一版不保证没bug
此贴将持续更新.
下载地址:http://download.csdn.net/detail/landehuxi/7673747
版权声明:本文博主原创文章,博客,未经同意不得转载。
COCOFrame的更多相关文章
- COCO-Android开发框架公布
一. COCO-Android说明 二. COCO-Android结构图 三. COCOBuild 四. COCOFrame 一.COCO-Android说明 1. COCO-Android是支撑An ...
随机推荐
- Good Luck Charlie(听力恢复训练)
系统的音标学习完毕后.在暑假进入了稍大强度的听力恢复训练.材料选择的是一部家庭情景喜剧片<Good Luck Charlie>,该剧是2010开播的.剧中运用到的大量词汇是和如今比較贴合的 ...
- python import media模块
安装PyGraphics包 (python import media模块)有一段代码要import media,打开python自带的IDLE,输入: >>>import media ...
- ThinkPHP 连接Oracle的配置写法,(使用Oci扩展而非PDO的写法)
測试了非常多遍,TP官网根本就没有给出正确的写法,并且网上搜索到的全都是错误的. 跟踪代码.终于找出了正确的配置写法,备份例如以下.(by default7#zbphp.com) 'DB_TYPE' ...
- SICP 1.20经验
1.20 两者之间的主要区别是,使我们明白的操作顺序. 网上找一些答案,都死了扩大. 我们所从事的IT的. 展开搞死人IT实践. 首先考虑应用程序 我们得到 gcd(206, 40) -> gc ...
- 设备Oracle当误差:环境不符合要求》》解决方法
一旦安装Oracle当我常常会遇到这样的问题.也没太在意,改了一下client\stage\cvu文件夹cvu_prereq.xml档(添加支持目前的操作系统信息)为了克服,我没有做笔记,但后来有同学 ...
- 从字节码层面看“HelloWorld” (转)
一.HelloWorld 字节码生成 众所周知,Java 程序是在 JVM 上运行的,不过 JVM 运行的其实不是 Java 语言本身,而是 Java 程序编译成的字节码文件.可能一开始 JVM 是为 ...
- 【原创】poj ----- 2376 Cleaning Shifts 解题报告
题目地址: http://poj.org/problem?id=2376 题目内容: Cleaning Shifts Time Limit: 1000MS Memory Limit: 65536K ...
- HDU1698_Just a Hook(线段树/成段更新)
解题报告 题意: 原本区间1到n都是1,区间成段改变成一个值,求最后区间1到n的和. 思路: 线段树成段更新,区间去和. #include <iostream> #include < ...
- 冒泡排序算法 C++和PHP达到
冒泡排序是小元素向前或向后的大要素.两个相邻元件之间的比较结果更.交换也这两个元件之间发生.它是最慢的排序算法. 效率最低的算法. 时间复杂度: 它是最差时间复杂度为:O(n^2),冒泡排序最好的时间 ...
- 【原创】leetCodeOj --- Find Minimum in Rotated Sorted Array II 解题报告
题目地址: https://oj.leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/ 题目内容: Suppose a sort ...