Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

WelikeAndroid 是首个支持异常隔离机制的Android便捷开发框架,在Android 2.X - 5.x下都能良好兼容.

License

Notifications You must be signed in to change notification settings

FinalLody/WelikeAndroid

Repository files navigation

Logo

license Convert

##WelikeAndroid 是什么? WelikeAndroid 是一款引入即用的便捷开发框架,致力于为程序员打造最佳的编程体验,
使用WelikeAndroid, 你会觉得写代码是一件很轻松的事情.

##欢迎加入我们的Android开发群: ###142853711(WelikeAndroid交流群)
##Welike带来了哪些特征?

WelikeAndroid目前包含五个大模块:

  • 异常安全隔离模块(实验阶段):当任何线程抛出任何异常,我们的异常隔离机制都会让UI线程继续运行下去.
  • Http模块: 一行代码完成POST、GET请求和Download,支持上传, 高度优化Disk的缓存加载机制,
    自由设置缓存大小、缓存时间(也支持永久缓存和不缓存).
  • Bitmap模块: 一行代码完成异步显示图片,无需考虑OOM问题,支持加载前对图片做自定义处理.
  • Database模块: 支持NotNull,Table,ID,Ignore等注解,Bean无需Getter和Setter,一键式部署数据库.
  • ui操纵模块: 我们为Activity基类做了完善的封装,继承基类可以让代码更加优雅.
  • :请不要认为功能相似,框架就不是原创,源码摆在眼前,何不看一看?

使用WelikeAndroid需要以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />

##下文将教你如何圆润的使用WelikeAndroid:
###通过WelikeContext在任意处取得上下文:

  • WelikeContext.getApplication(); 就可以取得当前App的上下文
  • WelikeToast.toast("你好!"); 简单一步弹出Toast.

##WelikeGuard(异常安全隔离机制用法):

  • 第一步,开启异常隔离机制:
WelikeGuard.enableGuard();
  • 第二步,注册一个全局异常监听器:
WelikeGuard.registerUnCaughtHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
 WelikeGuard.newThreadToast("出现异常了: " + ex.getMessage() );
}
});
  • 你也可以自定义异常:
/**
*
* 自定义的异常,当异常被抛出后,会自动回调onCatchThrowable函数.
*/
@Catch(process = "onCatchThrowable")
public class CustomException extends IllegalAccessError {
 public static void onCatchThrowable(Thread t){
 WeLog.e(t.getName() + " 抛出了一个异常...");
 }
}
  • 另外,继承自UncaughtThrowable的异常我们不会对其进行拦截.

使用Welike做屏幕适配:

Welike的ViewPorter类提供了屏幕适配的Fluent-API,我们可以通过一组流畅的API轻松做好屏幕适配.

 ViewPorter.from(button).ofScreen().divWidth(2).commit();//宽度变为屏幕的二分之一
 ViewPorter.from(button).of(viewGroup).divHeight(2).commit();//高度变为viewGroup的二分之一
 ViewPorter.from(button).div(2).commit();//宽度和高度变为屏幕的四分之一
 ViewPorter.from(button).of(this).fillWidth().fillHeight().commit();//宽度和高度铺满Activity
 ViewPorter.from(button).sameAs(imageView).commit();//button的宽度和高度和imageView一样

WelikeHttp入门:

首先来看看框架的调试信息,是不是一目了然. DEBUG DEBUG2

  • 第一步,取得WelikeHttp默认实例.
WelikeHttp welikeHttp = WelikeHttp.getDefault();
  • 第二步,发送一个Get请求.
HttpParams params = new HttpParams();
params.putParams("app","qr.get",
 "data","Test");//一次性放入两对 参数 和 值
//发送Get请求
HttpRequest request = welikeHttp.get("http://api.k780.com:88", params, new HttpResultCallback() {
 @Override
 public void onSuccess(String content) {
 super.onSuccess(content);
 WelikeToast.toast("返回的JSON为:" + content);
 }
 @Override
 public void onFailure(HttpResponse response) {
 super.onFailure(response);
 WelikeToast.toast("JSON请求发送失败.");
 }
 @Override
 public void onCancel(HttpRequest request) {
 super.onCancel(request);
 WelikeToast.toast("请求被取消.");
 }
});
 //取消请求,会回调onCancel()
 request.cancel();

当然,我们为满足需求提供了多种扩展的Callback,目前我们提供以下Callback供您选择:

  • HttpCallback(响应为byte[]数组)
  • FileUploadCallback(仅在上传文件时使用)
  • HttpBitmapCallback(建议使用Bitmap模块)
  • HttpResultCallback(响应为String)
  • DownloadCallback(仅在download时使用)

