android雜項筆記,關於橫屏縱屏問題,混淆問題備份

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> 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);
是畫筆的字體大小。



















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章