下面简要介绍 DisplayMetics 类: Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和字体。...为了获取DisplayMetrics 成员,首先初始化一个对象如下: DisplayMetrics metrics = new DisplayMetrics(); getWindowManager()....getDefaultDisplay().getMetrics; 注:构造函数DisplayMetrics 不需要传递任何参数;调用getWindowManager() 之后,会取得现有Activity...的Handle ,此时,getDefaultDisplay() 方法将取得的宽高维度存放于DisplayMetrics 对象中,而取得的宽高维度是以像素为单位(Pixel) ,“像素”所指的是“绝对像素...通过 DisplayMetrics的 toString()方法可以获取到 DisplayMetrics的大部分 fields信息,如下是在分辨率为 480×320情况下的一些输出信息: 其中,density
displayMetrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(displayMetrics...); 然后 , 通过 WindowManager 实例获取 DisplayMetrics 示例对象 , 其中封装了设备真实的屏幕数据参数 ; 通过 DisplayMetrics # heightPixels...可以获取屏幕高度 , 通过 DisplayMetrics # widthPixels 可以获取屏幕宽度 ; DisplayMetrics displayMetrics = new DisplayMetrics...= displayMetrics.heightPixels; this.screenHeight = displayMetrics.widthPixels - statusBarHeight...displayMetrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(displayMetrics
screenWidth=" + screenWidth + "; screenHeight=" + screenHeight); // 获取屏幕密度(方法2) DisplayMetrics...dm = new DisplayMetrics(); dm = getResources().getDisplayMetrics(); float density =...", "xdpi=" + xdpi + "; ydpi=" + ydpi); Log.e(TAG + " DisplayMetrics", "density=" + density + ";...", "xdpi=" + xdpi + "; ydpi=" + ydpi); Log.e(TAG + " DisplayMetrics", "density=" + density + ";...仔细分析代码,发现问题出在代码: getWindowManager().getDefaultDisplay().getMetrics(dm) Initialize a DisplayMetrics object
val displayMetrics = LocalContext.current.resources.displayMetrics val fontScale = LocalDensity.current.fontScale...val widthPixels = displayMetrics.widthPixels val widthDensity = widthPixels / 817.0f CompositionLocalProvider...Configuration.ORIENTATION_LANDSCAPE val widthDp = if (isLandscape) 817.0f else 510.0f 上面的就可以改为 val displayMetrics...= LocalContext.current.resources.displayMetrics val fontScale = LocalDensity.current.fontScale val widthPixels...= LocalContext.current.resources.displayMetrics val fontScale = LocalDensity.current.fontScale val widthPixels
setDensity(Application application, AppCompatActivity activity) { //获取当前app的屏幕显示信息 DisplayMetrics...displayMetrics = application.getResources().getDisplayMetrics(); float appDensity = displayMetrics.density...; float appScaleDensity = displayMetrics.scaledDensity; //计算等比缩放后的density和scaleDensity...要计算的view为50%为540dp,假如设备的真实像素为10800×19200,density为1,根据上面的计算: float appDensity = displayMetrics.density...=1//真实屏幕密度 float targetDensity = displayMetrics.widthPixels / WIDTH=10800px/1080=10 //计算后的密度 因此使用了autoSize
displayMetrics; 首先使用WindowManager获取本机屏幕长宽,存放在displayMetrics.widthPixels 和 displayMetrics.heightPixels...= new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(displayMetrics); 而实际屏幕大小要减去状态栏高度...> displayMetrics.heightPixels) {//横屏 displayWidth = displayMetrics.heightPixels;...displayHeight = displayMetrics.widthPixels; } else { //竖屏 displayWidth = displayMetrics.widthPixels...= new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(displayMetrics);
方法 一 DisplayMetrics dm=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); String...方法二 DisplayMetrics dm=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getRealMetrics(dm)...上下文获取方法 DisplayMetrics dm = new DisplayMetrics(); WindowManager mWm = (WindowManager)getSystemService
获取屏幕尺寸 DisplayMetrics metrics = new DisplayMetrics(); Display display = getWindowManager().getDefaultDisplay...设置WallpaperManager适应屏幕尺寸 final DisplayMetrics metrics = Util.setWallpaperManagerFitScreen(ViewWallpaperActivity.this...setWallpaperManagerFitScreen(Activity context) { // 使桌面适应屏幕尺寸 DisplayMetrics metrics = new DisplayMetrics...ret = new DisplayMetrics(); ret.widthPixels = wallpaperManager.getDesiredMinimumWidth(); ret.heightPixels...*/ private static Bitmap cropCenter(Bitmap bitmap, DisplayMetrics screenMetrics) { int h1 = bitmap.getHeight
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics...displayMetrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(displayMetrics...> displayMetrics.heightPixels){ // 宽度大于高度说明是横屏状态, 状态栏在左侧或者右侧 this.screenWidth...= displayMetrics.heightPixels; this.screenHeight = displayMetrics.widthPixels - statusBarHeight...; this.screenHeight = displayMetrics.heightPixels - statusBarHeight; }
package com.twy.test; import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics...findViewById(R.id.imageView1); img2 = (ImageView) findViewById(R.id.imageView2); DisplayMetrics...DisplayMetics 类: Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和字体。...为了获取DisplayMetrics 成员,首先初始化一个对象如下: Java代码 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager...getWindowManager() 获取显示定制窗口的管理器 //getDefaultDisplay() 获取默认显示Display对象 //getMetrics(dm) 通过Display对象的数据来初始化一个DisplayMetrics
通过阅读源码,我们可以得知,density 是 DisplayMetrics 中的成员变量,而 DisplayMetrics 实例通过 Resources#getDisplayMetrics 可以获得,...先来熟悉下 DisplayMetrics 中和适配相关的几个变量: DisplayMetrics#density 就是上述的density。...DisplayMetrics#densityDpi 就是上述的dpi。...当然还有些其他dp转换的场景,基本都是通过 DisplayMetrics 来计算的,这里不再详述。...,将DisplayMetrics#scaledDensity和DisplayMetrics#density设置为同样的值,从而某些用户在系统中修改了字体大小失效了,但是我们还不能直接用原始的scaledDensity
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics...outMetrics = new DisplayMetrics(); manager.getDefaultDisplay().getMetrics(outMetrics);...WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics...outMetrics = new DisplayMetrics(); manager.getDefaultDisplay().getMetrics(outMetrics);
通过applyDimension方法中dp转换: public static float applyDimension(int unit, float value,DisplayMetrics metrics...类的成员变量,如图所示: 而DisplayMetrics实例可以通过系统资源文件Resources类中的getDisplayMetrics方法获得,系统资源文件Resouces也可以通过Activity...或者Application的Context获得: DisplayMetrics displayMetrics = this.getResources().getDisplayMetrics(); 然后就可以通过...DisplayMetrics实例,修改density值啦,这里需要注意有个scaledDensity变量的影响,这个变量是字体的缩放因子,正常情况下和density相等,但是调节系统字体大小后会改变这个值...DisplayMetrics appDisplayMetrics = application.getResources().getDisplayMetrics(); if
wm.getDefaultDisplay(); Point size = new Point(); display.getSize(size); return size; } 再后来发现通过DisplayMetrics...Context ctx) { WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics...dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); Point size = new Point(); size.x...Context ctx) { WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics...dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); Point size = new Point(); size.x
在Android中使用DisplayMetrics中的densityDpi字段表示该值,并且不少文档中常用dpi来简化或者指代densityDpi。...现在我们再通过代码来获取设备的dpi值 private void getDisplayInfo(){ Resources resources=getResources(); DisplayMetrics...displayMetrics = resources.getDisplayMetrics(); float density = displayMetrics.density; int...densityDpi = displayMetrics.densityDpi; Log.i(TAG, "density = " + density); Log.i(TAG, "densityDpi...= null) { metrics.xdpi = size.x / designWidth * 72f; } } /** * 恢复displayMetrics
Density.java package com.newcapec.visitorsystem.utils; import android.content.Context; import android.util.DisplayMetrics...displayMetrics = appcontx.getResources().getDisplayMetrics(); appDensity = displayMetrics.density...; appScaleDensity = displayMetrics.scaledDensity; Log.d("Utils","appDensity:"+appDensity...根据 屏幕宽度 / 屏幕密度=WIDTH公式,现在知道屏幕宽度和WIDTH,也就能求出:屏幕密度=屏幕宽度 / WIDHT; 现在屏幕宽度(dp):targetDensity = displayMetrics.widthPixels...targetDensity * (appScaleDensity / appDensity) ; densityDpi = density * 160 ; 最后,把获取到的数据,设置到activity的displayMetrics
和标准dpi的比例(160px/inc) 分辨率 : 横纵2个方向的像素点的数量,常见取值 480X800 ,320X480 一般这些参数可以通过DisplayMetrics来获取: metrics.density...所有,终上所述,可以定义一个方法来获取以上值: private float getDensity() { DisplayMetrics dm = new DisplayMetrics(
getImageViewSize(ImageView imageView) { ImageSize imageSize = new ImageSize(); final DisplayMetrics...displayMetrics = imageView.getContext().getResources().getDisplayMetrics(); final ViewGroup.LayoutParams...getImageViewFieldValue(imageView, "mMaxWidth"); // Check maxWidth parameter if (width <= 0) width = displayMetrics.widthPixels...); // Check // maxHeight // parameter if (height <= 0) height = displayMetrics.heightPixels
WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics...outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics); return...WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics...outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics); return
context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } } Android中的DisplayMetrics...DisplayMetrics的toString()方法如下: @Override public String toString() { return "DisplayMetrics...scaledDensity=" + scaledDensity + ", xdpi=" + xdpi + ", ydpi=" + ydpi + "}"; } 例如小米2S,DisplayMetrics...中的toString()方法输出如下: DisplayMetrics{density=2.0, width=720, height=1280, scaledDensity=2.0, xdpi=345.0566
领取专属 10元无门槛券
手把手带您无忧上云