1. 程式人生 > >Android字型大小怎麼自適應不同解析度?

Android字型大小怎麼自適應不同解析度?

今天有人問我,android系統不同解析度,不同大小的手機,字型大小怎麼去適應呢?其實字型的適應和圖片的適應是一個道理的。

一、

原理如下:

假設需要適應320x240,480x320解析度。在res目錄下新建資料夾values-320x240, values-480x320。然後在資料夾 values ,values-320x240 和  values-480x320 下新建xml檔案dimens.xml,該xml檔案內容如下:

vaules-320x240下的dimens.xml內容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<dimen name="btnTextSize">18sp</dimen>
</resources>
values-480x320 下的dimens.xml內容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
	<dimen name="btnTextSize">18sp</dimen>
</resources>
針對不同解析度的手機,android系統會自動適配載入相應檔案中的字型的大小值,btnTextSize的值是不同的。在佈局檔案中引用的方式如下:
<TextView android:layout_width="fill_parent"
	android:layout_height="wrap_content" android:gravity="center"
	android:id="@+id/lblSet" style="@style/btntext" android:textSize="@dimen/btnTextSize">
</TextView>
在java檔案中這樣呼叫:

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

通過這種方法,可以方便設定在不同解析度下,字型的大小了。當然,不僅僅字型大小,寬和高等其他的一些屬性,也可以通過類似的方式來設定!

二、

1. 在檢視的 onsizechanged裡獲取檢視寬度,一般情況下預設寬度是320,所以計算一個縮放比率 
   rate = (float) w/320   w是實際寬度 
2.然後在設定字型尺寸時 paint.setTextSize((int)(8*rate));   8是在解析度寬為320 下需要設定的字型大小 


  實際字型大小 = 預設字型大小 x  rate 

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    android:textSize="@dimen/Text_size"
    />
佈局多解析度適配 :


技術諮詢:請關注微信訂閱號,微信名:非著名程式設計師,微訊號:smart_android

相關推薦

Android字型大小怎麼適應不同解析度

今天有人問我,android系統不同解析度,不同大小的手機,字型大小怎麼去適應呢?其實字型的適應和圖片的適應是一個道理的。 一、 原理如下: 假設需要適應320x240,480x320解析度。在res

Qt的pointSize和pixelSize,qt字型大小適應

實驗證明: 使用QFont的setPointSize,此時字型的大小會跟隨DPI改變而改變。 使用QFont的setPixelSize,此時字型的大小不會隨DPI的改變而發生變化。 通過設定PointSize的字型來說,字型大小是隨著螢幕大小以及解析度自適應的,因此無須處理字型的縮放

字型大小適應純css解決方案

viewpoint css3提供了一些與當前viewpoint相關的元素,vw,vh,vim等。 “viewpoint” = window size vw = 1% of viewport width 1vh = 1% of viewport height 1vmin =

響應式網頁設計:rem、em設定網頁字型大小適應

「rem」是指根元素(root element,html)的字型大小,好開心的是,從遙遠的 IE6 到版本帝 Chrome 他們都約好了,根元素預設的 font-size 都是 16px。這樣一個新的單位相容性如何呢? IE9+,Firefox、Chrome、Safari、Opera 的主流版本都支援了,

【css】移動端適應佈局與字型大小適應

一、vw, vh vw它是根據可視區的寬度來計算的。 vh它是根據可視區的高度來計算的。 <body> <style> body { margin:0; } .te

rem設定網頁字型大小適應

「rem」是指根元素(root element,html)的字型大小,好開心的是,從遙遠的 IE6 到版本帝 Chrome 他們都約好了,根元素預設的 font-size 都是 16px。這樣一個新的單位相容性如何呢?IE9+,Firefox、Chrome、Sa

UIbutton UIlabel字型大小適應

背景 去年的六月份開始了一個新的專案,此專案支援的裝置從4S開始一直到6+,也就是說螢幕的尺寸最小的320x480 最大的1242x2208 (不過目前好像大部分的App都會這樣去支援),而客戶那邊

