react native中使用的尺寸單位是pt,是乙個絕對長度,而設計師使用的是px, 這兩種尺寸如何換算呢?官方提供了pixelratio:
import from
'react-native';
const pt2px = pt=>pixelratio.getpixelsizeforlayoutsize(pt);
const px2pt = px=>pixelratio.roundtonearestpixel(px);
設計師給你乙個尺寸,比如100px*200px的view,按照下面的方式可實現設計還原:
width:px2pt(100),height:px2pt(200),backgroundcolor:"red"}}/>
這個時候,你或許會說,這也太麻煩了,每個有尺寸的地方我都得轉麼,能不能我直接用px寫,當然可以,不過需要整體加個縮放係數:
import } from 'react-native';
const pt2px = pt=>pixelratio.getpixelsizeforlayoutsize(pt);
const px2pt = px=>pixelratio.roundtonearestpixel(px);
let pxratio = pixelratio.get();
let = dimensions.get("window");
letscale = 1/pxratio;
letwidth = pt2px(win_width);
letheight = pt2px(win_height);
const com = props=>(
style=}/>
)const styles=,,,
,]
},}
這樣處理後,在根節點內,你再也不用考慮pt的問題了,直接使用px即可。
不過此時還有另外乙個問題,設計尺寸是死的,螢幕大小是活的,得考慮解析度適配啊,那在不同的解析度下如何正確的實現設計師的設計呢?
我們將使用一種遊戲經常會用到得方案,fixedwidth/fixedheight.
具體如何應用呢,別急,一步步來。先來看看如何得到螢幕的畫素寬高:
import from
'react-native';
let = dimensions.get("window");
let w =pt2px(width);
let h = pt2px(height);
假定我們的設計尺寸是
let designsize = ;
按照fixedwidth、fixedheight的定義,我們計算下新的寬高:
//fixedwidth
letscale = designsize.width/w;
let winsize = ;
//fixedheight
letscale = designsize.height/h;
let winsize = ;
這個winsize就是最終實際用來布局的螢幕尺寸,此時我們又會多了乙個解析度適配的縮放係數,還記得我們前乙個我們新增的為了使用px的縮放係數麼,我們在這裡做乙個整合:
import } from 'react-native';
const pt2px = pt=>pixelratio.getpixelsizeforlayoutsize(pt);
const px2pt = px=>pixelratio.roundtonearestpixel(px);
let designsize = ;
let pxratio = pixelratio.get();
let = dimensions.get("window");
letwidth = pt2px(win_width);
letheight = pt2px(win_height);
let design_scale = designsize.width/width;
height = height*design_scale
letscale = 1/pxratio/design_scale;
const com = props=>(
style=}/>
)const styles=,,,
,]
},}
在後續的開發中將不必再關注適配的問題,只需要按照設計師給的尺寸實現布局即可。
最後再附上乙個工具類 resolution.js:
import from 'react-native';
let designsize = ;
export default class resolution = dimensions.get("window");
let w = pixelratio.getpixelsizeforlayoutsize(width);
let h = pixelratio.getpixelsizeforlayoutsize(height);
letscale = designsize.width/w;
let winsize = ;
return
}};
光譜解析度單位 光譜解析度 光譜解析度怎麼計算
光譜解析度指成像的波段範圍,分得愈細,波段愈多,光譜解析度就愈高,現在的技術可以達到5 6nm 奈米 量級,400多個波段。細分光譜可以提高自動區分和識別目.光譜解析度如何選擇 分得愈細,波段愈多,光譜解析度就愈高,現在的技術可以達到5 6nm 奈米 量級,400多個波段。細分光譜可以提高自動區分和...
Fedora12無法調集成適解析度
注 前提是裝了顯示卡驅動 gtf calculate vesa gtf mode lines 中文的意思是計算顯示裝置vesa驅動gtf模式命令列工具 什麼是gtf?gtf generalized timing formula 一般程式時間,定義了產生畫面所需要的時間,包括了諸如畫面重新整理率等 另...
Android解析度常識 多解析度適配
螢幕大小 以螢幕對角線的物理長度來衡量螢幕的大小 解析度 螢幕中所有物理畫素點數。如1920x1080,就表示寬方向有1920個畫素,高方向有1080個畫素,整個螢幕有2073600個畫素。螢幕密度 dpi dots per inch 即畫素密度,每英吋面積上存在多少個畫素。160dpi表示單位面積...