标签: screen-density

在android中以编程方式获取屏幕密度?

如何在android中以编程方式获取屏幕密度?

我的意思是:如何找到当前设备的屏幕dpi?

android dpi screen-density

505
推荐指数
15
解决办法
28万
查看次数

为什么Nexus 6密度为560 dpi?

如何为Nexus 6准备资源?如果我将图像放到xxxhdpi,它们将缩小并降低质量.我把图像放到xxhdpi它们会扩大并失去质量.如果实际密度493ppi更接近xxhdpi~480dpi,为什么开发人员决定设置值为560dpi?

Nexus 6拥有令人印象深刻的5.96英寸四核高清屏幕,分辨率为2560 x 1440(493 ppi).这转换为~730 x 410 dp(密度无关像素).

Nexus 6的量化密度为560 dpi,介于xxhdpi和xxxhdpi主密度桶之间.

对于Nexus 6,该平台将缩减xxxhdpi资产,但如果这些资产不可用,那么它将扩大xxhdpi资产.

xxhdpi ~480dpi
xxxhdpi ~640dpi
Run Code Online (Sandbox Code Playgroud)

android dpi screen-density

32
推荐指数
2
解决办法
2万
查看次数

为Galaxy S8创建模拟器? - Android Studio

我创建了一个新的硬件配置文件,试图为Galaxy S8/S8 +制作和模拟器.我将屏幕尺寸设置为5.8/6.2英寸(取决于是否S8或S8 +,尽管事实上这似乎不会影响模拟器),屏幕分辨率为1440 x 2960,就像设备一样.模拟器看起来没有像在真实设备上那样.在真正的S8 +上测试我的应用程序显示它布局不佳,但在模拟器上它看起来相对有条理,我注意到它使用了我的Nexus 6模拟器(xxxhdpi)的尺寸.现在使用的尺寸值并不是什么大问题,因为我很高兴逐步淘汰Nexus 6,因为它已经不再生产了.

所以我在我的启动器Java类中添加了一些代码,它让我得到了模拟器的尺寸,这是我从S8仿真器得到的:{density=3.5, width=1440, height=2792, scaledDensity=3.5, xdpi=560.0, ydpi=560.0} 除了事实高度是2792而不是2960(我认为这是发生的),我相信我看到了问题 - 密度是3.5.可疑,这与Nexus 6的密度相同.所以我创建的模拟器不适用于Galaxy S8,这在我与真实的S8 +的比较中很明显,后者以扭曲的方式显示我的应用程序.据我所知,Galaxy S8的密度为4,而不是3.5.IDE说设备有560dpi.现在我需要能够创建一个密度为4的模拟器,并且我已经放下了相同的规格.我怎样才能做到这一点?如何在不使用真品的情况下测试Galaxy S8?IDE提供的此设备没有预配置的仿真器.

提前谢谢了.

android screen galaxy android-studio screen-density

23
推荐指数
1
解决办法
5万
查看次数

Android设备在调试和签名APK中使用来自不同密度集的资源

我注意到我的应用程序在同一设备上显示略有不同的布局,具体取决于我是运行调试APK还是签名版本APK.经过多次刮擦,我已将问题隔离到设备密度特定的资源值.当我在调试模式下运行应用程序时,设备使用v alues-xxhdpi/dimens.xml中的维度,当我运行签名的APK时,它使用values-xxxhdpi/dimens.xml中的维度.有问题的设备是运行Android 7.0的三星Galaxy S7

为了证实这一点,我创建了一个新的空项目,其中只有一个hello world字符串.我在values/strings.xml,values-xxhdpi/strings.xmlvalues-xxxhdpi/strings.xml中为字符串定义了不同的值.结果如下.

  • Debug apk显示xxhdpi string.按预期工作.
  • 从android studio运行发布apk(通过在gradle文件中指定签名配置)显示xxhdpi string.按预期工作.
  • 通过选择Build |生成签名的apk 生成签名APK并运行它.这次应用显示xxxhdpi字符串.为什么?!

为什么会这样?为什么android在调试模式下选择xxhdpi资源,在签名的APK中选择xxxhdpi资源?

android dpi pixel-density screen-density

9
推荐指数
0
解决办法
165
查看次数

在同一分辨率屏幕上,不同设备上的布局显示不同

问题:在同一分辨率屏幕上,不同设备上的布局显示不同.我在三星Galaxy S4(1080x1920)和LG G2(1080x1920)上测试过它.它的分辨率相同,那么为什么每个设备上的布局显示方式不同?

我已经在布局文件夹中,并没有其他分辨率的其他布局.

这是屏幕:

  • 三星Galaxy S4

http://www.image-share.com/ijpg-2963-272.html

  • LG G2

http://www.image-share.com/ijpg-2963-271.html

编辑#1

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/layoutMain"
tools:mContext="com.test.app.flock.mActivity">

<ImageView
    android:id="@+id/imageViewImageBackground"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="gone" />

<View
    android:id="@+id/viewBackground"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background01" />

<View
    android:id="@+id/viewFingerprint"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/fingerprint01"
    android:visibility="gone" />

<Button
    android:id="@+id/buttonScanning"
    android:layout_width="162dp"
    android:layout_height="130dp"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="41dp"
    android:background="@android:color/transparent" />

<ImageView
    android:id="@+id/imageViewScanner"
    android:layout_width="162dp"
    android:layout_height="130dp"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="41dp"
    android:src="@drawable/line01"

    android:visibility="gone" />

<TextView
    android:id="@+id/textViewResult"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="180dp"

    android:text="SCANNING"
    android:textSize="30sp"
    android:textColor="@android:color/white"
    android:textStyle="bold"
    android:gravity="center"

    android:visibility="gone" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="55dp"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="112dp" …
