作者:hwj3747
转载请注明
使用场景
举个例子,我们有个BaseActivity,里面定义了一些基础的方法,以后我们写的每个Activity都要继承这个基类,并且实现里面的方法,这是我们Android开发常用到的一种方法,但是这样就会有个问题,就是每次我们都要写很多重复的代码,这个时候我们就可以借助文件模板来实现这些重复的代码。
使用方法
比如说我有这样一个Activity,继承BaseActivity ,并且重写其getLayoutID(),onInitTitle(),onResolveIntent(),onInitFragment(),4个方法来初始化这个Activity,我们发现这个类的大部分代码都是死的,所以我们可以用文件模板来快速创建这样一个类。
package zuifan.hwj3747.com.zhuifan.ui.test2;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
import zuifan.hwj3747.com.zhuifan.R;
import zuifan.hwj3747.com.zhuifan.base.BaseActivity;
public class TestActivity2 extends BaseActivity {
public static TestActivity2 instance;
public static void launch(Context context) {
Intent intent = new Intent(context, TestActivity2.class);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected int getLayoutID() {
return R.layout.activity_test2;
}
@Override
protected void onInitTitle() {
instance=TestActivity2.this;
}
@Override
protected void onResolveIntent(Intent intent) {
}
@Override
protected void onInitFragment() {
showContent(new TestActivityFragment2(),R.id.Layout);
}
}
打开setting搜索file template,找到file and code template选项:
Paste_Image.png点击加号,新建一个模板,在Name的地方写上模板的名字比如TestTemplates,又下角是一些系统常量的说明:
- ${PACKAGE_NAME} 当前包名
- ${NAME} 当前类名
- ${USER} 当前用户名
- ${DATE} 当前日期
- ${YEAR} 当前年份
- ${MONTH} 当前月份
等等。
并且我们也可以自定义一些变量,格式是${},比如${test},在新建模板的时候会让你填这些值。
那接下来我们就可以用系统常量加自定义的变量,把我们上面的Activity类模板写完了,如下:
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
import ${BasePackage}.R;
import ${BasePackage}.base.BaseActivity;
public class ${NAME} extends BaseActivity {
public static ${NAME} instance;
public static void launch(Context context) {
Intent intent = new Intent(context, ${NAME}.class);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected int getLayoutID() {
return R.layout.${layout_activity};
}
@Override
protected void onInitTitle() {
instance=${NAME}.this;
}
@Override
protected void onResolveIntent(Intent intent) {
}
@Override
protected void onInitFragment() {
showContent(new ${fragment_name}(),R.id.${activity_id});
}
}
把上面写好的模板填入TestTemplates,保存,接下来我们就可以快速创建Activity类了!我们在zuifan.hwj3747.com.zhuifan.ui.test这个包下新创建一个模板,如下:
Paste_Image.png然后出现如下选择框,填入文件名,以及我们自定义的一些变量。点击完成。
Paste_Image.png最后生成代码:
package zuifan.hwj3747.com.zhuifan.ui.test;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
import zuifan.hwj3747.com.zhuifan.R;
import zuifan.hwj3747.com.zhuifan.base.BaseActivity;
public class TestActivity extends BaseActivity {
public static TestActivity instance;
public static void launch(Context context) {
Intent intent = new Intent(context, TestActivity.class);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected int getLayoutID() {
return R.layout.activity_test;
}
@Override
protected void onInitTitle() {
instance = TestActivity.this;
}
@Override
protected void onResolveIntent(Intent intent) {
}
@Override
protected void onInitFragment() {
showContent(new TestActivityFragment2(), R.id.test);
}
}
测试通过,与要求的Activity类一样。这样一个文件模板就算是完成了!
网友评论