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小时,长续航。
您可登陆华为商城官网查看更多详细参数,根据自己的喜好选择。