最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
android適配,android適配平板和手機(jī)

Android屏幕適配之全面屏適配

從2017年開始,全面屏之戰(zhàn)逐漸如火如荼的展開了,那么我們Android程序員又多了一個(gè)小事情,就是解決全面屏適配的問題。

寧陽ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

全面屏和以前的屏幕相比,有以下幾點(diǎn)改變

聲明方式

ratio_float這個(gè)值怎么取呢?

其實(shí)就是高寬比。

傳統(tǒng)的手機(jī)高寬比是:16 : 9 即 16 / 9 ≈ 1.78

那么全面屏的手機(jī)寬高比:18 :9 即 18 / 9 = 2

但是這個(gè)時(shí)候,我們需要注意一下,現(xiàn)在很多手機(jī)都在追求更大的高寬比,即讓屏幕頂部和底部邊框越小越好,比如現(xiàn)在的「小米 mix 3 」

即他的高寬比是

19.5 / 9 ≈ 2.17

所以保險(xiǎn)起見,設(shè)置成為 2.2, 當(dāng)然這個(gè)值也不是固定的,如果有更新的手機(jī)上市,沒準(zhǔn)我們還得改。

即這樣設(shè)定就好了

Android 7.0 google 默認(rèn)支持了分屏模式,即 Manifest 文件中配置 Activity 的

那么這個(gè)時(shí)候就不需要再配置上面的 「最大屏幕高寬比」,就可以適配全面屏了。

但是如果通過自定義控件將“分屏模式”禁止的話,就會(huì)出現(xiàn)屏幕 上下黑邊的效果,非常丑。

修改AndroidManifest.xml文件,設(shè)置targetSdkVersion=26,就是應(yīng)用升級(jí)到O版本。

不需要設(shè)置其他任何屬性,默認(rèn)在任何縱橫比的屏幕都能全屏顯示。

(備注:有一種例外情況需要注意,應(yīng)用如果已經(jīng)適配到O版本,并且通過meta-data屬性android.max_aspect或者是android:MaxAspectRatio屬性設(shè)置了頁面支持的最大縱橫比,同時(shí)又通過android:resizeableActivity=“false”設(shè)置了頁面不支持分屏,這個(gè)時(shí)候系統(tǒng)會(huì)按照應(yīng)用自己設(shè)置的最大縱橫比決定該頁面是否能全屏顯示,如果應(yīng)用設(shè)置的最大縱橫比比手機(jī)屏幕比例小,那應(yīng)用還是無法全屏顯示。)

默認(rèn) UI 為我們切的啟動(dòng)頁面的圖是固定的,比如 1920*1080

這個(gè)能適配以前一般的分辨率的手機(jī),但是全面屏的出現(xiàn),我們會(huì)發(fā)現(xiàn),這個(gè)啟動(dòng)頁的圖片會(huì)被拉伸,一般是縱向拉伸,因?yàn)?“高” 變大了。

那么這種情況的解決方法其實(shí)有這么幾種思路:

本人還是覺得虛擬導(dǎo)航按鍵不是一個(gè)好東西,但是全面屏的出現(xiàn),真的把我以前喜歡的"實(shí)體按鍵" 給舍棄掉了。

我倒是覺得替代以前的"實(shí)體按鍵"的最好的方法,還是手勢操作。起碼我覺得小米8 的手勢操作很 6 有沒有。再看看蘋果,壓根就不同虛擬按鍵考慮好不。。。

不過,這是我自己的拙見,請各位虛擬按鍵愛好者,不要噴我,先行謝過。

原則,虛擬按鈕的顯示樣式,其實(shí)根據(jù)當(dāng)前具體的頁面情況進(jìn)行調(diào)整,調(diào)整策略其實(shí)和status bar 的類似。

可以通過

來定義顏色。

或者通過設(shè)置當(dāng)前activity 主題 或者設(shè)置application主題

在主題的樣式中設(shè)置:

即可。

