当前位置: 首页 > news >正文

Android开发框架--AndroidAnnotations(一)

annotation:注解

什么是框架

框架是基石

android开发中哪些内容可以做成框架呢

  • 网络模块
  • 图片缓存模块
  • 数据库模块
  • UI基础模块

开发框架给我们带来了哪些好处

  • 提升开发效率
  • 代码简洁
  • 统一管理
  • 代码复用

环境配置

链接使用Android Annotations简化开发(Eclipse与Intellij Idea)

实际开发中框架的应用

@EActivity(R.layout.activity_main)//多用EActivity,而EService等用得比较少
public class MainActivity extends Activity {
    public static final String NAME_KEY = "name_key";
    public static final String AGE_KEY = "age_key";
    /**
     * Button控件初始化
     * 若不指定id,则默认按变量名查找
     */
    @ViewById(R.id.button1)
    Button button;
    
    @ViewById(R.id.button2)
    Button button2;
    
    @ViewById(R.id.textView2)
    TextView textView2;
    
    /**
     * 初始化多个id并放到集合中
     */
    @ViewsById({R.id.textView3, R.id.textView4})
    List<TextView> list;
    /**
     * 为ID为button1的控件添加监听事件
     */
    @Click(R.id.button1)
    public void startActivity() {
        Intent intent = new Intent(MainActivity.this, SecondActivity_.class);
        intent.putExtra(NAME_KEY, "name");
        intent.putExtra(AGE_KEY, "18");
        startActivity(intent);
    }
    
    @Click(R.id.button2)
    public void startService() {
        Intent intent = new Intent(MainActivity.this, MyService_.class);
        startService(intent);
    }   
    /**
     * @Click用法二
     * @LongClick用法同@Click
     */
    @Click({R.id.textView3, R.id.textView4})
    public void showToast() {
        Toast.makeText(MainActivity.this, "ok", 1).show();
    }
    /**
     * 初始化之后运行
     */
    @AfterViews
    public void setTextView() {
        textView2.setText("Hello World");
        for (TextView textView : list) {
            textView.setText("Hello World");
        }
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
    }
}

转载于:https://www.cnblogs.com/happyhacking/p/4660176.html

相关文章:

  • 图片缓存负载
  • 最大流问题
  • 它们的定义app.config中间section节点和在执行中使用
  • 如何让mysql的自动递增的字段重新从1开始呢?(
  • read by other session的优化记录
  • sql Sever的存储过程转换为mysql的
  • 7月21日13家中国域名商(国际域名)解析量报告
  • NoSQL精粹读书笔记-第1章
  • iOS开发-App Icons的尺寸大小
  • js 时间戳转为日期格式
  • 540C: Ice Cave
  • JavaScript判断IE版本
  • EditPlus自动补全、模板配置
  • 引子——从Mac OS X的Lion说起
  • 悠然乱弹:“最好的模板引擎”Beetl 剖析及与Tiny模板引擎对比
  • JS 中的深拷贝与浅拷贝
  • Android Studio:GIT提交项目到远程仓库
  • Android交互
  • export和import的用法总结
  • Linux各目录及每个目录的详细介绍
  • nodejs实现webservice问题总结
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • python学习笔记 - ThreadLocal
  • spring + angular 实现导出excel
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 给新手的新浪微博 SDK 集成教程【一】
  • 将回调地狱按在地上摩擦的Promise
  • 批量截取pdf文件
  • 小试R空间处理新库sf
  • 一份游戏开发学习路线
  • 运行时添加log4j2的appender
  • 找一份好的前端工作,起点很重要
  • Nginx实现动静分离
  • postgresql行列转换函数
  • 大数据全解:定义、价值及挑战
  • ​MySQL主从复制一致性检测
  • (C#)获取字符编码的类
  • (Java)【深基9.例1】选举学生会
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)setTimeout 和 setInterval 的区别
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .apk 成为历史!
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET成年了,然后呢?
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • /etc/fstab和/etc/mtab的区别
  • @test注解_Spring 自定义注解你了解过吗?
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [ 数据结构 - C++]红黑树RBTree
  • []串口通信 零星笔记