android寬度百分比
⑴ Android布局文件設置TableLayout某一列寬度為屏幕寬度的30%
我給你一個思路吧:
<TableLayout
android:width=0dp;
android:weight=7;/>
<LinearLayout
android:width=0dp;
android:weight=3;/>
這樣就會有一個tablelayout和一個LinearLayout,tablelayout寬度占總寬度的30%,線性布局佔70%
權重做的,具體代碼這樣:
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TableRow
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_orange_light" >
</TableRow>
<TableRow
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/background_light" >
</TableRow>
<TableRow
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:background="@android:color/darker_gray" >
</TableRow>
<TableRow
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_blue_bright" >
</TableRow>
<TableRow
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_green_dark" >
</TableRow>
<TableRow
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark" >
</TableRow>
<TableRow
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_purple" >
</TableRow>
<TableRow
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_red_dark" >
</TableRow>
</TableLayout>
實現的效果就是:
⑵ android 如何讓自定義dialog的寬度充滿整個屏幕
方案:
通過設置Dialog的樣式實現
步驟:
java">1、添加style
<stylename="Dialog_FS">
<itemname="android:windowFullscreen">true</item>
<itemname="android:windowNoTitle">true</item>
</style>
2、代碼裡面設置dialog的樣式
Dialogdialog=newDialog(this,R.style.Dialog_FS);//設置全屏樣式
dialog.setContentView(R.layout.main);//設置dialog的布局
dialog.show();//顯示dialog界面
⑶ 在Android寫一個表格如何自適應
網友們上網通常會採用800×600、1024×768兩種解析度,由於網頁不是用來給自己看的,所以我們必須讓自己的網頁能夠兼顧這兩種情況,讓不同解析度設置的網友都能夠看到一個排版美觀正確的網頁。
一、 自然拉伸
如果你的網站結構沒有用到大量的圖形來銜接,主要由表格來定結構,那麼你就可以使用該方法。非常適用於主要由表格、文字來表達信息的簡單的網頁頁面。製作表格時,只要你把表格的寬度屬性定義為100%
,表格就會根據解析度的不同自行調整寬度。
二、 固定居中
在800×600解析度下製作的網頁在1024×768解析度的機器上打開,整個網頁就會跑到左邊;1024×768解析度的網頁在800×600解析度的機器上有時也會變得"不堪入目"。兩種解析度各做一個吧?做起來費勁。所以目前普遍採用的方法是固定居中法!
現在大多數網民都還在用800*600的解析度,所以我們一般可以以此解析度為主。只要在網頁原代碼的<body>後緊加一句<center>,</body>前加一句</center>就OK了。不過有幾個問題這是要注意一下,第一個要注意的是上面說到的百分比的問題,表格、單元格的寬度單位最好要使用像素單位,而不要用百分比。例如width=770。如果你的表格寬度設的是百分比,那麼使用大於800×600的像素時,網頁就會拉寬,這樣網頁可能會變形。在<body>中加入leftmargin=0,即<body
leftmargin=0>這種情況下,800×600支持的表格寬度為780像素時不會出現滾動條。還有一點要注意的是不能用DW中的層來定位。
三、 兵分兩路
如果你的網頁不經常更新,而且對頁面效果極其在意,那好,你就設計兩個頁面,分別對應800×600和1024×768兩種解析度。然後根據不同的解析度進行跳轉就行了。
例如:
<script LANGUAGE="JavaScript">
function redirectPage() {
var
url_else =
var
url_800x600 =
var
url_1024x768 = ";
var url_1366x768
=
if ((screen.width ==
800) && (screen.height == 600))
window.location.href= url_800x600;
else if ((screen.width == 1024) &&
⑷ Android設備的界面適配設計
Android設備App設計中有一個問題可能會被設計師忽略,在各種解析度各種尺寸「雜屏」的界面適配。可能產出的界面稿在常用的720*1280的解析度中是完美,但一到各個不同解析度不同尺寸的設備後
這里就談談適配,了解適配讓設計從PS、sketch到移動設備上都能完美呈現。
如此繁雜的安卓設備,採用哪個標准設計呢?
1.選擇一種尺寸一種解析度作為基準。
2.選擇2-3款主流的Android設備,制定一套適配規則。(國內主流設備、解析度可參考友盟指數)
3.部分極端效果特別注釋說明。
目前移動端設計師多採用iPhone 5與6的解析度設計,這兩個解析度也最接近Android xhdpi的720*1280,設計之後再做等比適配(不做設計元素等比適配會導致Android設備上視覺呈現較小)。
我則傾向於選取720*1280的解析度設計。優點是處於常用解析度的中間值,對小解析度大解析度調整也較容易。另外iOS@1x的320與720剛好是2.25的倍率關系,使用sketch等比輸出快捷多了。(如果時間成本允許的話可以將Android的標注單位用dp,具體的設備尺寸、解析度知識這里不詳描述,可見文章最後面的「Android基礎知識」)
案例說明:
雅虎新聞為各個dpi做了優化,圖片等比縮放,文字區域等比縮放,並且考慮到在低dpi下會被推移至第二屏,就減小圖片了高度,保持文字區域最小高度。
老司機都不會忘記的,僅提醒下新手,每個圖標記得輸出多個比例。並且記得查看各個比例下圖標的顯示效果。
案例說明:
還是拿一個雅虎新聞的例子,大家感受下。
Android設備的系統各個廠商都做了定製化,默認的字體庫可能不同,且字體占空間大小可能不同。不同設備顯示文字會出現不同效果。設計時考慮3點:
多採用流式布局,不對單行做字數限制(如「單行顯示多少個字」「文本寬度多少」),而是定義文本容器的高寬,超出則用「…」「漸隱」或者「遮擋」等方式省略。
若較長的文本需要完整顯示,設計時預留換行空間。
若文本需要在單行完整顯示(如提示類文字),盡量控制字數(建議16字內),避免小屏不夠放置。
案例說明:
圖文混排同一行顯示時,圖片等比固定在右側顯示,文字部分區域寬度會因設備不同出現較大的差異,預留文字多行高度。如下圖不同設備下文字的展示空間有差異,需要考慮小解析度下預留多行文字空間。如圖2第二條新聞標題文字溢出的醜陋展示,建議設定一個文字區域最大高度,超出部分則隱藏。
單行出現多個文字元素時,注意元素在低dpi下的顯示層級,提前說明好該情況的覆蓋或者隱藏規則。如下圖第一個用戶名稱,在低dpi下,避免各元素交錯,而省略了超出的用戶名稱。
圖片常用的方式有固定寬度dp等比縮放高度(用於非通欄圖片);固定高度dp等比縮放寬度(用於橫向滾動圖片,如全屏相冊中的縱向圖片);根據屏幕寬度等比縮放(橫向通欄圖片)。設計時考慮3點:
注意圖片佔用的寬高比,避免大屏設備上占據大量空間,導致內容比例不協調同時降低了屏幕利用率。
考慮到設備屏幕密度不同,輸出圖片時別忘了輸出多個解析度。
考慮圖片寬高比過大的縮略圖處理(最常見的處理方式:高度遠大於寬度時,是給出最大區域,讓圖片等寬居中填充該區域,只顯示該區域;寬度遠大於高度時,與展示區域等高居中取部分顯示。當然也可能出現特殊顯示要求,需要根據具體情況具體處理。)
案例說明:
網易游戲相冊的全屏瀏覽中,大於設備寬高比的寬圖按照最大寬度放置,小於設備寬高比的高度按照最大高度放置。
一行多張圖片要考慮圖片的在不同設備下等比縮放帶來顯示效果的差異。排列時會有兩種情況:
1.要求在一行內顯示完,根據圖片的顯示效果決定放置的數量,超過則不顯示(如下圖1第二條新聞)
2.流式布局,當圖片寬度小於設定值時自動換行(如下圖2相冊展示,低dpi低解析度設備一行顯示3張,高的顯示4-5張,且按比例撐滿屏幕寬度)。
寬高比超出設計區域時的處理,如網路貼吧中列表的小圖模式,給出了正方形區域,當圖片非正方形時,根據寬高中的短邊等比撐滿正方形區域後,截取了圖片居中的部分顯示。
在固定區域內多元素混合放置時,文字一般採取流式布局,圖片多採用等比縮放,圖標元素多採用 彈性布局,即元素內容本身規格不變,考慮水平、垂直方向的間距做相應擴展。設備屏幕越大,在擴展方向上可以顯示更多內容,發揮了大屏幕的優勢。
彈性布局需要給出哪一個元素dp不變,哪一個元素縮放的策略。
彈性布局下部分距離標注採用百分比標注。
當有兩個等比縮放元素時考慮避免重疊的情況。
案例說明:
網易游戲的新聞列表樣式,每一條新聞區域,要求圖片dp不變,而文字區域進行彈性縮放。
下圖網易游戲專區中間的幽靈按鈕圖標為確保點按效果,按照固定dp顯示,中間間隔的寬度按照設備寬度的百分比來確定
網易游戲求交往的界面,中間卡片區域大小根據設備等比縮放,如中間用戶頭像與「同喜歡2款游戲」的文字,在設計時需要考慮產品的目標設備中最小設備下的布局顯示效果,避免出現重疊的情況。而縱向的元素數量也需要如此考慮。
Android界面適配的案例說明就寫到這里啦。
設計時多考慮各個元素(圖標、文本、圖片、區域)在不同設備的情況。當然,做設計時也不是死板的按照建議來實現,特別是固定區域下的元素放置,根據實際情況來處理即可。
Android系統的UI也在不斷進化完善,隨著設計趨勢的改變,Android除了常見的卡片、列表、浮層外,可能會有更多的展示方式,而Android設備也是逐漸淘汰ldpi與mdpi,設備的解析度逐漸變大。也就要求我們需要不斷的去了解嘗試新的設計趨勢,產出最好的方案。
這不是彩蛋哈,僅僅補充安卓設備的基礎知識,老司機完全可以忽略,供新手參考閱讀。
為展示設備的多樣化,貼出Android屏幕尺寸示意圖(藍色矩形的大小代表不同尺寸,顏色深淺則代表所佔百分比的大小。)
屏幕大小以屏幕尺寸來衡量,指屏幕的對角線的長度,單位是英寸,1英寸=2.54厘米
目前的主流尺寸:5.0" ~ 5.5" (有繼續往更大尺寸發展的趨勢,但趨於穩定)
常見的設備尺寸: 4" ~ 10" 。
手機適配參考尺寸: 4" ~ 6"
手機 + 平板適配參考尺寸: 4" ~ 10」
屏幕解析度是指在橫縱向上的像素點數,單位是px,1px=1個像素點。一般以縱向像素*橫向像素,如1960*1080。
屏幕像素密度是指每英寸上的像素點數,單位是dpi,即「dot per inch」的縮寫。目前每個屏幕像素可以認為就是一個「點」。
屏幕 dpi 的計算方式:
Android 設備中 dpi 分幾個段:
•ldpi:~ 120 dpi (幾乎絕跡)
•mdpi:~ 160 dpi (罕見)
•hdpi:~ 240 dpi (逐漸減少中)
•xhdpi:~ 320 dpi
•xxhdpi:~ 480 dpi
•xxxhdpi:~ 640dpi (目前較少)
dp(與 dip 同義) 是在 160dpi 下每個像素對應的物理尺寸,可近似理解為:
•160 dp = 1 inch
•1 dp = 1 / 160 inch = 0.15875 mm
•1 dp = 1 px (160 dpi 屏幕下)
•1 dp = 2 px (320 dpi 屏幕下)
Android的屏幕適配指標都基於物理尺寸(即屏幕的物理大小),而非像素(解析度)。為什麼呢?這里根據dp與px適配出兩種效果來說明。
按 dp 適配不同屏幕的效果如下,內容的物理尺寸變化不大:
若直接按照像素適配,出現以下情況,高像素密度的設備內容顯得特別小,影響布局與可用性:
屏幕長邊和短邊的比例。
目前手持設備的 長邊 dpi 和 短邊 dpi 普遍非常接近,可認為屏幕比例和屏幕水平、垂直像素比例一致
屏幕比例目前趨於 16:9 ~ 16:10 (8:5)
因不少設備使用了虛擬按鍵,所以通常非全屏的 app 可用面積略低,屏幕比例更接近 16:10
⑸ Android自定義軟鍵盤
Android自定義鍵盤的使用
1、新建一個xml文件夾放在res目錄下面,然後新建xml文件:money_keyboard.xml
2、然後在XML文件中添加按鈕布局,這個布局就是鍵盤的樣子了
3 屬性介紹:
Keyboard:
存儲鍵盤以及按鍵相關信息。
android:horizontalGap
按鍵之間默認的水平間距。
android:verticalGap
按鍵之間默認的垂直間距。
android:keyHeight
按鍵的默認高度,以像素或顯示高度的百分比表示。
android:keyWidth:
按鍵的默認寬度,以像素或顯示寬度的百分比表示。
Row:
為包含按鍵的容器。
Key:
用於描述鍵盤中單個鍵的位置和特性。
android:codes
該鍵輸出的unicode值。
android:codes 官網介紹是說這個是該鍵的unicode 值或者逗號分隔值,當然我們也可以設置成我們想要的值,在源碼中提供了幾個特定的值
對照表:
android:isRepeatable
這個屬性如果設置為true,那麼當長按該鍵時就會重復接受到該鍵上的動作,在 刪除鍵鍵 和 空格鍵 上通常設為true。
android:keyLabel
顯示在按鍵上的文字。
android:keyIcon 與 keyLabel
是二選一關系,它會代替文字以圖標的形式顯示在鍵上。
android:keyWidth="33.33333%p"
每一個按鈕的寬度,可以設置百分比
android:keyHeight="10%p"
每一個按鈕高度,可以設置百分比
KeyboardView是一個渲染虛擬鍵盤的View。 它處理鍵的渲染和檢測按鍵和觸摸動作。
顯然我們需要KeyboardView來對Keyboard里的數據進行渲染並呈現給我們以及相關的點擊事件做處理。 1)//設置keyboard與KeyboardView相關聯的方法。
public void setKeyboard(Keyboard keyboard)
2)//設置虛擬鍵盤事件的監聽,此方法必須設置,不然會報錯。
public void setOnKeyboardActionListener(OnKeyboardActionListener listener) 步驟上呢,做完第一步的關聯,並設置第二步的事件,調用KeyboardView.setVisible(true);鍵盤就可以顯示出來了, 是不是很簡單。不過到這里還沒有結束哦,接下來我們為了使用上的便利要進行相應的封裝。 封裝 這里我們通過繼承EditText來對Keyboard與KeyboardView進行封裝。
attr.xml文件,這里我們需要通過一個xml類型的自定義屬性引入我們的鍵盤描述文件。
1、新建一個類,我取名叫KeyUtils然後在裡面新建三個屬性。KeyBoard用處可大了,他才是本體,可以通過設置他來切換鍵盤。
2、構造函數,初始下三個參數。
3、先說下預覽圖吧,就是效果圖上的預覽圖,需要預覽圖的話的將setPreviewEnabled設置為true,不過還得在布局文件中的android.inputmethodservice.KeyboardView標簽對立面設置預覽布局。否則,不會有字。至於設置的布局,一個TextView就好了~
onPress: 按下觸發。
onRelease:松開觸發。
onKey : 松開觸發,在OnRelease之前觸發。
swipeLeft : 左滑動,其他同理。哈哈~就這么懶。
onText :需要在 鍵盤xml,也就是我此時的number.xml裡面中key標簽對里添加一個