咖啡伴侶

          呆在上海
          posts - 163, comments - 156, trackbacks - 0, articles - 2

          Android自適應屏幕方向、大小和分辨率 轉

          Posted on 2011-09-02 09:28 oathleo 閱讀(1258) 評論(0)  編輯  收藏 所屬分類: Android

          屏幕大小
          1、不同的layout

                Android手機屏幕大小不一,有480x320,640x360,800x480.怎樣才能讓App自動適應不同的屏幕呢? 其實很簡單,只需要在res目錄下創建不同的layout文件夾,比如:layout-640x360,layout-800x480,所有的 layout文件在編譯之后都會寫入R.java里,而系統會根據屏幕的大小自己選擇合適的layout進行使用。

          2、hdpi、mdpi、ldpi

                前的版本中,只有一個drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三個,這三個主要是為了支持多分辨率。

          drawable- hdpi、drawable- mdpi、drawable-ldpi的區別:

          1.drawable-hdpi里面存放高分辨率的圖片,如WVGA (480x800),FWVGA (480x854)
          2.drawable-mdpi里面存放中等分辨率的圖片,如HVGA (320x480)
          3.drawable-ldpi里面存放低分辨率的圖片,如QVGA (240x320)
          系統會根據機器的分辨率來分別到這幾個文件夾里面去找對應的圖片。在開發程序時為了兼容不同平臺不同屏幕,建議各自文件夾根據需求均存放不同版本圖片。

          屏幕方向
          1、橫屏豎屏自動切換

                可以在res目錄下建立layout-port和layout-land兩個目錄,里面分別放置豎屏和橫屏兩種布局文件,這樣在手機屏幕方向變化的時候系統會自動調用相應的布局文件,避免一種布局文件無法滿足兩種屏幕顯示的問題。

          2、禁用自動切換

          只需要在AndroidManifest.xml文件中加入android:screenOrientation屬性限制。

          •Android:screenOrientation="landscape"  //是限制此頁面橫屏顯示
          •Android:screenOrientation="portrait"      //是限制此頁面數豎屏顯示
          字體自適應大小
          方法1:

          首先根據不同分辨率獲取不同字體大小。
          在RES里創建
          values-480x320/strings.xml 里面設置<dimen name="Text_size">30px</dimen>

          values-800x400/strings.xml 里面設置<dimen name="Text_size">30px</dimen>

          分別代表480X320 和 800X400分辨率情況下 字號為30px和40px;

          在java文件中這樣調用

          int sizeOfText = (int) this.getResources().getDimension(R.dimen.Text_size);

          方法2:

          在視圖的 onsizechanged里獲取視圖寬度,一般情況下默認寬度是320,所以計算一個縮放比率rate = (float) w/320   w是實際寬度
          然后在設置字體尺寸時 paint.setTextSize((int)(8*rate));   8是在分辨率寬為320 下需要設置的字體大小實際字體大小 = 默認字體大小 x  rate

          主站蜘蛛池模板: 平乐县| 卢龙县| 台前县| 海伦市| 黑龙江省| 台北县| 开封市| 苗栗县| 阿拉善左旗| 百色市| 阿克陶县| 东台市| 茌平县| 蓬莱市| 泉州市| 延吉市| 沁水县| 孙吴县| 曲麻莱县| 腾冲县| 临湘市| 宜章县| 平原县| 孙吴县| 嘉义市| 汤阴县| 桃园市| 安阳市| 库尔勒市| 东平县| 英超| 石棉县| 城市| 饶河县| 道孚县| 乌鲁木齐市| 德清县| 昭通市| 自治县| 河池市| 连州市|