首页 > 代码库 > 让写代码变成简单的copy操作,代码生成器之一---------android,findViewById
让写代码变成简单的copy操作,代码生成器之一---------android,findViewById
通过写一个简单的配置文件,自动扩展生成相应的代码,从而可以偷点小懒。
配置文件如下:
TextView:money TextView:name TextView:age ImageView:headImg
ruby 代码生成器如下:
require 'erb' class FindViewById class << self def get_type_ab(type) case type when "TextView" "Tv" when "ImageView" "Iv" when "GridView" "Gv" when "ListView" "Lv" when "Gallery" "Gv" end end def get_attrs_from(conf_file) File.open(conf_file) do |f| result = [] f.each_line do |line| line = line.chomp line = line.gsub(/\s+/,"") type_name = line.split(":") next if type_name.size != 2 name = nil name = "m" << type_name[1].capitalize ab = get_type_ab(type_name[0]) name << ab if ab != nil attr = Attr.new(type_name[0], name) attr.id = type_name[1] result << attr end result end end def out(conf_file) erb = ERB.new(template(conf_file)) str = erb.result(binding) end def template(conf_file) template = %{ <% attrs = FindViewById.get_attrs_from(conf_file) %> <% attrs.each do |attr| %> private <%= attr.type %> <%= attr.name %>; <% end %> private void initViews() { <% attrs.each do |attr| %> <%= attr.name %> = (<%= attr.type %>)findViewById(R.id.<%= attr.id %>); <% end %> } <% attrs.each do |attr| %> <<%= attr.type %> android:layout_width="wrap_content" android_layout_height="wrap_content" android:id="@+id/<%= attr.id %>" /> <% end %> } end end class Attr def initialize(type,name) @type,@name = type,name end def id=(id) @id = id end attr_accessor :type, :name,:id end end #---------------------------------------run code---------------------------- conf_file = "test.conf" conf_file = ARGV[0] if ARGV.size > 0 generate_code = FindViewById.out(conf_file) puts generate_code
生成的代码如下:
private TextView mMoneyTv; private TextView mNameTv; private TextView mAgeTv; private ImageView mHeadimgIv; private void initViews() { mMoneyTv = (TextView)findViewById(R.id.money); mNameTv = (TextView)findViewById(R.id.name); mAgeTv = (TextView)findViewById(R.id.age); mHeadimgIv = (ImageView)findViewById(R.id.headImg); } <TextView android:layout_width="wrap_content" android_layout_height="wrap_content" android:id="@+id/money" /> <TextView android:layout_width="wrap_content" android_layout_height="wrap_content" android:id="@+id/name" /> <TextView android:layout_width="wrap_content" android_layout_height="wrap_content" android:id="@+id/age" /> <ImageView android:layout_width="wrap_content" android_layout_height="wrap_content" android:id="@+id/headImg" />
将这些代码copy到指定地方即可,简单吧?
让写代码变成简单的copy操作,代码生成器之一---------android,findViewById
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。