> Compilation failed; see the compiler error output for details.
上面錯誤導致的原因是所有子Module都不能配置混淆,即minifyEnabled true
所有被主Module直接或間接引用的子Module的AndroidManifest.xml文件內容都會合併到主Module的AndroidManifest.xml文件中,
包括權限,註冊的組件等
所有Module下res目錄中的內容也會合併到主Module的res對應目錄和文件中。
在主Module中配置的混淆,會作用在所有的Module上,即其他的Module也會被混淆。
layout目錄描述:
layout-port爲豎屏時的佈局目錄。
layout-land爲橫屏時的佈局目錄。
layout爲默認目錄,即:
豎屏時,系統會首先尋找layout-port目錄的佈局,如果找不到則使用layout目錄的佈局;
橫屏時,系統會首先尋找layout-land目錄的佈局,如果找不到則使用layout目錄的佈局。
屏幕適配方案的缺陷,針對橫屏的時候:
發現日常使用的手機有兩種常見的分辨率和density值
1280x720的分辨率,density值爲2,但是發現:widthDP值爲360dp,heightDP值爲640dp
1920x1080的分辨率,density值爲3,但是發現:widthDP值爲360dp,heightDP值爲640dp
比喻很巧,你的測試機widthDP值爲360dp,heightDP值爲640dp
於是在橫屏時,手機的widthDP值爲360dp,則系統會尋找默認的values目錄下的dimens.xml文件的dp_xxx變量。
注意了,此時,如果手機切換成橫屏,那麼手機的widthDP值爲640dp,故此時系統會尋找values-w640dp目錄下的dimens.xml中的dp_xxx變量。
此時,如果頁面上有個按鈕的寬高都爲28dp,而你使用了@dimen/dp_28,實際值則是49.78dp( 根據比例計算28*(640.0f/360.0f) ),故會變大很多。
所以沒有辦法,橫屏時的頁面不能做適配了,
在橫屏時我一般是從新進行頁面編輯,只要控件ID沒有在acivity中有代碼操作,兩個界面可以有不同的控件和佈局
在自定義控件的時候,控件內容動態生成了TextView,但是想提供方便在空間容器上提供設置內部TextView字體的屬性,注意看下面:
1、獲取字體大小:
imageTextSize = array.getDimensionPixelSize(attr,
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, TEXT_SIZE, getResources().getDisplayMetrics()));
2、設置給TextView:
textView.setTextSize(imageTextSize);
然後和普通的TextView對比,有沒有發現textView.getTextSize()值一樣,但是自定義控件內部的TextView字體卻大一倍?
原因在於,我們通過步驟一獲取到字體後,必須這麼設置字體才行 textView.getPaint().setTextSize(imageTextSize);
是畫筆的字體大小。