頻繁的手機(jī)更新迭代,雖然讓我們程序員多了一些事情可做,但是卻也是我們喜聞樂見的事,手機(jī)在發(fā)展,說明我們的行業(yè)也在發(fā)展呀,況且,解決這些問題也不是難事。你說是不是呢?

如果沒看懂我的文章,請觀看小米官網(wǎng)提供的方案(其實(shí)是一致的):

全面屏及虛擬鍵適配說明

Android機(jī)型適配總結(jié)

分辨率對應(yīng)DPI

ldpi? QVGA (240×320)

mdpi? HVGA (320×480)

hdpi? WVGA (480×800),FWVGA (480×854)

xhdpi? 720P(1280*720)

xxhdpi 1080p(1920*1080 )

xxxhdpi 4K(3840×2160)

機(jī)型適配方面常規(guī)處理方法:

1、開發(fā)之前UI給出不同尺寸標(biāo)準(zhǔn)的多套素材,一般情況下給出:hdpi、xhdpi、xxxhdpi 三種尺寸類型的素材。

2、特殊類型圖片使用Android Studio內(nèi)置draw9path工具進(jìn)行制作,例如聊天界面中內(nèi)容背景圖片。

3、布局編寫時(shí)盡量使用 Linearlayout 與 ?RelativeLayout,LinearLayout內(nèi)部可以使用weight(權(quán)重)屬性將子控件的尺寸按比例進(jìn)行設(shè)置。RelativeLayout 內(nèi)部可以使用layout_align...(相對于xxx)屬性將子控件的尺寸相對于父控件或相對于其他子控件進(jìn)行設(shè)置。

4、設(shè)置尺寸的時(shí)候長度單位 ?布局使用 dp ?字符使用 ?sp。 其實(shí)字體大小的尺寸使用 ?dp 也可以,但是sp的情況下 用戶使用系統(tǒng)設(shè)置字體大小的時(shí)候可以改變控件中字體的大小,但是使用dp設(shè)置的字體就不會(huì)產(chǎn)生變化。

5、針對每一個(gè)屏幕的尺寸生成一套px與dp的轉(zhuǎn)換方案,詳情見博客: Android機(jī)型適配方案 。

6、google推出了一個(gè)百分比布局庫,可以使用百分比的方式進(jìn)行布局尺寸的設(shè)置,詳情見博客: Android百分比布局庫(percent-support-lib)解析與擴(kuò)展

7、利用自定義View的方式去解決,其實(shí)原理也是,在繪制View的時(shí)候,獲取屏幕的尺寸然后按照一定的比例去設(shè)置控件的尺寸

還有一些瑣碎知識(shí)點(diǎn)需要了解并記?。?/p>

1. px (pixels)像素 :

一個(gè)像素通常被視為圖像的最小的完整采樣,這個(gè)用的比較多,特別是web開發(fā),頁面基本都是使用像素作為單位的.

2.dp:

這個(gè)是最常用但也最難理解的尺寸單位。它與“像素密度”密切相關(guān),所以首先我們解釋一下什么是像素密度。假設(shè)有一部手機(jī),屏幕的物理尺寸為1.5英寸x2英寸,屏幕分辨率為240x320,則我們可以計(jì)算出在這部手機(jī)的屏幕上,每英寸包含的像素點(diǎn)的數(shù)量為240/1.5=160dpi(橫向)或320/2=160dpi(縱向),160dpi就是這部手機(jī)的像素密度,像素密度的單位dpi是Dots Per Inch的縮寫,即每英寸像素?cái)?shù)量。橫向和縱向的這個(gè)值都是相同的,原因是大部分手機(jī)屏幕使用正方形的像素點(diǎn)。

不同的手機(jī)/平板可能具有不同的像素密度,例如同為4寸手機(jī),有480x320分辨率的也有800x480分辨率的,前者的像素密度就比較低。Android系統(tǒng)定義了四種像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它們對應(yīng)的dp到px的系數(shù)分別為0.75、1、1.5和2,這個(gè)系數(shù)乘以dp長度就是像素?cái)?shù)。例如界面上有一個(gè)長度為“80dp”的圖片,那么它在240dpi的手機(jī)上實(shí)際顯示為80x1.5=120px,在320dpi的手機(jī)上實(shí)際顯示為80x2=160px。如果你拿這兩部手機(jī)放在一起對比,會(huì)發(fā)現(xiàn)這個(gè)圖片的物理尺寸“差不多”。

