成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android自適應布局設計技巧

移動開發 Android
由于目前在做的一款app需要適配手機和平板,所以我在研究怎么構建可適應所有屏幕尺寸的布局方法。在web的自適應布局上我有很多經驗,比如使用網格流,CSS3中的media queries屬性等等,這些都可以實現web上的自適應布局,所以我想在Android上試試看。

由于目前在做的一款app需要適配手機和平板,所以我在研究怎么構建可適應所有屏幕尺寸的布局方法。

[[119528]]

在web的自適應布局上我有很多經驗,比如使用網格流,CSS3中的media queries屬性等等,這些都可以實現web上的自適應布局,所以我想在Android上試試看。

在Android上,是通過configuration qualifiers的方式來加載不同的資源,基于不同的手機屏幕尺寸或者屏幕的朝向(豎直還是水平),而我***的目標就是創建一個可以自動縮放的布局,而不用根據不同的屏幕尺寸加載不同的布局文件。

除了為每種設備尺寸分別制作不同的布局文件外,我發現一種更簡單的方法,就是為不同屏幕尺寸的設備重載style.xml文件。

也許你會覺得它很像CSS樣式,首先可以定義一個基本的style文件,代表普通設備尺寸,它的路徑位于values/styles.xml,然后還可以定義中等設備尺寸,在values-sw600dp/styles.xml(7寸平板),values-sw600dp-land/styles.xml表示水平方向的屏幕,values-sw720dp/styles.xml表示十寸的平板等等。

在CSS中的自適應網格系統中,我們可以布局一個寬是960像素的.container類(沒有margin),而在手機上,我們也可以布局一個100%寬的.container(也是沒有margin的)。

我們可以在Android上使用相同的方法實現,首先,需要建立一個基類樣式。

res/values/styles.xml

  1. <style name="Container"> 
  2.     <item name="android:layout_margin">0dp</item> 
  3.     <item name="android:padding">16dp</item> 
  4.     <item name="android:layout_width">match_parent</item> 
  5.     <item name="android:layout_height">match_parent</item> 
  6.     <item name="android:orientation">vertical</item> 
  7.     <item name="android:background">@drawable/container_background</item> 
  8.     </style> 

對于平板(豎直的)來說,我們可以添加一些外邊距,因為屏幕夠大。

res/values-sw600dp/styles.xml

  1. <style name="Container"> 
  2.     <item name="android:layout_margin">0dp</item> 
  3.     <item name="android:padding">32dp</item> 
  4.     <item name="android:layout_width">match_parent</item> 
  5.     <item name="android:layout_height">match_parent</item> 
  6.     <item name="android:orientation">vertical</item> 
  7.     <item name="android:background">@drawable/container_background</item> 
  8.     </style> 

在平板上豎直和水平的***區別在于,我們會加上margin值,這樣內容就不會充滿整個屏幕了、我們還可以給父視圖加一個背景圖片,來填充空白區域。

res/values-sw600dp-land/styles.xml

  1. <style name="Container"> 
  2.     <item name="android:layout_marginRight">130dp</item> 
  3.     <item name="android:layout_marginLeft">130dp</item> 
  4.     <item name="android:padding">32dp</item> 
  5.     <item name="android:layout_width">match_parent</item> 
  6.     <item name="android:layout_height">match_parent</item> 
  7.     <item name="android:orientation">vertical</item> 
  8.     <item name="android:background">@drawable/container_background</item> 
  9.     </style> 

然后我們可以在不同的屏幕上,這樣使用樣式文件:

  1. <LinearLayout style="@style/Container"> 
  2.     ... buttons, edit texts, text views, etc ... 
  3.     </LinearLayout> 

這是在四寸屏幕手機的效果:

responsive_android_phone

這是在七寸平板上的效果:

responsive_android_tablet

這是在七寸平板的橫屏效果:

responsive_android_tablet_landscape

