Perl自动生成Android Activity的Java文件
来源:互联网 发布:游戏厅捕鱼程序员 编辑:程序博客网 时间:2024/05/07 07:20
开发Android时,每添加一个Activity,都需要新建一个Layout文件和一个Java文件,还不能忘记在Manifest中注册,然后在Java文件中使用findViewById找到控件,才能开始写逻辑代码,如果是按钮,需要添加OnClickListener。
于是写了一个简单的perl脚本,根据Layout文件,生成对应的Java文件,代码如下,读者可以修改实现更加完善的功能:
# # 根据布局文件生成XXActivity.java# 自动将所有带@+id的控件初始化#$activity_ext = "Activity";$file_ext = ".java";$template_filename = "activity_template.java";#Activity名称print "输入Activity名称:";$activity_name = <STDIN>;print "输入package名称:";$package_name = <STDIN>;print "输入布局文件名称:";$layout_name = <STDIN>;$layout_filename = $layout_name.".xml";#打开文件$filename = $activity_name.$activity_ext.$file_ext;open(FILE,">",$filename) or die "open file $filename failed,$!\n";#存储输出字符串的信息my $template_content;open (TEMPLATE,"<",$template_filename ) or die "open file $template_filename failed,$!\n";{ local $/=undef; $template_content = <TEMPLATE>; close TEMPLATE;}#读取layout文件,识别出@+id的控件名称my @control_name_arr;my $layout_content;open (LAYOUT,"<",$layout_filename ) or die "open file $layout_filename failed,$!\n";{ local $/=undef; $layout_content = <LAYOUT>; close LAYOUT;}#匹配控件类型和idmy (@control_type_arr,@name_id_arr);while( $layout_content =~ /<(\w+)\s+android:id="@\+id\/(\w+)"/isg ){ #print $2,"\n"; if($1 ne "include"){ push @control_type_arr, $1; push @name_id_arr, $2; }}#点击按钮的字符串$click_string = '.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //TODO 按钮点击处理 } });';#初始化控件my $control_init_string;my $control_define_string;for($i=0;$i<@control_type_arr;$i++){ $control_define_string .= (" " x 4).$control_type_arr[$i]." ".$name_id_arr[$i].";\n"; $control_init_string .= (" " x 8).$name_id_arr[$i]." = (".$control_type_arr[$i].") findViewById(R.id.".$name_id_arr[$i].");\n"; if($control_type_arr[$i] eq "Spinner"){ $control_init_string .= (" " x 8).$name_id_arr[$i].$click_string."\n"; }}#image = (ImageView) findViewById(R.id.image);$template_content =~ s/\#PACKAGE_NAME\#/$package_name/;$template_content =~ s/\#ACTIVITY_NAME\#/$activity_name$activity_ext/;$template_content =~ s/\#LAYOUT_NAME\#/$layout_name/;$template_content =~ s/\#DEFINE_AREA\#/$control_define_string/;$template_content =~ s/\#INIT_AREA\#/$control_init_string/;print FILE $template_content;print "\n--------- 成功生成$filename -----------\n\n";close TEMPLATE;close LAYOUT;close FILE;
activity_template.java文件内容
package #PACKAGE_NAME#;import android.app.Activity;import android.view.View;import android.view.View.OnClickListener;public class #ACTIVITY_NAME# extends Activity {#DEFINE_AREA#@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.#LAYOUT_NAME#); initView();}private void initView() {#INIT_AREA#}}
0 0
- Perl自动生成Android Activity的Java文件
- 自动生成java电子书的perl程序
- android R.java资源文件不自动生成的原因
- android环境不能自动生成R.java文件的问题
- 新建的android项目,没有自动生成R.java 文件
- android studio 去掉activity自动生成的Title
- android 自动生成的R文件说明
- Android NDK 生成.h文件无法访问Activity的类文件
- android aidl文件无法自动生成java文件
- android 创建aidl文件时自动生成的java文件报错
- Android Studio建立AIDL文件,找不到自动生成的java文件
- Android Studio 自动根据布局生成Activity
- android的aidl-手动实现aidl自动生成的Java文件
- eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法
- eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法
- android 典型问题:R.java文件不能自动生成的解决办法
- android 典型问题:R.java文件不能自动生成的解决办法
- android 典型问题:R.java文件不能自动生成的解决办法
- Android开发:什么是IBinder
- dede织梦后台常用标签
- 网页favicon.ico图标设置
- 无法解析的符号错误
- 【算法】Fractional Multiscale Processing
- Perl自动生成Android Activity的Java文件
- Oracle归档日志删除
- jq 插件编写 待
- 使用LINQ读取分隔符文本文件
- android Mediaplayer用法
- 语音增强——谱减
- Linux监控命令全覆盖
- Hello, FreeSWITCH(2)初识 FreeSWITCH
- 答疑:C语言和框架