3.dip:

與dp完全相同,只是名字不同而已。在早期的Android版本里多使用dip,后來為了與sp統(tǒng)一就建議使用dp這個(gè)名字了。

4.sp:

與縮放無關(guān)的抽象像素(Scale-independent Pixel)。sp和dp很類似但唯一的區(qū)別是,Android系統(tǒng)允許用戶自定義文字尺寸大小(小、正常、大、超大等等),當(dāng)文字尺寸是“正?!睍r(shí)1sp=1dp=0.00625英寸,而當(dāng)文字尺寸是“大”或“超大”時(shí),1sp1dp=0.00625英寸。類似我們在windows里調(diào)整字體尺寸以后的效果——窗口大小不變,只有文字大小改變。

還有一些詳細(xì)的情況需要了解,都在這個(gè)博客里: 點(diǎn)擊進(jìn)入

android屏幕適配

android設(shè)備碎片化嚴(yán)重,因此在實(shí)際開發(fā)的時(shí)候需要做屏幕適配

適配主要是在以下幾個(gè)方面:

常見的布局適配主要是以下幾點(diǎn):

a.避免寫死布局尺寸,使用wrap_content或者martch_parent

b.使用權(quán)重,比如linearlayout中的weight;

c.使用relative的相對位置擺放,比如layout_centerInParent="true"

d.ConstraintLayout 原理類似于relatvie,相對擺放,但是性能相對于relatvie會(huì)好一點(diǎn)

e.android官方的庫Percent-support-lib,該庫主要是用的是百分比適配

a. .9圖適配,這個(gè)是使用了.9圖可以在特別區(qū)域拉伸不失真的特性來適配

b. 使用多套位圖,匹配不同的分辨率,比如在mipmap,mipmap-xhdpi,mipmap-xxhdpi,等文件夾下面放多套分辨率不同的內(nèi)容相同的圖片

是指同一個(gè)業(yè)務(wù)邏輯,在不同的設(shè)備上執(zhí)行不同的跳轉(zhuǎn)方式,比如在手機(jī)上打開一個(gè)新的activity,但是在平板上,可以在橫屏狀態(tài)下,右側(cè)增加一個(gè)fragment,展示打開的頁面。

a.分辨率限定符,使用drawable-dpi,drawable-hdpi等

b.尺寸限定符

c.最小寬度限定符

d.屏幕方向限定符

a.android9.0開始 有官方的api進(jìn)行適配

b.華為,小米,魅族,vivo,oppo各大room廠商有對應(yīng)的api進(jìn)行適配

除了以上這些,還有dimens適配,但是都各有缺點(diǎn),有的需要多套圖,有的需要多套資源文件,dimens適配的dimens文件過多,需要針對不同的屏幕分辨率來生成對應(yīng)的文件,比較繁瑣

以上,實(shí)際開發(fā)中,做的最多的適配為布局適配

開發(fā)中屏幕適配的核心是在于屏幕縮放,不論是哪種屏幕適配,都是以這個(gè)縮放為基礎(chǔ)

已知:設(shè)計(jì)圖手機(jī)像素(W,H),設(shè)計(jì)圖上控件的像素值(ViewW,ViewH),目標(biāo)設(shè)備分辨率(TargetW,TargetH)

求:目標(biāo)設(shè)備上view的寬高(TargetViewW,TargetViewH)

公式:寬:ViewW / W * TargetW=TargetViewW

高:ViewH / H * TargetH =TargetViewH

原理:根據(jù)當(dāng)前設(shè)備的分辨率,計(jì)算出設(shè)計(jì)圖上的控件在該設(shè)備上的縮放比,然后根據(jù)縮放比,來動(dòng)態(tài)的設(shè)置view, 最終換算出來的單位為px

