Android ORM应用开发框架KJFrameForAndroid使用详解

本文将为大家介绍一款Android ORM应用开发框架KJFrameForAndroid,很多时候我们也叫它KJLibrary。

KJFrameForAndroid简介

KJFrameForAndroid是一款基于Android的ORM和 IOC应用开发框架,封装了很多Android开发中常用的功能,包括Android中对Bitmap的操作类库。KJFrameForAndroid的设计非常精简,利用KJFrameForAndroid,我们可以用最少的代码完成很多丰富的Android功能应用,为Android开发者节省许多不必要的开发时间。

KJFrameForAndroid总共分为五大模块:UILibrary,UtilsLibrary,HttpLibrary,BitmapLibrary,DBLibrary。

KJFrameForAndroid使用方法

KJFrameForAndroid的使用方法也是十分简单,首先复制KJLibrary工程中bin目录下的kjlibrary.jar文件至自己项目的libs文件夹中,然后在AndroidManifest.xml文件中添加以下权限规则:

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

这样就可以在Android项目中使用KJFrameForAndroid的所有功能了。

下面是利用KJFrameForAndroid实现的一些例子:

UILibrary

下面的代码实现了一个Android Tab小工具

public class TabExample extends KJActivity {
            @BindView(id = R.id.bottombar_content1, click = true)
            public RadioButton mRbtn1;
            @BindView(id = R.id.bottombar_content2, click = true)
            private RadioButton mRbtn2;

            @Override
            public void setRootView() {
                setContentView(R.layout.aty_tab_example);
            }

            @Override
            protected void initWidget() {
                super.initWidget();
                mRbtn1.setText("widget clicked listener");
            }

            @Override
            public void widgetClick(View v) {
                super.widgetClick(v);
                switch (v.getId()) {
                case R.id.bottombar_content1:
                ViewInject.toast("clicked mRbtn1");
                    break;
                case R.id.bottombar_content2:
                ViewInject.toast("clicked mRbtn2");
                    break;
                }
            }
        }

BitmapLibrary

下面的代码实现了对Bitmap图片的处理:

KJBitmap kjb = KJBitmap.create();
    /**
     * url can be local sdcard path or internet url;
     * view can whichever View set image(for ImageView set src;for View set background).
     */
    // local sdcard image
    kjb.display(imageView, "file:///storage/sdcard0/1.jpg"); 
    // internet url
    kjb.display(textView, http://www.xxx.com/xxx.jpg); 
    //自定义图片显示大小
    kjb.display(view, http://www.xxx.com/xxx.jpg, 80, 80); //width=80,height=80

HttpLibrary

下面的代码实现了远程获取JSON的功能:

// get
        kjh.get("http://www.oschina.net/", new HttpCallBack();//like post, so just one example

        // post
        KJHttp kjh = new KJHttp();
        HttpParams params = new HttpParams();
        params.put("id", "1");
        params.put("name", "kymjs");
        kjh.post("http://192.168.1.149/post.php", params, new HttpCallBack() {
            @Override
            public void onPreStart() {
                super.onPreStart();
                KJLoger.debug("before start");
            }
            @Override
            public void onSuccess(String t) {
                super.onSuccess(t);
                ViewInject.longToast("request success");
                KJLoger.debug("log:" + t.toString());
            }
            @Override
            public void onFailure(Throwable t, int errorNo, String strMsg) {
                super.onFailure(t, errorNo, strMsg);
                KJLoger.debug("exception:" + strMsg);
            }
            @Override
            public void onFinish() {
                super.onFinish();
                KJLoger.debug("request finish. Regardless of success or failure.");
            }
        });

DBLibrary

下面的代码实现了对数据库的操作:

// data file
    KJDB db = KJDB.create(this);
    User ugc = new User(); //warn: The ugc must have id field or @ID annotate
    ugc.setEmail("kymjs123@gmail.com");
    ugc.setName("kymjs");
    db.save(ugc);
    //one - many
    public class Parent{  //JavaBean
        private int id;
        @OneToMany(manyColumn = "parentId")
        private OneToManyLazyLoader<Parent ,Child> children;
        /*....*/
    }

    public class Child{ //JavaBean
        private int id;
        private String text;
        @ManyToOne(column = "parentId")
        private  Parent  parent;
        /*....*/
    }

    List<Parent> all = db.findAll(Parent.class);
            for( Parent  item : all){
                if(item.getChildren ().getList().size()>0)
                    Toast.makeText(this,item.getText() + item.getChildren().getList().get(0).getText(),Toast.LENGTH_LONG).show();
            }

当然这些只是一些最简单的例子,如果你熟悉Android开发,也可以去KJFrameForAndroid的官方网站上学习更多关于KJFrameForAndroid的高级用法。
===========================各模块介绍====================== Plugin模块 你想像过不安装一个apk而直接被应用调用吗?你考虑过将应用的某一个功能单独出来像文件一样随时读取吗?插件化模块可以轻松帮你实现apk动态加载,让你的应用调用未安装的apk。 UILibrary模块包括两部分: Widget控件部分 主要封装了常用的UI控件,为了不让项目jar包过大,我们只引入了开发中一定会用到的控件,例如:可上下拉的KJListView、可上下拉的KJScrollView、可以双指缩放双击缩放双指旋转的ScaleImageView、等等......更多内容请自行查看项目文件中.widget包下的内容 Topology拓扑部分 包含一个使用IOC设计思想的控件初始化方式:可通过注解的方式进行UI绑定,与设置监听,在Activity和Fragment中均可以通过一行代码绑定控件并实现点击监听;还包含了在目前应用开发中常见的布局界面,如侧滑效果,高效的底部TAB导航,3D效果的切换。同时UILibrary为开发者定义了完善的BaseActivity和BaseFragment,开发者只需手动继承就可以获得Topology部分的全部功能。 BitmapLibrary模块 一行代码实现网络图片加载,任何View(ImageView设置src,普通View设置bg)加载图片的时候都无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象,同时无需考虑图片加载过程中出现的OOM。默认使用内存lru算法+磁盘lru算法缓存图片,同时节省内存消耗默认采用控件的大小作为图片的大小加载图片。 HttpLibrary模块 可以一行代码实现Http请求、一行代码实现文件或图片的上传与下载。 kjh.download( url, params, callback); KJLibrary默认对所有Http通信的数据做了缓存处理,缓存时间为5分钟。这么做的目的不仅是为了节省用户手机流量,同时是为了减少服务器压力 同时不同于afinal的下载BUG(请看这里:http://my.oschina.net/kymjs/blog/355944),KJFrameForAndroid原生支持文件断点下载。 DBLibrary模块 可以一行代码对数据库进行增删改查等操作:kjdb.update(); kjdb.add(); ....... 包含了android中的orm框架使用了线程池对sqlite进行操作,一行代码就可以进行增删改查。支持一对多,多对一等查询 帮助文档:http://kjframe.github.io/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值