android像素值
㈠ 手機UI設計時像素和清晰度是多大
1.術語和概念
Android手機ui設計解析度基礎知識
Screen size(屏幕尺寸)
指的是手機實際的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸
摩托羅拉milestone手機是3.7英寸
Aspect Ratio(寬高比率)
指的是實際的物理尺寸寬高比率,分為long和nolong
Milestone是16:9,屬於long
Resolution(解析度)
和電腦的解析度概念一樣,指手機屏幕縱、橫方向像素個數
Milestone是854*480
DPI(dot per inch)
每英寸像素數,如120dpi,160dpi等,假設QVGA(320*240)解析度的屏幕物理尺寸是(2英寸*1.5英寸),dpi=160
可以反映屏幕的清晰度,用於縮放UI的
Density(密度)
屏幕里像素值濃度,resolution/Screen size可以反映出手機密度,
Density-independent pixel (dip)
指的是邏輯密度計算單位,dip和具體像素值的對應公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160)
2. DPI值計算
比如:計算WVGA(800*480)解析度,3.7英寸的密度DPI,如圖1所示
圖1
Diagonal pixel表示對角線的像素值(=
),DPI=933/3.7=252
3.手機屏幕的分類
1)根據手機屏幕密度(DPI)或屏幕尺寸大小分為以下3類,如圖2所示
圖2
2)手機屏幕分類和像素密度的對應關系如表1所示:
Low density (120), ldpi
Medium density (160), mdpi
High density (240), hdpi
Small screen
QVGA (240×320)
Normal screen
WQVGA400 (240×400)WQVGA432 (240×432)
HVGA (320×480)
WVGA800 (480×800)WVGA854 (480×854)
Large screen
WVGA800* (480×800)WVGA854* (480×854)
表1
3)手機尺寸分布情況(http://developer.android.com/resources/dashboard/screens.html)如圖3所示,目前主要是以解析度為800*480和854*480的手機用戶居多
圖3
從以上的屏幕尺寸分布情況上看,其實手機只要考慮3-4.5寸之間密度為1和1.5的手機
4. ui設計
從開發角度講,應用程序會根據3類Android手機屏幕提供3套UI布局文件,但是相應界面圖標也需要提供3套,如表2所示
Icon Type
Standard Asset Sizes (in Pixels), for Generalized Screen Densities
Low density screen (ldpi)
Medium density screen (mdpi)
High density screen (hdpi)
Launcher
36 x 36 px
48 x 48 px
72 x 72 px
Menu
36 x 36 px
48 x 48 px
72 x 72 px
Status Bar
24 x 24 px
32 x 32 px
48 x 48 px
Tab
24 x 24 px
32 x 32 px
48 x 48 px
Dialog
24 x 24 px
32 x 32 px
48 x 48 px
List View
24 x 24 px
32 x 32 px
48 x 48 px
表2
5.如何做到自適應屏幕大小呢?
1)界面布局方面
需要根據物理尺寸的大小准備5套布局,layout(放一些通用布局xml文件,比如界面中頂部和底部的布局,不會隨著屏幕大小變化,類似windos窗口的title bar),layout-small(屏幕尺寸小於3英寸左右的布局),layout-normal(屏幕尺寸小於4.5英寸左右),layout-large(4英寸-7英寸之間),layout-xlarge(7-10英寸之間)
2)圖片資源方面
需要根據dpi值准備5套圖片資源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
Android有個自動匹配機制去選擇對應的布局和圖片資源
㈡ Android中dip,dp,sp,pt和px的區別
dp:
這個是最常用但也最難理解的尺寸單位。它與「像素密度」密切相關。
不同的手機/平板可能具有不同的像素密度,例如同為4寸手機,有480x320解析度的也有800x480解析度的,前者的像素密度就比較低。
dip:
與dp完全相同,只是名字不同而已。
在早期的Android版本里多使用dip,後來為了與sp統一就建議使用dp這個名字了。
sp:
與縮放無關的抽象像素(Scale-independent Pixel),只用於表示字體大小時使用。
sp和dp很類似但唯一的區別是,Android系統允許用戶自定義文字尺寸大小(小、正常、大、超大等等),當文字尺寸是「正常」時1sp=1dp=0.00625英寸,而當文字尺寸是「大」或「超大」時,1sp>1dp=0.00625英寸。
pt:
即point,是一個標準的長度單位,1pt=1/72英寸,用於印刷業,Android中沒見到哪裡用過。
px:
即像素(Pixel),1px代表屏幕上一個物理的像素點。
另外還有一個:
dpi:
是dot per inch的縮寫,就是每英寸的像素數,也叫做屏幕密度。
這個值越大,屏幕就越清晰。
慕課上有關於這個的詳細視頻講解,你可以去看看
http://www.imooc.com/video/9349
㈢ android 下怎樣獲取圖片像素值
int[] pixels = new int[bit.getWidth()*bit.getHeight()];//保存所有的像素的數組,圖片寬×高
bit.getPixels(pixels,0,bit.getWidth(),0,0,bit.getWidth(),bit.getHeight());
for(int i = 0; i < pixels.length; i++){
int clr = pixels[i];
int red = (clr & 0x00ff0000) >> 16; //取高兩位
int green = (clr & 0x0000ff00) >> 8; //取中兩位
int blue = clr & 0x000000ff; //取低兩位
System.out.println("r="+red+",g="+green+",b="+blue);
}
其中getPixels中第三個參數要為圖片的寬度
㈣ android中繪圖,坐標默認用的是什麼單位
默認單位是px也就是像素,一般不推薦用px。因為跟設備有關系,你可以使用TypedValue這個對象.
下面是這兩個的轉換函數,您可以先把像素轉換成dp
java">publicclassDensityUtil{
/**
*根據手機的解析度從dp的單位轉成為px(像素)
*/
publicstaticintdip2px(Contextcontext,floatdpValue){
finalfloatscale=context.getResources().getDisplayMetrics().density;
return(int)(dpValue*scale+0.5f);
}
/**
*根據手機的解析度從px(像素)的單位轉成為dp
*/
publicstaticintpx2dip(Contextcontext,floatpxValue){
finalfloatscale=context.getResources().getDisplayMetrics().density;
return(int)(pxValue/scale+0.5f);
}
}
一、px
像素,是屏幕上顯示數據的最基本的點。
二、dpi
dpi(Dots Per Inch):每英寸點數,也可稱為像素密度,即屏幕對角線像素值÷英寸值
比如480x800解析度4.0英寸的手機計算的DPI=
三、dp
dp(與dip相同):在每英寸160點的顯示器上,1dp = 1px,即px = dp(dpi/160)
假設兩塊屏幕尺寸一樣,那屏幕一的dpi值是右邊的兩倍,如果屏幕一dpi為160,那屏幕二dpi即為320,設置160dp的情況下
屏幕一:160px=160dp(160dpi/160)
屏幕二:320px=160dp(320dpi/160)
根據關系,可得出:
屏幕一控制項長度為160px,屏幕二控制項長度為320px,讓控制項長度適應不同屏幕大小,用dp很合適。
四、sp
sp(scaled pixels) 通常用於指定字體大小,當用戶修改手機顯示字體時,字體大小會隨之改變
對於UI布局,要使用dip/dp作為單位,對應字體要是有sp作為單位,盡量少用px作為單位。
註:解析度與屏幕大小沒有關系,屏幕大小是物理外觀,而解析度則是顯示能力。
如果您對回答滿意,請關注一下姓名中的微博,謝謝。
㈤ Android中一圓環圖片,圓環上某一圈坐標點算出來,獲取圖片上的像素值,報錯
public void getPixColor(int imhg){
Bitmap src = BitmapFactory.decodeResource(getResources(),imhg);
int A, R, G, B;
int pixelColor;
int height = src.getHeight();
int width = src.getWidth();
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
pixelColor = src.getPixel(x, y);
A = Color.alpha(pixelColor);
R = Color.red(pixelColor);
G = Color.green(pixelColor);
B = Color.blue(pixelColor);
if (R>0||G>0||B>0){
tv_tilte2.setTextColor(Color.rgb(R,G, B));
}
}
}
}
㈥ android ui界面設計設計什麼像素
Android 開發字體的大小需要用google提供的sp單位,而控制項的大小需要使用dip 或者dp。
dp(或者dip device independent pixels)一種基於屏幕密度的抽象單位。在每英寸160點的顯示器上,1dp=1px。不同設備有不同的顯示效果,這個和設備硬體有關。
sp(Scaled Pixels)主要用於字體顯示,與刻度無關的一種像素,與dp類似,但是可以根據用戶的字體大小首選項進行縮放。
xp即像素,1px代表屏幕上一個物理的像素點,px單位不被建議使用,因為同樣100px的圖片,在不同手機上顯示的實際大小可能不同。
㈦ Android的px,dp和sp等單位的區別詳解
px:
即像素,1px代表屏幕上一個物理的像素點;
px單位不被建議使用,因為同樣100px的圖片,在不同手機上顯示的實際大小可能不同
dp:
這個是最常用但也最難理解的尺寸單位。它與「像素密度」密切相關,所以首先我們解釋一下什麼是像素密度。假設有一部手機,屏幕的物理尺寸為1.5英寸x2英寸,屏幕解析度為240x320,則我們可以計算出在這部手機的屏幕上,每英寸包含的像素點的數量為240/1.5=160dpi(橫向)或320/2=160dpi(縱向),160dpi就是這部手機的像素密度,像素密度的單位dpi是Dots Per Inch的縮寫,即每英寸像素數量。橫向和縱向的這個值都是相同的,原因是大部分手機屏幕使用正方形的像素點。
不同的手機/平板可能具有不同的像素密度,例如同為4寸手機,有480x320解析度的也有800x480解析度的,前者的像素密度就比較低。
Android系統定義了四種像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它們對應的dp到px的系數分別為0.75、1、1.5和2,這個系數乘以dp長度就是像素數。
例如界面上有一個長度為「100dp」的圖片,那麼它在240dpi的手機上實際顯示為80x1.5=120px,在320dpi的手機上實際顯示為80x2=160px。如果你拿這兩部手機放在一起對比,會發現這個圖片的物理尺寸「差不多」,這就是使用dp作為單位的效果。
dip:
與dp完全相同,只是名字不同而已。在早期的Android版本里多使用dip,後來為了與sp統一就建議使用dp這個名字了。
sp:
與縮放無關的抽象像素(Scale-independent Pixel)。sp和dp很類似但唯一的區別是,Android系統允許用戶自定義文字尺寸大小(小、正常、大、超大等等),當文字尺寸是「正常」時1sp=1dp=0.00625英寸,而當文字尺寸是「大」或「超大」時,1sp>1dp=0.00625英寸。類似我們在windows里調整字體尺寸以後的效果——窗口大小不變,只有文字大小改變。
還有幾個比較少用到的尺寸單位:
mm:
即毫米;
in:
即英寸,1英寸=2.54厘米(約);
pt:
1pt=1/72英寸=0.035厘米;
最佳實踐,文字的尺寸一律用sp單位,非文字的尺寸一律使用dp單位。例如textSize="16sp"、layout_width="60dp";偶爾需要使用px單位,例如需要在屏幕上畫一條細的分隔線時:
<View layout_width="match_parent" layout_height="1px"/>
補充:
1. android.view.ViewGroup.LayoutParams.height及width這兩個屬性的單位為像素,但是為了兼容多種解析度的手機,我們需要最好使用dp。
2. 根據手機的解析度從dp的單位轉成px
public static int dip2px(Context context, float dpValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dpValue*scale + 0.5f);
}
3.根據手機的解析度從px轉成dp
public static int px2dip(Context context, float pxValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(pxValue/scale + 0.5f);
}
㈧ Android中的手機屏幕像素的幾種獲取方式
使用Activity類中的方法來獲取,使用范圍是在Activity的類及子類中和有傳入Activity類及子類的對象參數的方法中使用
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 通過Activity類中的getWindowManager()方法獲取窗口管理,再調用getDefaultDisplay()方法獲取獲取Display對象
Display display = getWindowManager().getDefaultDisplay();
// 方法一(推薦使用)使用Point來保存屏幕寬、高兩個數據
Point outSize = new Point();
// 通過Display對象獲取屏幕寬、高數據並保存到Point對象中
display.getSize(outSize);
// 從Point對象中獲取寬、高
int x = outSize.x;
int y = outSize.y;
// 通過吐司顯示屏幕寬、高數據
Toast.makeText(this, "手機像素為:" + x + "x" + y, Toast.LENGTH_LONG).show();
// 方法二(不推薦使用)直接通過Display對象獲取屏幕寬、高數據
int width = display.getWidth();
int height = display.getHeight();
// 通過吐司顯示屏幕寬、高數據
Toast.makeText(this, "手機像素為:" + width + "x" + height, Toast.LENGTH_LONG).show();
}
}
㈨ android中如何獲得像素點的顏色值
mBitmap2.getPixels(pixels, 0, w, 0, 0, w, h);//獲得mBitmap2的像素顏色值,賦值給pixels,第三個參數為一行的像素數(矩形的寬)mBitmap3 = Bitmap.createBitmap(pixels, 0, w, w, h, Bitmap.Config.ARGB_8888);//用上面的pixels顏色數組創建一個Bitmap應該能幫到你吧
㈩ 推薦一款高像素的android手機,謝謝,攝像頭最好大於1200萬像素
華為 P20 Pro很不錯,以下是參數:
1.拍照:後置徠卡三攝:4000萬像素(彩色,f/1.8光圈)+2000萬像素(黑白,f/1.6光圈)+800萬像素(長焦,f/2.4光圈),徠卡鏡頭,支持自動對焦(激光對焦、深度對焦、相位對焦、反差對焦),支持華為AI防抖。前置單攝:2400萬像素,f/2.0光圈,支持固定焦距,帶來革命性的攝影體驗和拍攝效果。
2.處理器:採用HUAWEI Kirin 970 (麒麟970)八核 + 微智核i7處理器,玩游戲更流暢更省電。
3.屏幕:屏幕尺寸:6.1英寸,屏幕色彩為1670萬色,解析度:FHD+ 1080 x 2240 像素,採用OLED全面屏,機身輕薄、邊角圓潤,拿在手裡非常舒適。
4.電池:電池容量:4000mAh(典型值),使用標配5V/4.5A兼容4.5V/5A充電器。理論充電時間約1.5小時,長續航。
您可登陸華為商城官網查看更多詳細參數,根據自己的喜好選擇。