Run Code Online (Sandbox Code Playgroud)

android screen-resolution android-layout screen-density

8
推荐指数
1
解决办法
817
查看次数

Android 屏幕密度 dpi 与 ppi

根据 android 文档,密度应以dpi(每英寸点数)为单位,所有布局测量应以dp为单位。

使用一个简单的公式 android 可以将dp映射到实际像素。

px = dp * (dpi / 160), 
160dpi ~ medium density screen which is the baseline
Run Code Online (Sandbox Code Playgroud)

那么为什么不直接使用ppi(每英寸像素)来描述屏幕密度呢?

android screen-density

5
推荐指数
1
解决办法
1万
查看次数

在高端设备上绘制Canvas问题

我想以SeekBar编程方式在画布上绘制.我编写了代码来设置SeekBar基于设备密度的LayoutParams .我正在使用具有设备密度的开关盒

final DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
if(metrics.densityDpi <= DisplayMetrics.DENSITY_LOW){
        zoomBarParams = new LinearLayout.LayoutParams(18,
                LayoutParams.FILL_PARENT);
        } else if (metrics.densityDpi <= DisplayMetrics.DENSITY_MEDIUM){
            zoomBarParams = new LinearLayout.LayoutParams(24,
                    LayoutParams.FILL_PARENT);

        }else if (metrics.densityDpi <= DisplayMetrics.DENSITY_HIGH){
            zoomBarParams = new LinearLayout.LayoutParams(24,
                    LayoutParams.FILL_PARENT);

        }else if (metrics.densityDpi <= DisplayMetrics.DENSITY_XHIGH){
            zoomBarParams = new LinearLayout.LayoutParams(31,
                    LayoutParams.FILL_PARENT);


        }else if (metrics.densityDpi <= DisplayMetrics.DENSITY_XXHIGH){
            zoomBarParams = new LinearLayout.LayoutParams(60,
                    LayoutParams.FILL_PARENT);

        }else if (metrics.densityDpi <= DisplayMetrics.DENSITY_XXXHIGH){
            zoomBarParams = new LinearLayout.LayoutParams(60,
                    LayoutParams.FILL_PARENT);

        } else {
            zoomBarParams = new LinearLayout.LayoutParams(60,
                    LayoutParams.FILL_PARENT);

        }
Run Code Online (Sandbox Code Playgroud)

但这不适用于三星Note …

android canvas screen-density

5
推荐指数
1
解决办法
407
查看次数

Android xxhdpi、420 ​​dpi 和 480 dpi

我面临下一个问题:

我有一个 values-xxhdpi 及其维度.xml。具有 480 dpi 的设备非常适合使用此文件夹。

问题是,例如三星 Galaxy S4 或 S5 从该文件夹中捕获值,并且在屏幕上看起来不太好,因为它们的分辨率为 420 dpi。所以我需要为这种类型或设备创建一个值。

我尝试添加 values-w410dp 并且工作正常,但是如果我添加此文件夹,则具有 480 dpi 的设备现在会从该文件夹中捕获 de 值,而不是来自 values-xxhdpi 的值。

请需要建议

谢谢

android dimensions screen-density

5
推荐指数
1
解决办法
1万
查看次数

Android如何强制默认屏幕密度

通过“设置/显示”放大屏幕,我发现我的 Galaxy s9+ 的屏幕密度从 430 dpi 变为超过 600 dpi。

这使得布局和图像从 xxhdpi 更改为 xxxhdpi。

如果我有一个固定大小为 16dp 的 textView,

在 xxhdpi 中它是 16 * 3 px,在 xxxhdpi 中将变成 16 * 4 px。

这使得我的布局(当然来自 editTexts 或 textViews 的文本)变得更大,因为设备的实际密度永远不会改变,谷歌(或制造商 samsumg)打算为此功能。

但我不希望这种情况发生在我的应用程序中。

我试图通过这样做来修复它;

Configuration configuration = activity.getResources().getConfiguration();

if (configuration.densityDpi != 430) { 
                configuration.densityDpi = 430;    
}

DisplayMetrics metrics = activity.getResources().getDisplayMetrics();
WindowManager wm = (WindowManager) activity.getSystemService(activity.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.densityDpi * metrics.density;
activity.getResources().updateConfiguration(configuration, metrics);
Run Code Online (Sandbox Code Playgroud)

这迫使屏幕密度变为 430,并且在 Galaxy s9+ 上运行良好。但事实上,并非所有设备的默认密度都是 430。

如何确定运行我的应用程序的设备的默认密度?

或者是否有配置可以忽略我的应用程序的放大效果?

android android-layout screen-density

5
推荐指数
1
解决办法
4140
查看次数

无法理解如何使用1.6+的不同密度图像?

我试图了解res/drawables图像应该如何使用不同的屏幕密度.现在我有一个1.5应用程序,例如,我有一个100x100像素的图像.当在Droid上使用时,它会缩放此图像,使其在该设备上看起来相对大小相同(所有其他布局缩放由我处理,使用dip单位).

所以现在我需要更新我的项目并添加三个文件夹,对吧?:

  1. 绘制,LDPI
  2. 绘制,MDPI
  3. 绘制,华电国际

所以我要将我的100x100图像放在-mdpi文件夹中.如果我想为-hdpi文件夹制作一个版本 - 我怎么知道要扩大它的大小呢?我的意思是它看起来默认它应该大1.5倍.但是如果我把它做大2.0倍,或者我正在运行的设备的密度不是基线G1的1.5倍,会发生什么?我的布局不会在这些设备上开始看起来不同吗?

谢谢

android android-drawable pixel-density screen-density

4
推荐指数
1
解决办法
4622
查看次数