vb介面適應不同解析度終極解決方案

現在寬屏,大螢幕顯示器越來越普遍,原來在800*600下設計的軟體介面,在大螢幕顯示器(1680*1050)上介面總是縮到一角,非常難看,要將老程式的介面按照不同的解析度在重新進行設計程式設計,整個過程比較複雜而且實用性不大,如果原來程式比較大且介面比較多的話那麼工作量也將是巨大的,而且還可能出現其他錯誤,有

window.open網頁適應不同解析度方法

當你使用window.open函式時,想讓開啟的新視窗,可以自適應不同電腦解析度,使用以下js <script language="javascript" type="text/javascript">       var ww = window.scree

PopupWindow適應不同大小的以及不同解析度的螢幕

1.情景再現: 在顯示PopupWindow時,如果去修改了系統的字型大小,在不同解析度的裝置上在字型設定成不同的大小時,有時會出現PopupWindow上顯示的文字被切斷的情況。 2.解決方案:加入自適應螢幕的程式碼語句 PopupWindow popupWindow =

Android 定義TextView實現文字內容自動調整字型大小適應TextView的大小

/** * 自定義TextView,文字內容自動調整字型大小以適應TextView的大小 * @author yzp */ public class AutoFitTextView extends TextView { private

CSS實現適應不同大小螢幕的背景大圖的兩種方法(轉簡書)

CSS實現自適應不同大小螢幕的背景大圖的兩種方法 一張清晰漂亮的背景圖片能給網頁加分不少,設計師也經常會給頁面的背景使用大圖,我們既不想圖片因為不同解析度圖片變形,也不希望當在大屏的情況下,背景有一塊露白,簡而言之,就是實現能自適應螢幕大小又不會變形的背景大圖,而且背景圖片不會隨著

根據螢幕大小適應字型大小

auto winSize = Director::getInstance()->getWinSize(); float fontSize_title = 35; if (winSize.height <= 960.0f) {

用CSS3的@media屬性根據螢幕大小適應各種解析度網頁顯示版本-media_query詳解

如今,電腦顯示器的螢幕解析度向越來越大發展,而手機等移動裝置終端的解析度卻不可能大到哪裡去。越來越多的網站,開始讓自己的頁面自適合各種解析度,在小解析度下顯示基本的內容,在大解析度下顯示全部功能,甚至是分多等級的多版本。比如說我們熟悉的wordpress後臺,當螢幕解析度

android應用適應解析度的解決方法

1. 首先是建立多個layout資料夾(drawable也一樣)。 在 在res目錄下建立多個layout資料夾,資料夾名稱為layout-800x480等。需要適應那種解析度就寫成什麼。 注意:          a.   較大的數字要寫在前面:比如layout-

PC端網頁適應不用解析度大小螢幕

由於@media 這一屬性太複雜 所以在一般的公司網頁製作中  我們可以直接根據瀏覽器視窗的大小來做自適應 var height = window.innerHeight ||(document.documentElement&&document.docum

android webview設定適應任意大小的pc網頁

WebSettings webSettings = view.getSettings(); webSettings.setJavaScriptEnabled(true); // User settings webSe

Android RecycerView 中根據圖片大小適應控制元件大小的實現

問題 recyclerView中 item有ImageView,ImageView大小根據圖片大小而改變大小 解決方案 GlideApp.with(mContext)

手機html根據手機解析度網頁文字大小適應

問題:不同手機型號螢幕尺寸大不相同,導致同樣的文字,有的顯示一行,有的顯示多行。通過查資料和自己的嘗試解決;網頁開發習慣的px單位,手機html開發不適用。原始碼如下:<!DOCTYPE html> <html lang="en"> <head&

android字型大小根據解析度自動調整

手機裝置太多,解析度也不一樣,看到網上大部分的適應字型的方法是定義values320×480或value-hdpi方式去處理。 採用第一種的就慘了,很多裝置的解析度是不一樣的,難道要每種都定義嗎? 採用第二種的在平板電腦裡沒有效果。 最後還是程式碼的方式方便快捷。。。