編輯:關於Android編程
背景:我相信對於Android開發者來說,屏幕適配一直是你心中的痛~,為了讓Android開發者從屏幕適配的痛苦中解脫出來,我決定實現這個Android自動化屏幕適配的1.0版本。下面來講一下思路。
首先以values-w360作為標准也就是360dp,對應的設備就是720×1080俗稱的720P的屏幕,也就是說設計師給的設計稿是以720P的屏幕作為設計圖的,那麼如果設計圖上面的尺寸是100px,那麼我們就需要用100/2 = 50dp得到我們的這個標准值,以此類推,將app中所有需要適配的尺寸都寫入到values目錄的dimens.xml(標准值)中,Android程序員所需要做的工作就這麼多了。
接下來的工作就交給腳本了,首先腳本會將values/dimens.xml
拷貝到需要適配的屏幕分辨率對應的目錄,例如values-w400
,然後用正則匹配出每一個尺寸,進行計算然後重新寫入適配之後的值,這裡以360dp為標准,400dp為需要適配的目標設備,以100px為例,那麼(400/360)×
100 = 111,那麼在values-w400dp
這個目錄中的dimens的該項目的值就是111dp了。
require 'fileutils'
BASE_DP=360
def adapte_dimens(dimens_file,alpha)
puts "adapter #{dimens_file}"
File.open dimens_file,'a+' do |f
str =""
f.each_line{|line
value = /(?<=>)\d+(?=(dp|sp))/.match(line).to_a[0]#匹配出尺寸的項目包括dp和sp
if value
value = value.to_f * alpha#計算適配後的值
str += line.gsub(/(?<=>)\d+(?=(dp|sp))/,value.to_i.to_s)#將新值寫入
else
str += line
end
}
f.truncate(0)
f.puts str
end
end
values_list = Dir.entries("./").find_all{|f
#通過修改這裡的正則表達式,可以控制具體適配哪一個屏幕比如將正則改為/values-w400dp/那麼就只會適配400dp的屏幕了
/values-w|values-sw/.match(f)
}
values_list.each do |v
FileUtils.cp("values/dimens.xml",v)
dest_file = "#{v}/dimens.xml"
dp = /(\d{3})/.match(v)
alpha = dp[0].to_f/BASE_DP#計算比率系數
adapte_dimens(dest_file,alpha)
end
總結:好了簡單的Ruby自動化適配腳本就完成了,當然還有很多需要改進的地方,現在是每一次運行腳本就會覆蓋目標目錄中的dimens.xml文件,如果有時候自動適配的效果不好偶爾需要人工做一些微調,但是執行這個腳本之後微調的值就會丟失掉,所以還需要改進。有興趣的同學可以自己實現。
Android事件構成在Android中,事件主要包括點按、長按、拖拽、滑動等,點按又包括單擊和雙擊,另外還包括單指操作和多指操作。所有這些都構成了Andro
由於gif圖太大的原因,我將圖放在了github,如果博客中顯示不出來圖,傳送門 由於我是事先寫在md上的,導致代碼的可讀性差,大家將就著看吧。 1. 前言 在
關於Android NDK開發的文章已經比較多了,我的博客中也分享了很多NDK開發相關經驗和技巧,今天簡單寫了一個 Android.mk 的示例模板,供初學者參考。本模板
本文實例為大家分享了Android內存中存儲用戶名和密碼的方法,供大家參考,具體內容如下首先是配置文件:<LinearLayout xmlns:android=ht