該適配方式是通過自定義外部的ViewGroup,比如LinearLayout,RelativeLayout,在onMeasure方法中,遍歷子view,設(shè)置寬高以及padding,margin

以下是封裝了一個(gè)工具類,用來獲取屏幕寬高以及計(jì)算縮放比:

未完待續(xù)

Android-屏幕適配全攻略(絕對詳細(xì))(一)

關(guān)鍵字: 屏幕適配 px dp dpi sp large限定符 .9.png

前言: 這篇文章依然是我在 [慕課網(wǎng) ][h]學(xué)習(xí) 凱子哥 的同名視頻 Android-屏幕適配全攻略 ,所記錄下來的筆記---凱子哥講得真的超詳細(xì)。

[h]: "MOOC"

從上圖可以看出,主流的分辨率是前六種:1280×720、1920×1080、800×480、854×480、960×540、1184×720,不過我們有解決方案??赐赀@篇文章,想必你就可以解決常見的屏幕適配問題。

接下來正式進(jìn)入正題。

介紹幾個(gè)在Android屏幕適配上非常重要的名詞:

屏幕尺寸 是指屏幕對角線的長度。單位是英寸,1英寸=2.54厘米

屏幕分辨率 是指在橫縱向上的像素點(diǎn)數(shù),單位是px,1px=1像素點(diǎn),一般是縱向像素橫向像素,如1280×720

屏幕像素密度 是指每英寸上的像素點(diǎn)數(shù),單位是dpi,即“dot per inch”的縮寫,像素密度和屏幕尺寸和屏幕分辨率有關(guān)

dip: Density Independent Pixels(密度無關(guān)像素)的縮寫。以 160dpi 為基準(zhǔn),1dp=1px

dp: 同 dip

dpi: 屏幕像素密度的單位,“dot per inch”的縮寫

px: 像素,物理上的絕對單位

sp: Scale-Independent Pixels的縮寫,可以根據(jù)文字大小首選項(xiàng)自動(dòng)進(jìn)行縮放。Google推薦我們使用12sp以上的大小,通常可以使用12sp,14sp,18sp,22sp,最好不要使用奇數(shù)和小數(shù)。

用于區(qū)分不同的像素密度。

在Google官方開發(fā)文檔中,說明了 ** mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8 ** 的尺寸比例進(jìn)行縮放。例如,一個(gè)圖標(biāo)的大小為48×48dp,表示在mdpi上,實(shí)際大小為48×48px,在hdpi像素密度上,實(shí)際尺寸為mdpi上的1.5倍,即72×72px,以此類推。

我們可以通過以下幾種方式來支持各種屏幕尺寸:

wrap_content: 根據(jù)控件的內(nèi)容設(shè)置控件的尺寸

math_parent: 根據(jù)父控件的尺寸大小設(shè)置控件的尺寸

weight: 權(quán)重,在線性布局中可以使用weight屬性設(shè)置控件所占的比例

例如,我們要實(shí)現(xiàn)下圖所顯示的效果:當(dāng)屏幕尺寸改變時(shí),new reader控件兩邊的控件大小不變,new reader控件會(huì)占完剩余的空間。

具體布局文件如下:

小插曲: 關(guān)于 android:layout_weight 屬性

一般情況,我們都是設(shè)置要進(jìn)行比例分配的方向的寬度為0dp,然后再用權(quán)重進(jìn)行分配。如下:

效果為:

效果為:

button1寬度=L+(L-2L)×1/3=2/3L

button2寬度=L+(L-2L)×2/3=1/3L

當(dāng)然,還有其他的方式,都可以運(yùn)用此公式進(jìn)行計(jì)算。

在實(shí)際開發(fā)中,我們一般使用0dp的方式,而不使用其他方式。

簡單的布局一般都使用 線性布局 ,而略微復(fù)雜點(diǎn)的布局,我們使用 相對布局 ,大多數(shù)時(shí)候,我們都是使用這兩種布局的嵌套。

