編輯:關於Android編程
通過寫一個簡單的配置文件,自動擴展生成相應的代碼,從而可以偷點小懶。
配置文件如下:
TextView:money TextView:name TextView:age ImageView:headImg
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);
}
Android插件開發初探——基礎篇
Android插件開發初探對於Android的插件化其實已經討論已久了,但是市面上還沒有非常靠譜成熟的插件框架供我們使用。這裡我們就嘗試性的對比一下Java中,我們使用插
Android高仿IOS 滾輪選擇控件
最近根據項目需要,整理了一個相對比較全面的 WheelView 使用控件,借用之前看到的一句話來說,就是站在巨人肩膀上,進行了一些小調整。 這裡先貼上效果圖一般常用的時間
Android學習筆記(二)App工程文件分析
App工程文件分析關於如何創建一個最簡單的Android App請參照鏈接:《 Android學習筆記(一)環境安裝及第一個hello world 》 http://ww
android中簽名、證書、公鑰密鑰的概念及使用
公鑰和私鑰的概念在現代密碼體制中加密和解密是采用不同的密鑰(公開密鑰),也就是公開密鑰算法(也叫非對稱算法、雙鑰算法)”,每個通信方均需要兩個密鑰,即公鑰和私