如需自定义Http模块的配置(如缓存时间),请查看HttpConfig.

WelikeBitmap入门:

  • 第一步,取得默认的WelikeBitmap实例:
//取得默认的WelikeBitmap实例
WelikeBitmap welikeBitmap = WelikeBitmap.getDefault();
  • 第二步,异步加载一张图片:
BitmapRequest request = welikeBitmap.loadBitmap(imageView,
"http://img0.imgtn.bdimg.com/it/u=937075122,1381619862&fm=21&gp=0.jpg",
android.R.drawable.btn_star,//加载中显示的图片
android.R.drawable.ic_delete,//加载失败时显示的图片
new BitmapCallback() {
 @Override
 public Bitmap onProcessBitmap(byte[] data) {
 //如果需要在加载时处理图片,可以在这里处理,
 //如果不需要处理,就返回null或者不复写这个方法.
 return null;
 }
 @Override
 public void onPreStart(String url) {
 super.onPreStart(url);
 //加载前回调
 WeLog.d("===========> onPreStart()");
 }
 @Override
 public void onCancel(String url) {
 super.onCancel(url);
 //请求取消时回调
 WeLog.d("===========> onCancel()");
 }
 @Override
 public void onLoadSuccess(String url, Bitmap bitmap) {
 super.onLoadSuccess(url, bitmap);
 //图片加载成功后回调
 WeLog.d("===========> onLoadSuccess()");
 }
 @Override
 public void onRequestHttp(HttpRequest request) {
 super.onRequestHttp(request);
 //图片需要请求http时回调
 WeLog.d("===========> onRequestHttp()");
 }
 @Override
 public void onLoadFailed(HttpResponse response, String url) {
 super.onLoadFailed(response, url);
 //请求失败时回调
 WeLog.d("===========> onLoadFailed()");
 }
});
  • 如果需要自定义Config,请看BitmapConfig这个类.

##WelikeDAO入门:

  • 首先写一个Bean.
/*表名,可有可无,默认为类名.*/
@Table(name="USER",afterTableCreate="afterTableCreate")
public class User{
@ID
public int id;//id可有可无,根据自己是否需要来加.
/*这个注解表示name字段不能为null*/
@NotNull
public String name;
 public static void afterTableCreate(WelikeDao dao){
 //在当前的表被创建时回调,可以在这里做一些表的初始化工作
 }
}
  • 然后将它写入到数据库
WelikeDao db = WelikeDao.instance("Welike.db");
User user = new User();
user.name = "Lody";
db.save(user);
  • 从数据库取出Bean
User savedUser = db.findBeanByID(1);
  • SQL复杂条件查询
List<User> users = db.findBeans().where("name = Lody").or("id = 1").find();
  • 更新指定ID的Bean
User wantoUpdateUser = new User();
wantoUpdateUser.name = "NiHao";
db.updateDbByID(1,wantoUpdateUser);
  • 删除指ID定的Bean
db.deleteBeanByID(1);
  • 更多实例请看DEMO和API文档.

##十秒钟学会WelikeActivity

  • 我们将Activity的生命周期划分如下:
=>@initData(所有标有InitData注解的方法都最早在子线程被调用)
=>initRootView(bundle)
=>@JoinView(将标有此注解的View自动findViewByID和setOnClickListener)
=>onDataLoaded(数据加载完成时回调)
=>点击事件会回调onWidgetClick(View Widget)

###关于@JoinView的细节:

  • 有以下三种写法:
@JoinView(name = "welike_btn")
Button welikeBtn;
@JoinView(id = R.id.welike_btn)
Button welikeBtn;
@JoinView(name = "welike_btn",click = false)
Button welikeBtn;
  • clicktrue时会自动调用view的setOnClickListener方法,并在onWidgetClick回调.
  • 当需要绑定的是一个Button的时候, click属性默认为true,其它的View则默认为false.

##有问题反馈 在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

  • QQ: 382816028
  • Email:382816028@qq.com
  • 142853711群与大家一起讨论

Git: https://github.com/FinalLody/WelikeAndroid
Git@OSC: http://git.oschina.net/lody/WelikeAndroid

About

WelikeAndroid 是首个支持异常隔离机制的Android便捷开发框架,在Android 2.X - 5.x下都能良好兼容.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

Languages

AltStyle によって変換されたページ (->オリジナル) /