我們使用 相對布局 的原因是, 相對布局 能在各種尺寸的屏幕上保持控件間的相對位置。

res/layout/main.xml 單面板:

res/layout-large/main.xml 雙面板:

如果這個(gè)程序運(yùn)行在屏幕尺寸大于7inch的設(shè)備上,系統(tǒng)就會(huì)加載 res/layout-large/main.xml 而不是 res/layout/main.xml ,在小于7inch的設(shè)備上就會(huì)加載 res/layout/main.xml 。

需要注意的是,這種通過 large 限定符分辨屏幕尺寸的方法,適用于android3.2之前。在android3.2之后,為了更精確地分辨屏幕尺寸大小,Google推出了最小寬度限定符。

res/layout-sw600dp/main.xml ,雙面板布局: Small Width 最小寬度

這種方式是不區(qū)分屏幕方向的。這種最小寬度限定符適用于android3.2之后,所以如果要適配android全部的版本,就要使用 large 限定符和 sw600dp 文件同時(shí)存在于項(xiàng)目 res 目錄下。

這就要求我們維護(hù)兩個(gè)相同功能的文件。為了避免繁瑣操作,我們就要使用布局別名。

由于后兩個(gè)文具文件一樣,我們可以用以下兩個(gè)文件代替上面三個(gè)布局文件:

res/layout/main.xml 單面板布局

res/layout/main_twopanes.xml 雙面板布局

然后在 res 下建立

res/values/layout.xml 、

res/values-large/layout.xml 、

res/values-sw600dp/layout.xml 三個(gè)文件。

默認(rèn)布局

res/values/layout.xml :

Android3.2之前的平板布局

res/values-large/layout.xml :

Android3.2之后的平板布局

res/values-sw600dp/layout.xml :

這樣就有了 main 為別名的布局。

在activity中 setContentView(R.layout.main);

這樣,程序在運(yùn)行時(shí),就會(huì)檢測手機(jī)的屏幕大小,如果是平板設(shè)備就會(huì)加載 res/layout/main_twopanes.xml ,如果是手機(jī)設(shè)備,就會(huì)加載 res/layout/main.xml 。我們就解決了只使用一個(gè)布局文件來適配android3.2前后的所有平板設(shè)備。

如果我們要求給橫屏、豎屏顯示的布局不一樣。就可以使用 屏幕方向限定符 來實(shí)現(xiàn)。

例如,要在平板上實(shí)現(xiàn)橫豎屏顯示不用的布局,可以用以下方式實(shí)現(xiàn)。

res/values-sw600dp-land/layouts.xml :橫屏

res/values-sw600dp-port/layouts.xml :豎屏

自動(dòng)拉伸位圖,即android下特有的 .9.png 圖片格式。

當(dāng)我們需要使圖片在拉伸后還能保持一定的顯示效果,比如,不能使圖片中的重要像素拉伸,不能使內(nèi)容區(qū)域受到拉伸的影響,我們就可以使用 .9.png 圖來實(shí)現(xiàn)。

要使用 .9.png ,必須先得創(chuàng)建 .9.png 圖片,androidSDK給我們提供了的工具就包含 .9.png 文件的創(chuàng)建和修改工具。雙擊 SDK安裝目錄 oolsdraw9patch.bat ,就會(huì)打開下圖所示的窗口。

下面是一個(gè)例子:

Button屬性設(shè)置:

如果我們選擇的內(nèi)容區(qū)域偏差太大,可能就不會(huì)顯示出text值 BUTTON 。

好了,這篇文章寫的有點(diǎn)多了,剩下的內(nèi)容放在 下篇文章 記錄吧。

內(nèi)容提要:

解決方案-支持各種屏幕密度

解決方案-實(shí)施自適應(yīng)用戶界面流程

未完待續(xù)

Android 屏幕適配

Android的屏幕大同小異,分辨率也是各種各樣,手機(jī)App上的差異性還沒那么明顯,基本用Dp weight就可以比較好的適配各種手機(jī)。但是在Pad上的表現(xiàn)就不盡如意,而且發(fā)現(xiàn)像華為Pad Pro這種高端設(shè)備,是可以通過系統(tǒng)設(shè)置去設(shè)置修改系統(tǒng)的density值,導(dǎo)致整個(gè)如果只用一套DpUI布局去實(shí)現(xiàn),會(huì)出現(xiàn)很奇怪的UI效果,基本不能適配。這時(shí)候就需要對UI進(jìn)行適配。通過資料查詢,需要了解如下的幾個(gè)概念

1.px,pixel 就是像素,最基本的真實(shí)顯示單位

2.dp,dip, Density-independent pixel,設(shè)備的獨(dú)立像素,1dp表示在屏幕像素點(diǎn)密度為160ppi時(shí)1px長度

3.ppi, pixel per inch ,每英寸對角像素點(diǎn),這個(gè)是物理上的

4.dpi, dot per inch ,每英寸多少個(gè)點(diǎn),這個(gè)是軟件上的,這里的點(diǎn)跟像素點(diǎn)不同

5.sp: scale-independent pixel, 字體大小單位

簡單換算就是

ppi =根號(hào)( 橫屏像素點(diǎn)平方+縱屏像素點(diǎn)平方)?對角線的長度,這個(gè)長度是一英寸

1dp = (dpi/160) px

然后有些不同尺寸手機(jī)的ppi可能是420, 430, 440, 450, 460.,由于物理ppi上是固定的,改變不了,為了適配,通過人為設(shè)置一個(gè)dpi,來規(guī)范這些差不多ppi值,使得這些相差差不多的屏幕都是通用一個(gè)dpi,也就是使用同一套設(shè)計(jì)方案。

一開始通過dp值來實(shí)現(xiàn)適配,是可以解決大部分適配問題,但是在遇到pad這種設(shè)備,由于是橫屏,而且系統(tǒng)設(shè)置還可以修改density值,使得用一套固定屏幕(比如1280 * 800)的方向變得不是那么合適。

這時(shí)候想到可以通過Android中 dimens中定義dimen值,Android中可以通過sw去搜索對應(yīng)的dimen值表來獲取對應(yīng)的配置,smallestWidth適配,sw限定符適配,只要我們把對應(yīng)的表通過換算,得到一個(gè)新值,就可以得到在不同的density值中得到對應(yīng)的dp值表,解決華為上一個(gè)設(shè)備對應(yīng)不同density值的問題。

那么問題來了,如果去得到sw不同的dimens呢,網(wǎng)上的方法很多,有些自己寫腳本,有些自己寫程序生成,為了就是列舉所有的值,一般1-1000dp,然后基于一個(gè)基準(zhǔn),比如360dp寬度,去換算出不同屏幕寬度的dimens值,這里我推薦Android Studio的插件ScreenMatch,先安裝插件

然后在values中創(chuàng)建dimens文件夾,并創(chuàng)建dimens.xml,其中寫上自己定義的dp值,如下

然后在該文件右鍵,選擇screenmatch

插件就會(huì)生成一堆其他屏幕的dimens文件,并且自動(dòng)生成1-800的其他dp值,基本滿足開發(fā)中的定義,如果沒有的話,就自行在這里定義,然后重新生成。

關(guān)于ScreenMatch的生成還有一個(gè)基準(zhǔn),就是基于那個(gè)dpi來生成,通過插件生成,在根目錄會(huì)多出了兩個(gè)文件,一個(gè)example, 一個(gè)config文件

這里我們看看properties文件,內(nèi)容如下

其中base_dp=850就是基于850,然后可以通過match_dp去調(diào)整要適配的dpi值。

通過這方方式,會(huì)在dimens文件自動(dòng)生成dimen文件

在網(wǎng)上看到,還可以通過修改density去修改,這種方式有空我在試試


當(dāng)前題目:android適配,android適配平板和手機(jī)
文章路徑:http://fisionsoft.com.cn/article/dsscode.html