編輯:關於Android編程
在新創建項目的時候,會自動創建不同的drawable或者mipmap文件夾(在不同像素密度上提供不同的圖片)
或者不同的value下面(在不同像素密度提供不同的值)dimens.xml(這個放在不同的values下面)
如果是下面的match_parent的情況<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">
這裡就介紹一下:
0 + (L) * 1/3 = 1/3L" data-snippet-id="ext.022f7a22bc4dfd4d4b09d722fe5706e5" data-snippet-saved="false" data-codota-status="done">BUTTON1為例 (第二種的0dp寬度)
1/3L --> 0 + (L) * 1/3 = 1/3L
L + (L-2L) * 1/3 = 2/3L" data-snippet-id="ext.8c46fa107bb72b8f27cfe1e5a92180b8" data-snippet-saved="false" data-codota-status="done">BUTTON1為例 (第二種的match_parent)
2/3L --> L + (L-2L) * 1/3 = 2/3L
通過以上的算法,就知道了為啥上面的兩個圖的顯示大小了,同時高度也是同樣的適用。
使用相對布局,禁用絕對布局res/layout-large/main.xml 雙面板 (當運行到平板的時候,就會選用下面的布局(大於7英寸)) " data-snippet-id="ext.73dd6555295e04511cfbc1609db52cbb" data-snippet-saved="false" data-codota-status="done"> res/layout/main.xml 單面板
res/layout-large/main.xml 雙面板 (當運行到平板的時候,就會選用下面的布局(大於7英寸))
* 使用最小寬度限定符(android3.2之後)
res/layout-sw600dp/main.xml,雙面板布局: Small Width 最小寬度(寬或者高最小的一邊大於600dp就是用以下布局) " data-snippet-id="ext.34fc12d4bd715cd69deff1f1daa57a06" data-snippet-saved="false" data-codota-status="done"> res/layout/main.xml,單面板(默認)布局:
res/layout-sw600dp/main.xml,雙面板布局: Small Width 最小寬度(寬或者高最小的一邊大於600dp就是用以下布局)
如果適配android3.2之前,要有以上的兩個維護布
* 使用布局別名
- @layout/main
Android3.2之前的平板布局 res/values-large/layout.xml:Android3.2之後的平板布局 res/values-sw600dp/layout.xml: - @layout/main_twopanes
" data-snippet-id="ext.a2f2624a2e31671e55ac98c54e3a12dc" data-snippet-saved="false" data-codota-status="done"> - @layout/main_twopanes
使用布局別名 res/layout/main.xml: 單面板布局 res/layout-large/main.xml: 多面板布局 res/layout-sw600dp/main.xml: 多面板布局 多面板布局共同部分抽取出來,生成main_twopanes文件 res/layout/main.xml 單面板布局 res/layout/main_twopanes.xml 雙面板布局 setContentView(R.layout.main); 默認布局 res/values/layout.xml:
Android3.2之前的平板布局 res/values-large/layout.xml: - @layout/main
Android3.2之後的平板布局 res/values-sw600dp/layout.xml: - @layout/main_twopanes
- @layout/main_twopanes
* 使用屏幕方向限定符
- @layout/main_twopanes
res/values-sw600dp-port/layouts.xml:" data-snippet-id="ext.31766eccfa490dd079a06b693a274abd" data-snippet-saved="false" data-codota-status="done"> - @layout/main
使用屏幕方向限定符 res/values-sw600dp-land/layouts.xml:
res/values-sw600dp-port/layouts.xml: - @layout/main_twopanes
- @layout/main
" data-snippet-id="ext.cb4d15bd9402420e29d19c8d7e1ba8c9" data-snippet-saved="false" data-codota-status="done"> 1.res/layout/onepane.xml:(單面板)
" data-snippet-id="ext.8d2453a1abeb37adbe012e0b54964af7" data-snippet-saved="false" data-codota-status="done"> 3.res/layout/twopanes.xml:(雙面板,寬布局)
" data-snippet-id="ext.0ba6ad717273a0c384fe8868c11ce221" data-snippet-saved="false" data-codota-status="done"> 4.res/layout/twopanes_narrow.xml:(雙面板,窄布局)
- @layout/onepane_with_bar
false " data-snippet-id="ext.14f5add08fd4c7665693603322bfadb8" data-snippet-saved="false" data-codota-status="done">1.res/values/layouts.xml:
- @layout/onepane_with_bar
false
- @layout/twopanes
true " data-snippet-id="ext.7108a6526ed5370069380c2f5f039887" data-snippet-saved="false" data-codota-status="done">2.res/values-sw600dp-land/layouts.xml:
- @layout/twopanes
true
- @layout/onepane
false " data-snippet-id="ext.762f4084290e68895fe0fed6cd13e965" data-snippet-saved="false" data-codota-status="done">3.res/values-sw600dp-port/layouts.xml:
- @layout/onepane
false
- @layout/twopanes
true " data-snippet-id="ext.67ce1c1b62174a2990167a6644c08400" data-snippet-saved="false" data-codota-status="done">4.res/values-large-land/layouts.xml:
- @layout/twopanes
true
使用自動拉伸位圖- @layout/twopanes_narrow
true " data-snippet-id="ext.0219515502870f211bc80fd671dfc123" data-snippet-saved="false" data-codota-status="done">5.res/values-large-port/layouts.xml:
- @layout/twopanes_narrow
true
1、使用非密度制約像素
使用sp來控制文字的大小
使用dp來控制布局控件的位置(這裡有坑,看看下面)
由此可知,雖然我們已經使用了dp(密度無關)但是顯示還是不能達到統一的效果
問題的關鍵所在—>各種設備的寬度不是一致的,即使使用dp,也是會有誤差的。
解決思路—>不使用dp
多個values下面提供不同的dp值,(必須為每一種設備提供對應的資源文件,如果沒有,就去默認的資源文件裡面查找),但這個最終還是以px為單位的,這個就要自己斟酌了。
* 2、提供備用位圖
* 不同的屏幕密度提供相匹配的圖片
* 但是為了打包的小,一般還是一套圖,一些比較重要的匹配的,可以多切幾套圖
* 使用和設備相符合的,使用的內存占用是最小的
項目中很多的Button, 同時配置很多按鈕切圖,Selector是不是很煩, 使用下面這個類,就可以直接為Button增加點擊效果. 不用多個圖片,不用Selector
本文實例為大家分享了打飛機游戲BOSS以及勝利失敗頁面設計的Android代碼,具體內容如下修改子彈類:public class Bullet { //子彈圖片資源 pu
1 背景還記得前面《Android應用setContentView與LayoutInflater加載解析機制源碼分析》這篇文章嗎?我們有分析到Activity
最近總感覺寫博客的激情不高,不知道為啥。放上效果圖,demo在最下面圖上那個切換按鈕的作用呢,就是模擬改變標簽的個數動態變化整個控件的高度。其實這個控件也算很簡單的控件了