巧用模板,不仅能提升AS开发效率,还能装逼

时间:2022-12-28 01:08:10


Android Studio已经更新到2.3版本了,修正了一些bug,同时增加了很多新功能,所包含的功能越来越强大。个人感觉在使用上和Eclipse简直不在同一个级别上,当然如果你之前习惯使用Eclipse,确实需要一段时间的适应,但当你适应后就会爱不释手。


迄今为止,Android Studio的操作还有很多不熟练的地方,甚至很多人都不知道原来还可以这样。先来看看几个操作事例吧!

对象.for


对象.forr


数字.for


对象.nn


条件语句.if


logt


是不是比我们正常输入快捷很多,当然这只是其中几个小事例而已。看到这里,有很多童鞋可能要说这不就是代码补全吗?


乍一看是自动补全,其实不然,自动补全只是对一个方法或类名的补全,而这个只需要简单输入几个字符就可以出来一大段代码,正是Android Studio的Live Template,在开发中善加利用简直喜欢的不要不要的。




巧用模板,不仅能提升AS开发效率,还能装逼


除了上面这几个,Android Studio还给我们内置了很多默认模板,一起来学习一下吧。


1.psf

 

  public static final

 

  2.psfi

 

  public static final int

 

  3.psfs

 

  public static final String

 

  4.St

 

  String

 

  5.thr

 

  throw new

 

  6.todo

 

  // TODO: 2017/3/15

 

  7.appNs

 

  xmlns:app="http://schemas.android.com/apk/res-auto"

 

  8.lh

 

  android:layout_height="$height$"

 

  9.lhm

 

  android:layout_height="match_parent"

 

  10.lhw

 

  android:layout_height="wrap_content"

 

  11.lw

 

  android:layout_width="$width$"

 

  12.lem

 

  android:layout_width="match_parent"

 

  13.lww

 

  android:layout_width="wrap_content"

 

  14.toolsNs

 

  xmlns:tools="http://schemas.android.com/tools"

 

  15.visible

 

  .setVisibility(View.VISIBLE);

 

  16.gone

 

  .setVisibility(View.GONE);

 

  17.Sfmt

 

  String.format("$string$", $params$);

 

  18.const

 

  private static final int $name$ = $value$;

 

  19.key

 

  private static final String KEY_$value$ = "$value$";

 

  20.fbc

 

  ($cast$) findViewById(R.id.$resId$);

 

  21.rgS

 

  $resources$.getString(R.string.$stringId$)

 

  22.Toast创建Toast

 

  Toast.makeText($context$, "$text$", Toast.LENGTH_SHORT).show();

 

  23.mn求最小值

 

  var1 = Math.min(var2,var3);

 

  24.mx求最大值

 

  var1 = Math.max(var2,var3);

 

  25.logt快速生成TAG

 

  private static final String TAG = "$className$";

 

  26.logm

 

  Log.d(TAG, $content$);

 

  27.logd

 

  Log.d(TAG, "$METHOD_NAME$: $content$");

 

  28.logi

 

  Log.i(TAG, "$METHOD_NAME$: $content$");

 

  29.logr

 

  Log.d(TAG, "$METHOD_NAME$() returned: " + $result$);

 

  30.loge

 

  Log.e(TAG, "$METHOD_NAME$: $content$", $exception$);

 

  31.logw

 

  Log.w(TAG, "$METHOD_NAME$: $content$", $exception$);

 

  32.ifn对象判空

 

  if (某变量 == null) {....}

 

  33.inn对象非空判断

 

  if (某变量 != null) {....}

 

  34.lst数组末尾元素

 

  $ARRAY$[$ARRAY$.length - 1]

 

  35.forfor循环

 

  for () {...}

 

  36.forii变量作为索引for循环

 

  for (int i = 0; i < ; i++) {}

 

  37.itco遍历Collection集合

 

  for (Iterator iterator = collection.iterator(); iterator.hasNext(); ) {

 

  Object next = iterator.next();

 

  }

 

  38.itve遍历Vector集合

 

  for(int i = 0; $INDEX$ < $VECTOR$.size(); i++) {

 

  $ELEMENT_TYPE$ $VAR$ = $CAST$ $VECTOR$.elementAt(i);

 

  39.itar遍历数组

 

  for (int i = 0; i < Array.length; i++) { int i1 = Array[i];}

 

  40.itit获取迭代器并遍历

 

  while (iterator.hasNext()) { Object next = iterator.next(); }

 

  41.iten遍历枚举

 

  while (枚举类.hasMoreElements()) { Object nextElement = 枚举类.nextElement(); }

 

  42.lazy对象判空创建并

 

  if (savedInstanceState == null) { savedInstanceState = new Bundle(); }

 

  43.inst实例判断

 

  if ($EXPR$ instanceof $TYPE$) { $TYPE$ $VAR1$ = ($TYPE$)$EXPR$; $END$ }

 

  44.geti快速生成Instance方法

 

  public static MainActivity getInstance() { return ; }

 

  45.psvm快速生成main方法

 

  public static void main(String[] args){ ... }

 

  46.starter开启Activity方法

 

  public static void start(Context context) {

 

  Intent starter = new Intent(context, $ACTIVITY$.class);

 

  starter.putExtra($CURSOR$);

 

  context.startActivity(starter);

 

  47.rouiT构建runOnUiThread

 

  getActivity().runOnUiThread(new Runnable() {

 

  @Override

 

  public void run() {

 

  $cursor$

 

  });

 

  48.IntentView

 

  Intent view = new Intent();

 

  view.setAction(Intent.ACTION_VIEW);

 

  view.setData(Uri.parse($url$));

 

  startActivity(view);

 

  49.ViewConstructors自定义View构造器

 

  public $class$(Context context) {

 

  this(context, null);

 

  public $class$(Context context, AttributeSet attrs) {

 

  this(context, attrs, 0);

 

  public $class$(Context context, AttributeSet attrs, int defStyle) {

 

  super(context, attrs, defStyle);

50.toar将Collection的对象存储到一个数组里

something.toArray(new collection[collection.size()])


如果能够不断使用并熟练后,开发效率一定可以提升很多。有的朋友会觉得这些命令难记,其实都很简单,每个都有其命名规律,如果实在记不住可以自己修改为自己容易记住的提示命令。如果觉得这些模板太少,不够自己实际使用,也可以自定义Live Templates。


设置路径为Settings->Editor->Live Template,可以创建一个自己的模板组和适用的Template,可以为每个模板指定名字和描述,并且指定适用的文件类型和语句块,如下图所示:



巧用模板,不仅能提升AS开发效率,还能装逼


自定义Live Template



巧用模板,不仅能提升AS开发效率,还能装逼


Edit Template Variables


保存成功后,就可以在Java文件中使用我们上面定义的Template了,简直爽爆了。



巧用模板,不仅能提升AS开发效率,还能装逼



fvd


当然,如果需要制作一些完美的Template,就需要先简单学习一下 Live Template 语法,不过也非常简单。


在语句中使用$...$ 表示待输入的变量,在字符串内也可以使用,在每次输入的时候相同的变量会一起改变。当然在Expression内有很多供使用的非常方便的方法,如 className()、 methodName()等,记得设置 Expression 后别忘了勾选 Skip if defined, 这样在使用的时候光标就不会再停留在这个变量处。更多说明请参照 https://www.jetbrains.com/help/idea/2016.1/live-template-variables.html。

如果你不是很想自己来设置,或者说懒癌比较严重,也可以直接使用大神们早已准备好的Templates,直接导入到Android Studio中即可使用。参考地址:https://github.com/keyboardsurfer/idea-live-templates。导入也比较简单,下载后直接复制到你的 Android Studio 的config\templates目录下。


经过这一折腾,虽然学习会花一点儿时间,但是学会后使用 Android Studio开发效率显著提高,代码敲出来也爽了很多。特别是看到别人还在一个个单词输入的时候,你却只用几个字母就搞定一大段代码,可以小小的装逼一下。