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

简介: <div class="markdown_views"><h1 id="android高效率编码-findviewbyid的蜕变-注解泛型反射">Android高效率编码-findViewById()的蜕变-注解,泛型,反射</h1><hr><pre><code>Android的老朋友findViewById()篇!</code></pre><h2 id="先

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了,十分方便,而且用插件一键生成,也省事!
博文有错误请评论指出,不甚感激!
目录
相关文章
|
编解码 Android开发 数据安全/隐私保护
Android平台外部编码数据(H264/H265/AAC/PCMA/PCMU)实时预览播放技术实现
好多开发者可能疑惑,外部数据实时预览播放,到底有什么用? 是的,一般场景是用不到的,我们在开发这块前几年已经开发了非常稳定的RTMP、RTSP直播播放模块,不过也遇到这样的场景,部分设备输出编码后(视频:H.264/H.265,音频:AAC/PCMA/PCMU)的数据,比如无人机或部分智能硬件设备,回调出来的H.264/H.265数据,除了想转推到RTMP、轻量级RTSP服务或GB28181外,还需要本地预览甚至对数据做二次处理(视频分析、实时水印字符叠加等,然后二次编码),基于这样的场景诉求,我们开发了Android平台外部编码数据实时预览播放模块。
134 0
|
编解码 Android开发
Android native层实现MediaCodec编码H264/HEVC
Android平台在上层实现mediacodec的编码,资料泛滥,已经不再是难事,今天给大家介绍下,如何在Android native层实现MediaCodec编码H264/HEVC,网上千篇一律的接口说明,这里不再赘述,本文主要介绍下,一些需要注意的点,权当抛砖引玉,相关设计界面如下:
206 0
|
14天前
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
29 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
21天前
|
Java 测试技术 Android开发
Android项目架构设计问题之使用反射调用类的私有方法如何解决
Android项目架构设计问题之使用反射调用类的私有方法如何解决
13 0
|
2月前
|
XML IDE 开发工具
🔧Android Studio高级技巧大公开!效率翻倍,编码不再枯燥无味!🛠️
【7月更文挑战第28天】在软件开发领域, Android Studio作为首选IDE, 其高级技巧能显著提升开发效率与乐趣。掌握这些技巧, 让开发旅程更高效有趣!
32 2
|
3月前
|
安全 Java 编译器
Android面试题之Java 泛型和Kotlin泛型
**Java泛型是JDK5引入的特性,用于编译时类型检查和安全。泛型擦除会在运行时移除类型参数,用Object或边界类型替换。这导致几个限制:不能直接创建泛型实例,不能使用instanceof,泛型数组与协变冲突,以及在静态上下文中的限制。通配符如<?>用于增强灵活性,<? extends T>只读,<? super T>只写。面试题涉及泛型原理和擦除机制。
32 3
Android面试题之Java 泛型和Kotlin泛型
|
4月前
|
Android开发
通过反射方式获取Android设备系统属性
通过反射方式获取Android设备系统属性 【5月更文挑战第1天】
69 2
|
数据采集 编解码 数据处理
Android平台如何高效率实现GB28181对接?
GB28181协议是一种用于设备状态信息报送的协议,可以在不同设备之间进行通信和数据传输。
112 1
|
编解码 Android开发 数据安全/隐私保护
Android平台GB28181设备接入端对接编码前后音视频源类型浅析
今天主要对Android平台GB28181设备接入模块支持的接入数据类型,做个简单的汇总: 1. 编码前数据(目前支持的有YV12/NV21/NV12/I420/RGB24/RGBA32/RGB565等数据类型),其中,Android平台前后摄像头数据,或者屏幕数据,或者Unity拿到的数据,均属编码前数据; 2. 编码后数据(如无人机等264/HEVC数据,或者本地解析的MP4音视频数据); 3. 拉取RTSP或RTMP流并接入至GB28181平台(比如其他IPC的RTSP流,可通过Android平台GB28181接入到国标平台)。
|
编解码 Android开发 开发者
Android平台GB28181设备接入模块如何实现实时视频和本地录像双码流编码
我们在做Android平台GB28181设备接入模块的时候,遇到这样的场景,比如执法记录仪或智慧工地等场景下,由于GB28181设备接入模块,注册到国标平台后,平时只是心跳保持,或还有实时位置订阅,查看视频的时候,是按需看,而且有时候,网络环境并不是太好,所以,催生了这样一个诉求:部分开发者希望能本地录像的时候,录制高分辨率(比如1920*1080),国标平台侧发起实时视频查看请求的时候,上传低分辨率(如1280*720)数据,有点类似于IPC的主码流和子码流。