【原创】初识懒人开发库---ButterKnife
今天再看别人代码的时候,看到了自己没见过的代码,看起来挺方便的,具体代码如下:
@InjectView(R.id.iv_left)
ImageView iv_left;
@InjectView(R.id.et_account)
EditText et_account; ButterKnife.inject(this); @OnClick(R.id.iv_left)
public void back() {
finish();
}
观察发现和我们在xml文件中定义的控件有一定的关系,就去百度了一下,才知道是一种懒人框架,可以直接实例化控件,并且建立控件的点击监听事件,去学习使用的过程很曲折,不多说,直接说最简单的办法:
- 打开Android Studio的Setting---->Plugins---->browse repositories..,点开之后搜索Android ButterKnife;
- 点击Install就可以添加到自己的设计器里面,然后添加完成要重启AS;
- 在活动的setContentView(R.layout.activity_login);处,把鼠标光标停留在activity_login布局处,点击右键选择Generate--->Generate ButterKnife Injections,就可以让我们自己选择要实例化的控件,还可以创建ViewHolder来存放控件
下面是自己使用的一个例子,看起来很直观,并且很省事:
public class LoginOneKeyActivity extends BaseActivity {
MyCountTimer timer;
@Bind(R.id.iv_left)
ImageView ivLeft;
@Bind(R.id.tv_title)
TextView tvTitle;
@Bind(R.id.et_phone)
EditText etPhone;
@Bind(R.id.et_verify_code)
EditText etVerifyCode;
@Bind(R.id.btn_send)
Button btnSend;
@Bind(R.id.btn_login)
Button btnLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_onekey);
ButterKnife.bind(this);
ivLeft.setVisibility(View.VISIBLE);
tvTitle.setText("手机号码一键登录");
}
@OnClick({R.id.iv_left, R.id.btn_send, R.id.btn_login})
public void onClick(View view) {
switch (view.getId()) {
case R.id.iv_left:finish();
break;
case R.id.btn_send:requestSMSCode();
break;
case R.id.btn_login:oneKeyLogin();
break;
}
}
可见,比原来使用findViewById方法来实例化控件方便了很多,并且可以直接生成点击事件,在里面写你要做的操作即可
【原创】初识懒人开发库---ButterKnife的更多相关文章
- 懒人习惯之ButterKnife Zelezny
项目地址:https://github.com/avast/android-butterknife-zelezny 这个是Android Studio的插件. 其实就间接帮你把LoadView的过 ...
- 【原创】窥视懒人的秘密---android下拉刷新开启手势的新纪元
小飒的成长史原创作品:窥视懒人的秘密---android下拉刷新开启手势的新纪元转载请注明出处 **************************************************** ...
- C# 嵌入dll 动软代码生成器基础使用 系统缓存全解析 .NET开发中的事务处理大比拼 C#之数据类型学习 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持 基于EF Core的Code First模式的DotNetCore快速开发框架 【懒人有道】在asp.net core中实现程序集注入
C# 嵌入dll 在很多时候我们在生成C#exe文件时,如果在工程里调用了dll文件时,那么如果不加以处理的话在生成的exe文件运行时需要连同这个dll一起转移,相比于一个单独干净的exe,这种形 ...
- 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...
- 网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?
1.前言 标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西.本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么. (本文同步 ...
- Docker Compose 部署 Redis 及原理讲解 | 懒人屋
原文:Docker Compose 部署 Redis 及原理讲解 | 懒人屋 Docker Compose 部署 Redis 及原理讲解 4.4k 字 16 分钟 2019-10-1 ...
- Ubuntu14.04 CUDA8.0 CUDN4.0 NVIDIA1080 多种深度框架(懒人三步装) - 从入门到放弃
这是一个懒人快速安装教程,1080卡有点麻烦,因为cuda需要8.0.为了安装方便直接把命令写成三个shell脚本. 代码基本是http://blog.csdn.net/langb2014/artic ...
- [超级懒人最简单法]iPhone 6 plus 适配切图方法分享(转载文章)
网络上已经有很多适配教程,可是看了半天总是半懂不懂..最后还是要综合多个教程再动动脑子动动手,最好有程序大哥帮你试一下(这得有多大的福气) 如果有跟我一样情况的: 1. 有人说用sketc ...
- 详细的OS X Yosemite 10.10懒人版安装教程
永远记住一句话:难,是因为不会.先是要放宽心态,才更利于解决安装过程中这样那样的问题.多尝试多动脑,不要有过份的依赖.很多问题到解决以后,才发现是如此的简单,我装黑苹果是拿来使用的,所以我的目的是装好 ...
随机推荐
- scikit-learn实现ebay数据分析 的随笔
注:只是随笔 import pandas as pd train = pd.read_csv() 读入scv格式的文件 train = train_set.drop(['EbayID','Quant ...
- Python爬虫个人梳理(代码有空写)
这里多是摘抄的,只是用于个人理解. 1.urlopen().read()是爬取网页的内容,出来可能是一堆的源代码.和我们右击网页查看是一样的. 2.当用到http请求的时候,我们可以使用Request ...
- 循序渐进Python3(十一) --2-- web之javascript
JavaScrip JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之后 ...
- android ListView子布局中按钮响应点击事件
只需要在子布局的根布局中添加以下属性即可: android:descendantFocusability="blocksDescendants"
- 何为babel / gulp
Babel主要用来将新版本的javascript(ES6,ES7)编译为ES5,目前它对于新标准的支持程度甚至高于Chrome浏览器.通过引入预设babel-preset-react,babel还能解 ...
- spring mybatis memcached
applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xm ...
- openstack快速封装镜像
本来是该写对接ceph的,但是临时有事了,必须先弄镜像,因此提前写这个了,我个人不是按官网来封装镜像的,是按自己的习惯,所以觉得信不过的可以用官网的方式,有兴趣的可以看看都知道,openstack创建 ...
- 一个的unity学习系列的博客
1.http://my.csdn.net/caoboya 2.http://my.csdn.net/OnafioO
- [z]查找锁表并解锁
select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode f ...
- TCP协议学习记录 (二) Ping程序
简单的实现了一个ping程序,没有做icmp差错报文的检查. 支持自定义字节数,支持发包个数 #pragma pack(4) #define ECHO_REQUEST 8 #define DATASI ...