Android高效率编码-findViewById()的蜕变-注解,泛型,反射

Android高效率编码-findViewById()的蜕变-注解,泛型,反射


Android的老朋友findViewById()篇!

先看看他每天是在干什么

    //好吧,很多重复的,只不过想表达项目里确实有很多控件
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.laft_drawer);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.laft_drawer);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.laft_drawer);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.laft_drawer);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.laft_drawer);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

1.泛型

//自己定义一个方法
public <T> T $(int viewID) {
    return (T) findViewById(viewID);
}

然后使用的时候是这个样子的,其实就是简化了一个findViewById()罢了

    mDrawerLayout = $(R.id.drawer_layout);
    mDrawerList = $(R.id.laft_drawer);
    mDrawerLayout = $(R.id.drawer_layout);
    mDrawerList = $(R.id.laft_drawer);
    mDrawerLayout = $(R.id.drawer_layout);
    mDrawerList = $(R.id.laft_drawer); 

2.注解

注解的方法现在很流行,而且很多开源框架已经支持注解了,我就以Android Annotations框架为例,当然他不光只是能注解控件,还能做更多的事情,比如事件绑定,异步线程与UI线程的交互等...

这里提供一个架包的下载地址:http://download.csdn.net/detail/qq_26787115/9362755

初始化控件

    //初始化控件
    @ViewById(R.id.button1)
    private Button button1;

    @ViewById(R.id.button1)
    private Button button2;

    @ViewById(R.id.editText1)
    private EditText editText1;

3.反射

http://www.mzule.com/%E4%BD%BF%E7%94%A8injectview%E5%92%8Cfindviewbyid%E8%AF%B4%E6%8B%9C%E6%8B%9C/

其实Android studio 上插件是可以一键生成findViewById的,详情可以看我的博文:http://blog.csdn.net/qq_26787115/article/details/50242501

反射、注解总会降低效率, 在Android Studio开发环境下,只需输入一个f 就会智能提示出findviewbyid了,十分方便,而且用插件一键生成,也省事!
博文有错误请评论指出,不甚感激!
时间: 2024-10-04 13:24:42

Android高效率编码-findViewById()的蜕变-注解,泛型,反射的相关文章

Android高效率编码-细节,控件,架包,功能,工具,开源汇总,你想要的这里都有

Android高效率编码-细节,控件,架包,功能,工具,开源汇总 其实写博客的初衷也并不是说什么分享技术,毕竟咱还只是个小程序员,最大的目的就是对自我的知识积累,以后万一编码的时候断片了,也可以翻出来看看,这样子对自己也有好处,所以今天就汇总一下一些需要的东西.多图来了,加油! 一.游戏 小熊打字,我刚接触电脑练习打字的时候用到的 下载地址:http://download.csdn.net/detail/qq_26787115/9365721 二.色彩 这张颜色表上的颜色都太赞了 三.控件 1.

Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSDK分享组件的,奈何需要去注册各平台的账号,还要审核,有些审核还挺久,就没办法,改为写这个Bmob了,相信大家对Bmob都是挺期待的吧,因为他作为Android后端的实现很好的支持,国内很多软件都在使用它,他的功能也是特别神奇,这里就不一一细说了,我们用实际的例子来见证他的神奇 官网:http://w

Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!

Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还是会及时更新的,比如后续会出 分享SDK:sharesdk 后端SDK:Bmob 推送SDK:极光推送 短信SDK:验证码实现 等等-- 或者出一些装ubuntu系统或者黑苹果教程什么的,或者5.X之后的新玩法,主要还是困于时间方面缺少,或许这也是一种锻炼吧,工作了挺久的了,越发觉得自己的JAVA基

Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送,写这个系列真的很要命,你要去把他们的API文档大致的翻阅一遍,而且各种功能都实现一遍,解决各种bug各种坑,不得不说,极光推送真坑,大家使用还是要慎重,我们看一下极光推送的官网 https://www.jpush.cn/common/ 推送比较使用,很多软件有需要,所以在这个点拿出来多讲讲,我们本节

谈谈关于Android视频编码的那些坑

本文讲的是谈谈关于Android视频编码的那些坑,Android的视频相关的开发,大概一直是整个Android生态,以及Android API中,最为分裂以及兼容性问题最为突出的一部分.摄像头,以及视频编码相关的API,Google一直对这方面的控制力非常差,导致不同厂商对这两个API的实现有不少差异,而且从API的设计来看,一直以来优化也相当有限,甚至有人认为这是"Android上最难用的API之一" 以微信为例,我们录制一个540p的mp4文件,对于Android来说,大体上是遵循

Android Studio(三):设置Android Studio编码

Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Android Studio编码 Android Studio(四):Android Studio集成Genymotion Android Studio(五):修改Android Studio项目包名 Android Studio(六):Android Studio添加注释模板 Android Studio

android-关于Android硬编码的问题

问题描述 关于Android硬编码的问题 Android的SDK提供了硬编码的接口,但是是基于异步机制,就是当编码这一帧的时候,可能输出的上几帧的编码输出,即使是level为baseline也是这样. 但是我的要求实时性特别高,有没有能改成同步的方法,即这一帧的输出就是这一帧的编码数据. 解决方案 android编码问题android studio 中的编码问题Android Studio编码问题 解决方案二: 直接从摄像头获得数据,绕过sdk

java-关于Java泛型反射问题

问题描述 关于Java泛型反射问题 public static void main(String[] args) { //告诉编译器我这个集合只能存储String类型的 List col=new ArrayList(); //告诉编译器我这个集合只能存储Integer类型的 List<Integer> col2=new ArrayList<Integer>(); //输出结果为:true //这就是常说的去除,编译后jvm虚拟机不会知道这个集合存储什么类型的值 System.out

Android如何编写基于编译时注解的项目

一.概述 在Android应用开发中,我们常常为了提升开发效率会选择使用一些基于注解的框架,但是由于反射造成一定运行效率的损耗,所以我们会更青睐于编译时注解的框架,例如: butterknife免去我们编写View的初始化以及事件的注入的代码. EventBus3方便我们实现组建间通讯. fragmentargs轻松的为fragment添加参数信息,并提供创建方法. ParcelableGenerator可实现自动将任意对象转换为Parcelable类型,方便对象传输. 类似的库还有非常多,大多