vivo手机目前支持修改屏幕分辨率的机型有:iQOO 11、iQOO 11 Pro、X90、X90 Pro、X90 Pro+、iQOO 10 Pro、X80 Pro骁龙版、X80 Pro天玑版、X Note、iQOO 9 Pro、X70 Pro+、iQOO 8 Pro、Xplay6,路径为:设置--显示与亮度--屏幕分辨率,点击对应分辨率即可设置。
若有更多疑问,可进入vivo官网/vivo商城APP--我的--在线客服或者vivo官网网页版--下滑底部--在线客服--输入人工客服进入咨询了解。
获取屏幕分辨率的方式如下:
一、在activity中
1、DisplayMetrics dm = getResources()getDisplayMetrics();
int screenWidth = dmwidthPixels;
int screenHeight = dmheightPixels;
2、DisplayMetrics dm = new DisplayMetrics();
thisgetWindowManager()getDefaultDisplay()getMetrics(dm);
int screenWidth = dmwidthPixels;
int screenHeight = dmheightPixels;
二、在service中
DisplayMetrics dm = new DisplayMetrics();
dm = getResources()getDisplayMetrics();
int screenWidth = dmwidthPixels;
int screenHeight = dmheightPixels;
三、在非activity中,传一个Context进来调用
1、public ImageGalleryAdapter(Context c) {
myContext = c;
DisplayMetrics dm = cgetResources()getDisplayMetrics();
int screenWidth = dmwidthPixels;
int screenHeight = dmheightPixels;
}
2、public class BaseTools {
public static int getWindowWidth(Context context){
// 获取屏幕分辨率
WindowManager wm = (WindowManager) (contextgetSystemService(ContextWINDOW_SERVICE));
DisplayMetrics dm = new DisplayMetrics();
wmgetDefaultDisplay()getMetrics(dm);
int mScreenWidth = dmwidthPixels;
return mScreenWidth;
}
public static int getWindowHeigh(Context context){
// 获取屏幕分辨率
WindowManager wm = (WindowManager) (contextgetSystemService(ContextWINDOW_SERVICE));
DisplayMetrics dm = new DisplayMetrics();
wmgetDefaultDisplay()getMetrics(dm);
int mScreenHeigh = dmheightPixels;
return mScreenHeigh;
}
}
原文: https://blogcsdnnet/CrazyApes/article/details/116994631
之前一直不知道手机的DPI还可以修改,以前测试我都是用好几个测试机,或者通过修改开发者模式下的最小宽度去看适配的问题。呐,前段时间朋友说可以直接用adb改,赶紧记下来,省的以后忘了。
adb 命令
wm size [reset|WxH|WdpxHdp]
return or override display size width and height in pixels unless suffixed with 'dp'
查看分辨率: wm size
修改分辨率: wm size 1440x2560
还原初设置: wm size reset
测试机: 华为 FRD-DL00
wm density [reset|DENSITY]
查看密度: wm density
修改密度: wm density 480
还原设置: wm density reset
测试机: 华为 FRD-DL00
Security exception: Must hold permission androidpermissionWRITE_SECURE_SETTINGS
莫慌,打开下 开发者选项 中的 USB调试(安全设置) 就行了。
有时间可以都看一下,试一试,蛮好玩的。
说起来巧了,就像前言说的我不知道手机可以改DPI,之前一直是用的开发者模式下的最小宽度修改来测试。后来发现,这个其实也是修改了DPI,仔细想想density和px还有dp的关系,就突然能明白为啥了。
手机 开发者模式
首先得打开手机的 开发者模式 ,咋打开应该不用说了把。
不知道的小伙伴可以试着去找到你手机的 系统版本 那里一顿狂点。
然后就有惊喜了。
比如: Redmi 9A
咱就直接进入 开发者选项 里把。
找到 绘图 模块下的 最小宽度 栏目。
点开之后直接输入想要的最小宽度就行了。
注意: 这里是以 dp 为单位的。
如果你的UI设计图的宽度跟你的手机不符,开发的时候,可以尝试修改这个达到演示的目的。
如下: Redmi 9A
由于输入的是宽度值,无法直观的看到 density 的变化,但是咱们可以用方式一去验证下,就可以看到它的变化是改了 density 的值的。
机型:Redmi 9A
可见,在 分辨率 不变的前提下,修改了最小宽度之后,设备的 density 发生了变化。
Android中的dp在渲染前会将dp转为px,计算公式:
px = density dp;
density = dpi / 160;
px = dp (dpi / 160);
原文: https://blogcsdnnet/CrazyApes/article/details/116994631
参考: https://developerandroidgooglecn/guide/practices/screens_support
想要Android应用适应不同尺寸的屏幕,思路如下:
不同的layout
Android手机屏幕大小不一,有480x320, 640x360, 800x480,让app适应不同屏幕,需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入Rjava里,而系统会根据屏幕的大小自己选择合适的layout进行使用。
hdpi、mdpi、ldpi
在之前的版本中,只有一个drawable,而21版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。
drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:
(1)drawable-hdpi里面存放高分辨率的,如WVGA (480x800),FWVGA (480x854)
(2)drawable-mdpi里面存放中等分辨率的,如HVGA (320x480)
(3)drawable-ldpi里面存放低分辨率的,如QVGA (240x320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的。
更正:应该是对应不同density 的
在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本。
屏幕方向:
横屏竖屏自动切换:
可以在res目录下建立layout-port-800x600和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,这样在手机屏幕方向变化的时候系统会自动调用相应的布局文件,避免一种布局文件无法满足两种屏幕显示的问题。
不同分辨率横屏竖屏自动切换:
以800x600为例 :
可以在res目录下建立layout-port-800x600和layout-land-800x600两个目录
不切换:
以下步骤是网上流传的,不过我自己之前是通过图形化界面实现这个配置,算是殊途同归,有空我会把贴上来。
还要说明一点:每个activity都有这个属性screenOrientation,每个activity都需要设置,可以设置为竖屏(portrait),也可以设置为无重力感应(nosensor)。
要让程序界面保持一个方向,不随手机方向转动而变化的处理办法:
在AndroidManifestxml里面配置一下就可以了。
加入这一行android:screenOrientation="landscape"。
例如(landscape是横向,portrait是纵向):
以下是JAVA代码:
<xml version="10" encoding="utf-8"><manifest xmlns:android="http://schemasandroidcom/apk/res/android"
package="comraylinkit"
android:versionCode="1"
android:versionName="10">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="Main"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="androidintentactionMAIN" />
<category android:name="androidintentcategoryLAUNCHER" />
</intent-filter>
</activity>
<activity android:name="GamePlay"
android:screenOrientation="portrait"></activity>
<activity android:name="OptionView"
android:screenOrientation="portrait"></activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
另外,android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置,那样,进行中的游戏就不会自动重启了!
有的程序适合从竖屏切换到横屏,或者反过来,这个时候怎么办呢?可以在配置Activity的地方进行如下的配置android:screenOrientation="portrait"。这样就可以保证是竖屏总是竖屏了,或者landscape横向。
而有的程序是适合横竖屏切换的。如何处理呢?首先要在配置Activity的时候进行如下的配置:android:configChanges="keyboardHidden|orientation",另外需要重写Activity的 onConfigurationChanged方法。实现方式如下,不需要做太多的内容:
@Overridepublic void onConfigurationChanged(Configuration newConfig) {
superonConfigurationChanged(newConfig);
if (thisgetResources()getConfiguration()orientation == ConfigurationORIENTATION_LANDSCAPE) {
// land do nothing is ok
} else if (thisgetResources()getConfiguration()orientation == ConfigurationORIENTATION_PORTRAIT) {
// port do nothing is ok
}
}
写一个支持多分辨的程序,基于16开发的,建立了三个资源文件夹drawable-hdpi drawable-mdpi drawable-ldpi,里面分别存放7272 4848 3636的icon图标文件。当我在G1(15的系统)上测试时,图标应该自适应为4848才对啊,但实际显示的是3636。怎么才能让其自适应 4848的icon图标呢 ?
解决办法 drawable-hdpi drawable-mdpi drawable-ldpi改成drawable-480X320 drawable-800X480的多分辨支持的文件夹。
vivo手机目前支持修改屏幕分辨率的机型有:iQOO 11、iQOO 11 Pro、X90、X90 Pro、X90 Pro+、iQOO 10 Pro、X80 Pro骁龙版、X80 Pro天玑版、X Note、iQOO 9 Pro、X70 Pro+、iQOO 8 Pro、Xplay6,路径为:设置--显示与亮度--屏幕分辨率,点击对应分辨率即可设置。
若有更多疑问,可进入vivo官网/vivo商城APP--我的--在线客服或者vivo官网网页版--下滑底部--在线客服--输入人工客服进入咨询了解。
欢迎分享,转载请注明来源:品搜搜测评网