说明:
本篇文章已授权微信公众号码个蛋独家发布
俗话说得好,工欲善其事,必先利其器。做开发时间长了,总想找一些快捷方法,只有拥有好用的工具,才能节省开发时间,提高工作效率。我就是一个 追(喜)求(欢)高(偷)效(懒) 的开发人员,正好趁着国庆假期,把平日用到的一些 Android Studio开发插件 整理了一下,分享给大家。
有人会问了,网上也有很多博客在讲Android Studio的插件总结,为什么你还要弄一篇博客呢?我可以告诉大家,网上讲的那些很多都是文字,要么就是给你一个链接,有些还是过时的,有些博客讲的比较全面,可是并没有分门别类去区分,很杂乱;有的博客做了分类,但是都是文字和链接,打开某些链接只是一些简单的图片,很简单。
简单看几个图就知道网上的博客写的大概是什么样的(我并没有针对谁,只是说我们写博客给别人看一定要注意一目了然):
有这样的:标题是链接,介绍就一句话,没有具体用法,图片看不到。
有这样的:介绍就一句话,没有具体用法,但是有下载地址和文档地址(我还要去打开文档去看,有些是英文的,还需要去翻译)。
有这样的:标题是链接,点进去有的链接已经失效,介绍用法是全英文的,我还要去翻译。
有这样的:这个稍好一些,标题是链接,有介绍,没有图片讲解,需要点击标题链接进去。
有这样的:全部是文字,没图片,杂乱,类型不知道,哪个好用也不知道,还要自己一个一个的去下载试试看。
我是一个 追(自)求(娱)极(自)致(乐) 的技术宅,那些博客看的我想砸了电脑,为啥不讲清楚一些,让人可以知道是干嘛用的?这也是我整理这篇博客的原因。
首先,我分门别类,按类型把功能类似的的都放在一起。
其次,我对每一个插件做了一个很精确的讲解,图文并茂。另外把一些注意事项,以及优缺点都写的清清楚楚,这是我自己使用中总结出来的(极个别的除外)。
再次,制作对比图片,以及截图补充说明。网上的有些动图要么太模糊,要么版本太旧,要么就是速度太快看不清。所以我把很多插件的用法自己做了一个录屏,做成gif动图。另外自己也做了一些图片对比图,方便别人查看插件使用前后的区别。(有些图片用的是网上的或者官方的,在此感到抱歉,因为那些图片能够解决问题,也没什么大的问题,所以暂时借用了。)
好了,言归正传,下面看一下今天的 目录,由于内容太多,分为上下两篇介绍,这里是上篇,下篇可以点击链接查看 开发工具总结(8)之图文并茂全面总结上百个AS好用的插件(下)。
一、生成java文件,xml布局和生成资源文件有关:
1.SmartFindViewById
2.GenerateFindViewById(很完美的一个插件)
3.LayoutCreator
4.Android Code Generator
5.Android Studio Prettify
6.AndroidAccessors
7.Android Layout ID Converter
8.BorePlugin
9.Exynap
10.MVPHelper
11.InnerBuilder
二、资源文件的管理和自动生成有关:
1.svgtoandroid
2.Android Holo Colors Generator
3.Android Drawable Importer(36M,有点大) 快速批量导入不同大小的drawable文件
4.Android Material Design Icon Generator 是一个可以生成【Material Design图标】的插件。
5.Android Styler 根据xml自动生成style样式(有点复杂,不实用)
6.android-strings-search-plugin
7.color-manager
8.AndroidPixelDimenGenerator
9.android-selector-intellij-plugin
下面这几个不常用,作为了解:
DimenGenerator 命令行生成dimen
android-selector-chapek
Strings-xml-tools
三、格式化xml布局工具:
1.LayoutFormatter
2.LayoutFormat
四、权限有关:
PermissionsDispatcher plugin
五、序列化工具:
1.Android Parcelable code generator自动生成Parcelable序列化
2.Android Parcelable code generator(for kotlin)使用kotlin开发时自动生成Parcelable序列化。
3.GenerateSerialVersionUID自动生成Serializable序列化。
4.SerializableParcelable Generator自动生成Serializable序列化
六、翻译有关:
1.ECTranslation
2.AndroidLocalizationer
3.TranslationPlugin
4.ReciteWords
七、第三方注解,事件和依赖注入库可视化工具:
1.Android ButterKnife Plugin Plus
2.Android ButterKnife Zelezny
3.Remove ButterKnife
4.eventbus3-intellij-plugin
5.dagger-intellij-plugin dagger
6.otto-intellij-plugin otto
7.databinding-support
一、生成java文件,xml布局和生成资源文件有关:
作用: 重构了GenerateFindViewById 项目的所有代码,使得在一定程度上可以更方便地进行后期扩展。并在GenerateFindViewById 项目基础上新增了智能查找布局文件,优化了展示界面,增加了 I18N 国际化支持等功能。
-
说明:
该插件可以依次通过以下6种方式来逐一尝试获取目标布局文件名,优先级从高到低,一旦有一个方法获取到了有效的布局文件名, 就会展示对应布局文件的所有拥有 id 的 View 控件,然后可以选择生成对应的 findViewById 和 onClick 点击事件代码。1.选中布局文件名,如选中代码段 setContentView(R.layout.activity_main); 中的 activity_main
2.检测当前光标所在行是否包含布局文件名(通过 R.layout. 前缀判断)
3.Activity setContentView(R.layout.xxx) 方法布局文件参数
4.Fragment(包括 support_v4 fragment) 中 onCreateView 方法中 inflate(R.layout.xxx... 布局参数
5.RecyclerViewAdapter 中 onCreateViewHolder 方法中 inflate(R.layout.xxx... 布局参数
6.弹输入框提示手动输入 注意事项:如果是Activity,必须要有oncreate方法,如果是fragment,必须要有onCreateView方法,如果是适配器里面的布局,必须要有onCreateViewHolder 方法。也就说,必须要有布局参数。
快捷键: Ctrl + Alt + S
-
用法:
1.在一个 Activity, Fragment, RecyclerViewAdapter(包含直接或间接子类)甚至一个一般的类文件中,如果对应代码中已存在布局文件名,
可以对着类文件右键选择Generate,选择 SmartFindViewById 菜单(或是 Ctrl + Alt + S, 或者
点击菜单栏Code 选择 SmartFindViewById ), 这时就会自动查找布局文件,然后弹出一个展示目标布局
文件下的所有有 id 的 View 控件列表,如果你的布局文件不是写在 setContentView(R.layout.xxx) 等常见代码中,
你可以手动选定目标布局文件名或将光标定位到目标布局文件名所在的代码行, 最后还可以手动输入。2.在弹出的 View 控件列表弹框中,默认选中还没有编写 findViewById 代码的 View 控件,当然也可以手动选中或取消。
3.可以根据 View 控件是否有 android:clickable=true 属性或是 Button 类控件,自动勾选自动生成 onClick 点击事件代码。
4.可以编辑 View 控件生成类成员变量的变量名,View 成员变量名生成默认规则类似于: android:id="@+id/btn_submit_info"
对应的成员变量名为 mSubmitInfoBtn5.对于 Fragment 等需要 rootView.findViewById, 可以勾选 RootView 选项,同时可以设置该 RootView 的变量名,默认为 itemView,
对于非 Activity 类该选项默认勾选6.点击确认生成
演示图如下:
这是无布局参数生成的效果(看看有多麻烦就知道了):
这是有布局参数生成的效果:
2.GenerateFindViewById(很完美的一个插件)
快捷键:Ctrl+Alt+E
-
作用:
1)可输入布局字段、可选中布局文件字段,自动生成有id控件相应的代码(如果鼠标只是放在布局上,按下快捷键,会弹出输入框,提示输入布局;
鼠标双击布局,就不会有弹窗让你输入布局了)
2)自动生成onCreate/onCreateView方法
3)可编辑变量名
4)可选择是否生成OnClick代码
5)可选择是否LayoutInflater类型
6)支持ButterKnife用法(跟ButterKnife原始用法有区别,慎用) 用法(用途很多,下面就简单的来几张图演示一下):
Activity如果没有onCreate方法,会先生成onCreate方法,再重新操作一次才生成有id控件相应的代码。如下图所示:
Fragment如果没有onCreateView方法,会先生成onCreateView方法,再重新操作一次才生成有id控件相应的代码。如下图所示:
3.LayoutCreator
作用:可以让你在Activity/Fragment中自动生成findViewById等布局相关初始化代码,或者在Adapter中自动生成ViewHolder代码。
用法:鼠标放在布局文件上,按快捷键alt + Insert(或点右键选择Generate / 或点击菜单Code → Generate ),右键选择LayoutCreator,选择要生成的变量以及其他设置,点击confirm就可以了。
下面这个图是以Activity生成代码作为演示:
【缺点】
1) 控件id是什么,用这个插件生成的控件命名就是什么,命名不规范。
2) EditText之类的可以编辑的控件,获取数据的时候,用的是id名字获取的,要手动改一下。(请看示例图上有一处报错的,那个就是。)
4.Android Code Generator
- 用法: 找到布局文件名称,右键,选择Generate Android Code → 选择要生成的类型(默认是6种类型可供选择), 选择生成的代码存放的路径以及包名,如果有多个module或者lib,默认的包名是第一个module的包名(比如我的第一个module是app,包名是 com.lzw.logutilsdemo )
- 使用图解如下:
【优点】根据布局文件快速生成对应的Activity,Fragment,Adapter,Menu类,点击Android Studio菜单的file --> setting--> Android Code Generator,可以快速生成文件,也可以复制代码到剪切板,很方便。
-
【缺点】
(1) 生成的menu需要自己复制粘贴,很麻烦。
(2) 每次都要手动设置路径和包名,很麻烦。
(3) 生成的点击事件需要自己去导包,很麻烦。
(4) 生成的控件如果是button之类的,是这种格式 findViewById(R.id.btn).setOnClickListener(this); 其他的都是很标准的,
看起来很不美观,建议改善。
(5) 生成的类名不规范,比如我的xml是activity_main2.xml,生成的Activity名字是ActivityMain2Activity,这显然是多此一举,
应该把前面那个Activity去掉,并且调整一下顺序,如果是MainActivity2就对了。
5.Android Studio Prettify
-
作用:
- 可以将代码中的字符串写在string.xml文件中,选中字符串鼠标右键选择Extract String resource
2. 从布局文件中生成对View的声明,这个插件帮助我们自动生成findViewById这种代码。
(有两种提示,一个是View Variables ,一个是View Fields,如下图所示:)
两者的区别:View Variables是直接生成局部变量,而且是排成一排;View Fields是生成全局变量并引用。
-
【缺点】
多个Module拥有同名的xml布局文件,有可能会设置到别的Module的xml布局文件中。
生成的代码都在onCreate或者onCreateView中,可读性差。
生成的全局变量的导包是在变量类型上的,而不是在类外面导包,很不规范。
6.AndroidAccessors 快速生成get set方法,用法: 在代码中写完Java Bean对象后,按下Alt+Insert后选择AndroidAccessors即可
- 使用图解如下:(图里面第一次用的是AndroidAccessors 演示的,第二次用的系统自带的演示的)
- 【缺点】Android Studio自带有这个功能,没必要下载这个插件
7.Android Layout ID Converter(这个最麻烦,不推荐使用,仅作为了解)
- 使用:鼠标在布局文件右键,在弹出来的菜单当中选择Convert Android layout xml,然后它会弹出一个面板,如下所示。选择要生成的代码的格式,按OK,这时它已经把生成的代码复制在你的粘贴板中,然后你在使用这个布局文件的Activity或Fragment中,按Ctrl + V 把代码粘贴出来就可以了。
- 【缺点】需要手动粘贴,麻烦;另外只能设置m前缀,_前缀或者无任何前缀,扩展性不好。
- Android Studio 自动生成代码插件(Android Studio插件搜索LayoutCreator就可以下载,具体请查看下文的LayoutCreator有详细讲解)
9.Exynap
Exynap 一个帮助开发者自动生成样板代码的 AndroidStudio 插件。只需要一个快捷方式(Ctrl + Shift + D),输入命令就可以生成代码了。
10.MVPHelper
一款Intellj IDEA 和Android Studio的插件,可以为MVP生成接口以及实现类,解放双手。具体请查看
Android Studio插件之MVPHelper,一键生成MVP代码一文
- 使用图如下:
11.innerbuilder
InnerBuilder 一款Intellj IDEA 和Android Studio自动生成内部类Builder代码的插件。
使用:使用Shift + Alt + B 或 Alt + Insert并选择Builder ....选择要包括的字段,然后按OK。
当构建器已存在时生成构建器时,插件将尝试更新它。 它将添加缺少的字段和构建器方法,但不会删除任何字段或方法。示意图:
二、资源文件的管理和自动生成有关:
通过它可以完成从svg文件到Android VectorDrawable的自动化转换,传统做法是网上招一个工具生成一张svg图,然后导入到Android Studio。
新版Android Studio自带的svg转VectorDrawable功能:
- 下面一张图演示一下这个插件的用法:
2.Android Holo Colors Generator
- 通过自定义Holo主题颜色生成对应的【Drawable】和【布局文件】,点击导航栏的蓝色的 H 符号,就可以了。各种右键,各种菜单栏都找了,找不到使用方式,找了半天最后在导航栏有个蓝色的H符号,太坑了,官方也没有讲解怎么使用。
3.Android Drawable Importer(36M,有点大) 快速批量导入不同大小的drawable文件。
它导入Android图标与Material图标的Drawable ,批量导入Drawable,多源导入Drawable(即导入某张图片不同分辨率的图片到对应的drawable目录下)它可以减少导入图像到Android项目所需的工作量。
下面看几张截图:
点击任意一个文件,右键New,然后看最后4 个选项,这就是该插件的4个功能
每个功能的具体演示
4.Android Material Design Icon Generator(14M,这个插件比较大) 是一个可以生成【Material Design图标】的插件 ,使用方式,右键项目,选择Material Design Icon,可以选择icon图标,大小,路径等
*点击任意一个文件,右键New,选择Material design icon,示意图如下:
- 选择设置要生成的内容,点OK
5.Android Styler 根据xml自动生成style样式(有点复杂,不实用)
*用法:选中要生成样式的内容,复制到styles.xml里面,右键Paste Style或按快捷键 Ctrl + Shift + D,然后输入一个style的名字,最后在xml里面引用这个样式。
6.android-strings-search-plugin
一个可以通过输入文字找到strings.xml资源的插件
- 官方的示意图如下:
- 【缺点】不能输入中文,即使是values-cn里面的strings.xml里面的中文也不能识别
7.color-manager
颜色管理
使用也很简单:选择要放置的文件,从颜色面板选一个颜色,拖动到您要复制颜色名称/标签的位置。
-
示例图:
1.在xml中使用颜色
2.不在xml中使用颜色
8.AndroidPixelDimenGenerator
根据输入的像素来自动生成Android项目的dimen.xml文件,主要是为了适配国产Android TV盒子的各种分辨率。 这个插件参考自 DimenGenerator
-
用法:
1.点击Tools菜单 → AndroidPixelDimenGenerator
2.根据提示输入分辨率的取值范围和分辨率
3.文件生成路径默认在当前项目的res,如果有多个module一般会在第一个的res中,如果遍历不到res文件夹,文件生成路径为当前项目的根目录。 示意图:
9.android-selector-intellij-plugin
插件生成normal,press和按下水波纹颜色
-
使用方式:
1.首先在 res/values/colors.xml添加颜色
2.res目录中右键选择New → 选择 Android Selector(或Ctrl+ N快捷键)。
3.选择文件名,颜色,press按下颜色和按下水波纹(pressed-v21 )的颜色。 示例图:
下面这几个不常用,作为了解:
DimenGenerator
命令行生成dimen
- 通过资源文件命名自动生成 Selector 文件,已经4年没更新,使用过程会报错。按照惯例,还是来一张效果图:
Strings-xml-tools
管理Android项目中的字符串资源,它提供了排序Android本地文件和添加缺少的字符串的基本操作。(3年没更新了,这个工具对Android Studio1.2+以上的都不支持,不推荐使用,仅作了解)
三、格式化xml布局工具:
1.LayoutFormatter 一键格式化你的 XML 文件,并且调整Android布局XML文件属性顺序,并且会将默认属性调整到前面,并在行的末尾使用自定义属性。
用法入下:
1\. 选择布局文件右键,或者直接在布局文件里面右键 -> Refactor -> Reformat Layout XML.
2. 快捷键: ctrl+alt+F
使用效果对比图如下所示:
2.LayoutFormat 快速格式化xml代码(因为快捷键和LayoutFormatter 一样,不建议同时安装这两个插件)
功能有两个:
- 1.批量去格式化layout.xml,点击layout目录,右键Refactor,选择LayoutFormat(快捷键Ctrl +Alt + F)
- 2.修改某一个layout.xml硬编码,点击布局名字右键Refactor(或者打开布局,鼠标放在布局内容任意地方
右键Refactor),选择LayoutFormat(快捷键Ctrl +Alt + F)
- 使用中可能会遇到的问题,在导入插件时,windows下可能会出现插件加载失败的情况。会报下面的错误:
cannot create class "com.shang.layoutformat.LayoutFormat" [Plugin: com.shang.android.layoutformat]
com.intellij.diagnostic.PluginException: cannot create class "com.shang.layoutformat.LayoutFormat"
[Plugin: com.shang.android.layoutformat]...后面还有一大串,在此省略
解决方式:这是使用的android studio 的运行时的jdk版本低于插件的jdk,换成最新的jre1.8就OK了
( 查看android studio 的 java 版本是在:菜单栏 > Help > About)
四、权限有关:
PermissionsDispatcher plugin 自动生成动态权限的代码
-
用法:
1. 第1步.打开项目modle里面的build.gradle 右键 Generate -> Add PermissionsDispatcher dependencies,添加依赖
2. 第2步.打开 Activity/Fragment,右键 Generate -> Generate Runtime Permissions... 选择要设置的权限,
输入注解的方法名,点击Generate 按钮 示范图如下:
五、序列化工具:
1.Android Parcelable code generator 自动生成Parcelable序列化
2.Android Parcelable code generator(for kotlin) 使用kotlin开发时自动生成Parcelable序列化,用法和上述类似。
3.GenerateSerialVersionUID 自动生成Serializable序列化。
【注意】默认情况下Intellij IDEA是关闭了继承了java.io.Serializable的类生成serialVersionUID的警告。如果需要ide提示生成serialVersionUID,那么需要做以下设置:
1、setting -> Inspections -> Serialization issues,将其展开后将 serialzable class without "serialVersionUID"打上勾;
2、将光标放到类名上,按 atl+enter 键,就会提示生成serialVersionUID了
4.SerializableParcelable Generator 自动生成Serializable序列化
六、翻译有关:
这是一个可以对AndroidStudio中的英文进行翻译的一个插件,以后看源码的时候,就不用再去查字典了,方便多了,也可自定义快捷键,具体的可查看其使用说明。
使用:选择 Edit -> Translate或者按下Alt + I,即可翻译。(默认的是Meta + I ,windows上没有这个快捷键,我就改成了Alt + I, 点击菜单栏File -> Settinigs -> Keymap -> 搜索Translate - > 右键 add Keyboard Shortcut. 输入你想要的快捷键即可 )
2.AndroidLocalizationer
可用于将项目中的 string 资源自动翻译为其他语言
3.TranslationPlugin
又一翻译插件,可中英互译
- 说明:需要注册申请有道智云翻译服务,有一定的使用期限,如帐号到期或欠费,将无法使用。
- 这是一个androidStudio翻译与陌生单词记录插件,你所翻译的单词会被记录在你当前用户目录下的ReciteWords.md文件中(如:C:\Users\Bolex\ReciteWords.md)。可以通过Markdown编辑器打开它进行学习。
- 使用很简单,选中代码,按下 Alt+Q(也可以自己设定)。即可翻译。效果如下:
- 翻译的单词会被记录在当前项目的根目录下的翻译历史记录.md文件中(如:\xxxProject\翻译历史记录.md)。可以通过Markdown打开它。as翻译后切换Project模式可以在项目文件夹中直接看到。效果如下:
七、第三方注解,事件和依赖注入库可视化工具:
1.Android ButterKnife Plugin Plus
它是基于android-butterknife-zelezny 1.6开发的,并在此基础上新增了以下功能。
- 1)可以自由选择是否在当前类中对ButterKnife进行初始化,避免了原版本只要使用插件初始化控件会自动在onCreate中进行ButterKnife.bind(this)的尴尬。
这样就可以在基类中进行ButterKnife的初始化,不必要每个类中都要初始化,对开发框架的搭建更加方便。
- 2)在Android Studio的设置界面,对在当前类中是否强制初始化提供了默认值设置,这样就可以让插件使用更符合自己的操作习惯。
2.Android ButterKnife Zelezny
配合ButterKnife实现注解,从此不用写findViewById,想着就爽啊。在Activity,Fragment,Adapter中选中布局xml的资源id自动生成butterknife注解。
使用方式:在布局右键Generate --> Generate ButterKnife Injections --> 选择要命的名(或者快捷键Ctrl+Shift+B)
3.Remove ButterKnife
把使用ButterKnife的注解快速批量切换成正常findViewbyId
平时使用ButterKnife的困扰:
1.ButterKnife这个第三方库每次更新之后,绑定view的注解都会改变,从bind,到inject,再到bindview,
搞得很多人都不敢升级,一旦升级,就会有巨量的代码需要手动修改,非常痛苦
2.当我们有一些非常棒的代码需要拿到其他项目使用,但是我们发现,那个项目对第三方库的使用是
有限制的,我们不能使用butterknife,这时候,我们又得从注解改回findviewbyid
针对上面的两种情况,如果view比较少还好说,如果有几十个view,那么我们一个个的手动删除注解,
写findviewbyid语句,简直是一场噩梦(别问我为什么知道这是噩梦)
所以,这种有规律又重复简单的工作为什么不能用一个插件来实现呢?于是就有大神写了RemoveButterKnife这个插件帮你解决这些烦恼。
- 使用很简单: 点击菜单栏 Edit → RemoveButterKnife
4.eventbus3-intellij-plugin
EventBus 导航插件,引导 EventBus 的 post 和 event,是在eventbus-intellij-plugin基础上修改的,支持EventBus 3.X,并且修复了原插件eventbus-intellij-plugin的bug,使用起来更方便。
5.dagger-intellij-plugin
dagger可视化辅助工具,有了它可以让@Inject对象与创建它的@Provides方法之间有一个很清晰的可视化过程。【具体能不能兼容最新的dagger2,还没研究,博主对这个用的少,有兴趣的小伙伴欢迎去尝试,有结果之后别忘了在博客下面留言告诉我一声,感谢大家。】
6.otto-intellij-plugin
otto事件导航工具
- 从 @Produce 跳转到 @Subscribe 过程
- 从 Event 跳转到 @Subscribe
7.databinding-support
一个可以快速实现databinding的插件,自从谷歌推出databinding框架以来,有不少人都在使用这个框架开发,一般情况下在xml里面手写一些代码很麻烦,有了这个插件就要方便很多了,并且可以快速跳转到具体类。
快捷键:alt + enter
具体功能如下所示:
-
双击根布局,按alt + enter,选择 Convert to databinding layout ,布局就被包裹在<layout></layout> 标签里面
-
鼠标放在命名空间上,按alt + enter,选择Add <data> tag, 即:添加<data></data>标记
-
双击一个属性值,按alt + enter,右键选择Wrap with@{} , 即:包裹在@{}里面
-
双击一个属性值,按alt + enter,右键选择Wrap with@={} , 即:包裹在@{}里面
-
双击一个属性值,按alt + enter,选择 Switch to...,在 @{} 和 @={} 之间切换(字母太多,不打了,选择最后一个就是的,具体的请看图),
-
在 <data> 标签里面,按alt + enter,右键选择Add <import> tag,就可以添加 <import> 标签
-
在 <data> 标签里面,按alt + enter,右键选择Add <variable> tag,就可以添加 <variable> 标签
-
从类跳转到layout布局,这个很通用,一看就知道。
查看下篇可以点击链接查看 开发工具总结(8)之图文并茂全面总结上百个AS好用的插件(下)。
本文部分内容参考文章如下: