Android螢幕適配3-動態獲取螢幕寬高及動態設定控制元件寬高
1、問題
在螢幕適配中,要求應用在不同的螢幕上顯示一樣的效果時,我們的佈局可以採用百分比來定位,也就是 layout_weight
,但對於一些層層巢狀或更加複雜的情況下,使用百分比的效果並不是很好,頁無法解決一些問題,比如文字大小。
2、解決思路
我們可以根據螢幕大小重新對佈局以及佈局內的物件大小進行調整。原理類似於我們用播放器看視訊的時候,無論怎麼調整視窗大小,播放器都可以自動調整視訊大小適合視窗大小。因為視訊有一個原始解析度,播放器會根據視窗實際大小對視訊進行縮放。
我們寫佈局的時候一般是根據某個基準解析度來(比如 UI 給的原型圖),自動縮放佈局的作用就是將這個基準佈局乘以一個縮放比例,達到適配所有解析度的目的。
計算縮放比例公式:實際大小/設計大小=縮放比例
只需要給定一個設計大小,就可以計算縮放比例,然後將佈局內部所有元素的尺寸都乘以這個縮放比例,就可以適配實際螢幕了。
3、具體步驟
3.1、獲取手機螢幕寬高
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
// 螢幕寬度(畫素)
int width = metric.widthPixels;
// 螢幕高度(畫素)
int height = metric.heightPixels;
// 螢幕密度(0.75 / 1.0 / 1.5)
float density = metric.density;
// 螢幕密度DPI(120 / 160 / 240)
int densityDpi = metric.densityDpi;
3.2、根據螢幕寬度為控制元件設定動態設定寬高
使用 getLayoutParams()
和 setLayoutParams()
方法
LinearLayout ll = (LinearLayout) findViewById(resId);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) ll.getLayoutParams ();
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
float scale = dm.density; // 畫素密度
lp.height = (int) (height * scale + 0.5f);
lp.width = (int) (width * scale + 0.5f);
ll.setLayoutParams(lp);
但是,需要注意的是,在一個低密度的小屏手機上,僅靠上面的程式碼是不能獲取正確的尺寸的。需要在工程的AndroidManifest.xml 檔案中,加入 supports-screens
節點,具體的內容如下:
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true" />
文章只是作為個人記錄學習使用,如有不妥之處請指正,謝謝。
參考文章
相關推薦
Android螢幕適配3-動態獲取螢幕寬高及動態設定控制元件寬高
1、問題 在螢幕適配中,要求應用在不同的螢幕上顯示一樣的效果時,我們的佈局可以採用百分比來定位,也就是 layout_weight,但對於一些層層巢狀或更加複雜的情況下,使用百分比的效果並不是很好,頁無法解決一些問題,比如文字大小。 2、解決思路 我們
android螢幕適配的全攻略3-動態獲取手機螢幕寬高及動態設定控制元件寬高
1.獲取手機螢幕寬高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.width
Android螢幕適配(個人的一點點總結及經驗)
前言:做Android已經一段時間了,可是當別人問到我Android中的螢幕適配的時候,感覺自己有一種似懂非懂的感覺,這就有點尷尬了~~哈哈!還有就是ui跑過來問你要切什麼樣子的圖的時候,總要解釋半天,讓別人感覺你好不專業啊,所以為了更好的理解android的螢
獲取螢幕高寬,在程式碼中設定控制元件大小的方法
//獲取螢幕高寬的方法: import android.view.Display; import android.view.WindowManager; WindowManager windowManager = getWindowManager();
自定義控制元件-----自定義數字鍵盤,適配了正則表示式的帶輸出字串的控制元件
一、主要的類:CustomAmountInputKeyboard class CustomAmountInputKeyboard constructor(context: Context, attrs: AttributeSet? = null) : LinearLayout(context,
動態設定控制元件寬高
LinearLayout.LayoutParams linearParams =(LinearLayout.LayoutParams) textView.getLayoutParams(); //取控制元件textView當前的佈局引數 linearParams.hei
Android就業面試技巧系列-技術篇3(螢幕適配)
Android就業面試技巧系列-技術篇(螢幕適配) 答題技巧 螢幕適配是目前安卓開發大部分程式設計師都會遇到的問題,回答時候,面試官會直接問你對螢幕適配如何看待,此問題需要循序漸進,點滴從經驗作答
Android 自定義相機獲取照片(螢幕適配)
1.在應用程式中自定義相機拍照的大體步驟如下: 1.檢測和訪問相機:檢測裝置是否支援拍照,然後發出訪問裝置相機請求。 2.建立一個預覽類:建立一個繼承自類SurfaceView和實現介面SurfaceHolder介面的相機預覽類,這個類用來預覽從相機得到
Android螢幕適配之動態設定單個控制元件的寬高比例
前言:這個問題出現在我做平板專案的時候,需要橫排顯示一張圖片以及其他控制元件,如下圖:要求圖、文各佔一半大小,圖片的寬高比例目測是1:2。這種情況不適合把高度寫死,因為iPad的螢幕大小差異有些大,高度寫死圖片hin容易變形,因此我們就需要動態去設定這個圖片的寬高。正題:首先
Android 開發:(九)Android螢幕適配經驗談
1.名詞解釋 螢幕尺寸: 也就是我們平時所說的某某手機是幾寸屏, 比如HTC one V這款手機是3.7寸的, 這裡的寸說的是英寸(inch),國際上習慣使用的單位,1inch = 2.54cm,3.7寸指的是螢幕的對角線的長度。 螢幕解析度:
Android 螢幕適配之 dimens 適配
相信做手機端的 App 的小夥伴,只要是產品稍微大一點,就會面臨螢幕適配的問題,對於適配這個問題,網上眾說紛紜,以前雖然有零零散散的看過,但是沒有實踐過,也是在最近遇到這個需求的情況下才研究了一下,現在做個記錄。 1 參考連結 http://blog.csdn.net/qq_341
PhaserJS 3 螢幕適配時的小坑 -- JavaScript Html5 遊戲開發
PhaserJS 巨坑:在config內不要把 width 設為 window.innnerWidth在config內不要把 width 設為 window.innnerWidth在config內不要把 width 設為 window.i
Android中dp px sp概念梳理以及如何做到螢幕適配
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android螢幕適配詳解
本篇文章將解釋什麼是螢幕適配,為什麼要螢幕適配,螢幕適配的本質,和如何解決螢幕適配上的問題。(小白也能看懂哦) 什麼是螢幕適配? 螢幕適配就是讓某一個元素或者是APP中的UI介面在不同解析度、不同尺寸的螢幕上展示出同樣的顯示效果,這就是螢幕適配。 為什麼要
螢幕適配——系統升級android 8.0 部分UI出現錯亂——“可用螢幕解析度”
這兩天將自己的mate9從7.0升級到8.0發現一個問題,app的某個ui介面部分錯亂了;因為螢幕適配使用了dimens適配,所以猜測有可能螢幕規格沒有覆蓋到;但是發現mate9的螢幕解析度為1920*1080,查看了dimens檔案是有覆蓋的,為什麼7.0時候沒有問題,升級到8.0出現
dimens-Android非常簡單非常好用的螢幕適配
為什麼要進行Android螢幕適配? 關於為什麼要進行Android螢幕適配,什麼是dp、dpi這些概念我就不去一一講解了,網上很多文章。這裡我推薦幾篇講的比較好的: Android螢幕適配全攻略(最權威的官方適配指導) Android 螢幕適配:最全面的解決方案 Andr
Android 資原始檔螢幕適配
一、圖片適配: mipmap-xhdpi:720P,表示1280x720解析度,用於存放2x切圖 mipmap-xxhdpi:1080P,表示1920x1080解析度,用於存放3x切圖 mipmap-xxxhdpi:2K,表示2560x1440解析度,用於存放4x切圖
Android螢幕適配使用dimens
關於Android螢幕適配中使用多個dimens的遇到的問題 我相信大家在android開發中,肯定會遇到一個問題,那就是螢幕適配問題,通常我們做app只需要適配各種型別的手機就OK了,最近公司要求把pad上的app適配到手機上,這個有點麻煩,所以著重研究了一下。 基本概念:dp、sp、px
Android-螢幕適配全攻略(絕對詳細)(二)
Android-螢幕適配全攻略(絕對詳細)(二) 關鍵字:非密度制約畫素(dp、sp) 螢幕適配最佳實踐 前言:這篇文章接著 上一篇 繼續講,上篇講到了螢幕適配的核心概念與單位和一種解決方案:解決方案-支援各種螢幕尺寸。本篇繼續講剩餘的其他兩種解
Android-螢幕適配全攻略(絕對詳細)
(一) 關鍵字:螢幕適配 px dp dpi sp large限定符 .9.png 2012年到2014年支援Android裝置的種類從3997增長到18796。同時各大廠商定製的螢幕尺寸也非常多。這將非常