還有一些在CSS里面非常方便的屬性(比如bootstrap),它們是一些幫助類,如.visible-phone,.hidden-phone,.visible-tablet等等,在Android上也可以這么做。

  1. <!-- Device Visibility --> 
  2.     <style name="PhoneOnly"> 
  3.         <item name="android:visibility">gone</item> 
  4.     </style> 
  5.      
  6.     <style name="TabletOnly"> 
  7.         <item name="android:visibility">visible</item> 
  8.     </style> 
  9.      
  10.     <style name="TabletPortraitOnly"> 
  11.         <item name="android:visibility">gone</item> 
  12.     </style> 
  13.      
  14.     <style name="TabletLandscapeOnly"> 
  15.         <item name="android:visibility">visible</item> 
  16.     </style> 

把這些樣式放在對應的配置文件夾中,然后就可以在需要的時候隱藏顯示相應的控件了。

  1. <LinearLayout android:id="@+id/column_one"> 
  2.       ... some content ... 
  3.     </LinearLayout> 
  4.      
  5.     <LinearLayout android:id="@+id/column_two" 
  6.       style="@style/TabletLandscapeOnly"> 
  7.       ... some extra content since we have space ... 
  8.     </LinearLayout> 

對于平板(水平的)來說,此樣式會顯示兩列,但是對于大多數設備來說,第二列是不會顯示的。

僅僅用了幾行xml代碼,我們就能夠創建一個迷你的布局框架了,我們還可以擴展這種技術,根據需要去實現一個通用的樣式文件,以后可以用到項目中。

很遺憾的是,很難把Android的資源打包進jar包中(非Gradle的話),所以在Android上很難像bootstrap那樣去構建一個框架(不要被這些項目誤導了 ,如:http://www.androidbootstrap.com/,它們沒有你想象的那么強大),還好Android正在向Gradle遷移,這樣可以使得制作Android前端的布局框架就更加方便了。

責任編輯:閆佳明 來源: techug
相關推薦

2010-08-26 16:27:46

CSS高度

2011-12-27 10:18:31

Web

2023-11-16 09:50:56

鴻蒙自適應布局

2012-06-04 09:48:04

jQuery

2017-06-06 10:30:12

前端Web寬度自適應

2014-04-15 13:09:08

Android配色colour

2013-09-04 11:02:52

手機web網頁設計

2017-08-16 14:08:46

Android O圖標視覺

2010-08-25 13:10:43

div高度CSS

2021-04-28 09:56:44

鴻蒙HarmonyOS應用

2010-08-30 10:26:20

DIV自適應高度

2023-07-31 08:24:34

MySQL索引計數

2010-08-30 09:52:03

DIV高度自適應

2012-05-09 10:58:25

JavaMEJava

2009-04-23 11:24:09

2011-05-12 11:28:20

按比例縮放

2022-10-24 17:57:06

CSS容器查詢

2022-04-12 07:48:57

云技術SDN網絡

2024-05-22 09:31:07

2023-10-23 08:48:04

CSS寬度標題
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品99在线 | 国产99精品 | 精品国产一区二区三区性色av | 日日摸日日爽 | 97精品视频在线观看 | 喷水毛片 | 6080亚洲精品一区二区 | 久久99精品国产 | 国产亚洲成av人片在线观看桃 | 日本黄色不卡视频 | 天天色天天射天天干 | 久久久国产一区二区三区 | 欧美日韩在线免费观看 | 欧美日日 | 一区二区久久 | 亚洲成人黄色 | 99亚洲精品 | 超碰97免费观看 | 亚欧精品一区 | 日操夜操 | 亚洲欧美日韩激情 | av一级毛片 | 日韩精品一区二区三区中文在线 | 欧美一区二区三区久久精品视 | 成人免费视频在线观看 | 国产精品成人一区二区三区 | 亚洲精品在线免费观看视频 | 国产日韩欧美一区二区在线播放 | 国产不卡在线播放 | 国产精品99久久久久久人 | 国产精品一区在线 | 天天天天天天操 | 日韩a在线| 午夜精品 | 国产成人99久久亚洲综合精品 | 黄a免费网络 | 国产日产久久高清欧美一区 | 亚洲欧美第一视频 | 天天天操天天天干 | 国产 日韩 欧美 在线 | 日韩av美女电影 |