Android快速开发之appBase——(1).appBase介绍「建议收藏」

转载请注明本文出自JFlex的博客(http://blog.csdn.net/jflex/article/details/46430555),请尊重他人的辛勤劳动成果,谢谢!Android快速开发之appBase——(1).appBase介绍一直想写博客,苦于自己的文笔实在不行,在CSDN潜水了好几年,中间差不多3年没有写过博客。原因有二:1、文笔差;2、没时间。今年开始,时间充裕了,开始计划练练

大家好,又见面了,我是你们的朋友全栈君。

转载请注明本文出自JFlex的博客http://blog.csdn.net/jflex/article/details/46430555,请尊重他人的辛勤劳动成果,谢谢!

Android快速开发之appBase——(1).appBase介绍

一直想写博客,苦于自己的文笔实在不行,在CSDN潜水了好几年,中间差不多3年没有写过博客。原因有二:1、文笔差;2、没时间。
今年开始,时间充裕了,开始计划练练自己的文笔,也让自己成长起来,希望从中能够提升自己的能力。望大家多多支持和关注!!

导读:appBase是什么?

appBase是一个Android app开发的基础集合,目的是任何应用都可以在这个基础之上开发app,省去了搭建框架的时间。
appBase=xutils+fastjson+avlib

  • xutils使用了其中HttpUtils、BitmapUtils、DbUtils
  • fastjson使用了json解析
  • avlib大家比较陌生,这个库是我另外一个简单的工具库。主要功能是View的自动绑定、View的常用数据自动绑定、万能Adapter等

目的:是为了让懂java的同学能够快速上手Android开发。

下面,看代码说话。(^__^)


一、看看框架结构

框架结构
– apicloud.sdk是对apicloud的云API的调用做了简单封装
– base:只包含BaseActivity
– http:基于HttpUtils简化了常用的网络请求,定义网络参数APIs的配置
– presenter:采用了MVP中的P来命名,可以让非UI处理业务抽出放到这个结构中,因此BasePresenter诞生了。
– util:常用的工具类
– widget:常用的自定义组件(待扩展)
– Application:继承android.app.Application,为了统一使用框架中的组件对象,避免了组件的重复创建。因此建议使用这个类配置application的name。当然也可以基于此类扩展。

二、创建一个新项目

  • 第一步:创建一个空的Android project
    图片
    注意:删除自动添加的android-support-v4.jar(appBase中包含有)
  • 第二步:引用appBase
    图片
  • 第三步:修改AndroidManifest.xml

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.snicesoft.appbase.demo" android:versionCode="1" android:versionName="1.0" >
    
    <uses-sdk  android:minSdkVersion="8" android:targetSdkVersion="21" />
    
    <application  android:allowBackup="true" android:name="com.snicesoft.Application" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
    </application>
    </manifest>

    添加:android:name=”com.snicesoft.Application”

  • 第四步:创建Activity

    package com.snicesoft.appbase.demo;
    import com.snicesoft.avlib.annotation.Layout;
    import com.snicesoft.avlib.rule.IData;
    import com.snicesoft.avlib.rule.IHolder;
    import com.snicesoft.base.BaseActivity;
    @Layout(R.layout.activity_main)
    public class MainActivity extends BaseActivity<MainActivity.Holder, MainActivity.Data> { 
         
        public class Holder extends IHolder { 
         
    
            @Override
            public void initViewParams() {
    
            }
    
        }
    
        public class Data extends IData { 
         
    
        }
    
        @Override
        public Data newData() {
            return new Data();
        }
    
        @Override
        public Holder newHolder() {
            return new Holder();
        }
    }
    

    看着class一栏,大家可能会花了眼,怎么这么长。这只是一种写法,推荐的写法(内部类)。我来说明下这个类:

    IHolder是指View自动绑定的容器

    IData是指View的数据自动绑定容器

  • 第五步:使用IHolder和IData

    package com.snicesoft.appbase.demo;
    import com.snicesoft.avlib.annotation.DataBind;
    import com.snicesoft.avlib.annotation.Id;
    import com.snicesoft.avlib.annotation.Layout;
    import com.snicesoft.avlib.rule.IData;
    import com.snicesoft.avlib.rule.IHolder;
    import com.snicesoft.base.BaseActivity;
    @Layout(R.layout.activity_main)
    public class MainActivity extends BaseActivity<MainActivity.Holder, MainActivity.Data> { 
         
        public class Holder extends IHolder { 
         
            @Id(R.id.textView1)
            TextView textView1;
            @Id(R.id.button1)
            Button button1;
            @Override
            public void initViewParams() {
    
            }
    
        }
    
        public class Data extends IData { 
         
            @DataBind(id = R.id.textView1)
            String tv1 = "我是自动绑定的TextView";
            @DataBind(id = R.id.button1)
            String btn1 = "我是自动绑定的Button";
        }
    
        @Override
        public Data newData() {
            return new Data();
        }
    
        @Override
        public Holder newHolder() {
            return new Holder();
        }
    }
    

    运行结果
    图片

这个只是简单的avlib的view和数据自动绑定功能。后续在介绍其他功能的使用。
最后附上代码生成器源码:http://download.csdn.net/detail/englishbage/8789869

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124579.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PermitRootLogin yes无效问题

    PermitRootLogin yes无效问题奶奶的,搞了半下午终于找到原因。/etc/ssh/sshd_config明明设置了PermitRootLogin为yes,可就是用putty连,root登录不了,每次都accessdenied。气死我也。同一个集群的另外10几台机器每个都是好的,唯独这一台出问题。到处查资料,翻文章,甚至直接把其他机器的sshd_config拷贝过来还是不行。最后突然想起来,会不会是root尝…

    2022年6月11日
    188
  • Java是什么?Java到底能干嘛?

    Java是什么?Java到底能干嘛?我刚开始学习Java的时候,很长一段时间都有这么个疑惑?Java到底是啥?它能干什么?自己也看过不少的课程和书,大部分都是从Java的发展史开始讲,总之就是那些什么Jav…

    2022年7月7日
    16
  • Java爬虫系列四:使用selenium-java爬取js异步请求的数据[通俗易懂]

    在之前的系列文章中介绍了如何使用httpclient抓取页面html以及如何用jsoup分析html源文件内容得到我们想要的数据,但是有时候通过这两种方式不能正常抓取到我们想要的数据,比如看如下例子。

    2022年2月16日
    65
  • MySQL默认隔离级别是RR,但是为什么一些大厂会改成RC?

    MySQL默认隔离级别是RR,但是为什么一些大厂会改成RC?为什么默认隔离级别是RR?可能大部分人都只知道MySQL的隔离级别有4个,分别是RU读未提交、RC读已提交、RR可重复读和Serializable可串行化,很少有人知道MySQL默认的隔离级别是RR,Oracle默认的隔离级别是RC。那就更少有人知道为什么MySQL默认的隔离级别是RR了。我也是刚刚工作之余看到了一篇文章,里面简单提了一下这个问题,我就四处找寻了一下答案,将自己所理解的记录下来,希望对大家有帮助。理解脏读、不可重复读、幻读脏读:某个事务对一份数据执行了更新操作,另一个事务在此时读

    2022年9月3日
    3
  • 粒子群算法matlab代码(注释很详细哦,图像也美美哒,任意维度)[通俗易懂]

    粒子群算法matlab代码(注释很详细哦,图像也美美哒,任意维度)[通俗易懂]整个程序分为5个脚本pso1_mian.m:主程序,在此脚本内设置参数。pso1_im.m:画出函数图像(仅1维和2维)pso1_in.m:初始化pso1_in2.m:迭代寻优并输出结果另外还有一个目标函数,单独为一个脚本。推荐的测试函数—>这里先上运行结果图下面是源码1.pso1_mian.m这里的目标函数用函数句柄的形式调用(第15行)%%粒子群算法%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%pso1_im

    2022年5月1日
    72
  • group by 报错_group by null

    group by 报错_group by nullfloor()报错注入playloadselect(concat(database(),floor(rand(0)2)))x,concat()frominformation_schema.tablesgroupbyx;函数count(*)函数返回给定选择中被选的函数concat()连接字符串floor()向下取整rand()随机数函数rand(0)伪随机数,生成的随…

    2022年9月29日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号