Android R 如何修改设置中默认显示大小?

本文介绍了如何在Android系统中修改屏幕缩放设置和默认屏幕密度。通过在`ScreenZoomSettings.java`文件中添加日志并查看显示大小设置,可以确定当前设备的屏幕等级数值。同时,提供了在`defaults.xml`和`DatabaseHelper.java`中配置默认屏幕密度的方法,以确保更改生效。此外,还提到了通过PRODUCT_PROPERTY_OVERRIDES属性来改变默认density的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法1:

1.需添加如下log,然后进入到“设置–显示–显示大小”界面 summary 显示为small而不是default,查看对应的ylog“oncreate valuse =”,以确定设备上目前显示的各等级原始数值:

diff --git a/src/com/android/settings/display/ScreenZoomSettings.java b/src/com/android/settings/display/ScreenZoomSettings.java
index ec3999b..22d9f67 100644
--- a/src/com/android/settings/display/ScreenZoomSettings.java
+++ b/src/com/android/settings/display/ScreenZoomSettings.java
@@ -32,7 +32,7 @@ import com.android.settingslib.display.DisplayDensityUtils;

 import java.util.ArrayList;
 import java.util.List;
-
+import java.util.Arrays;
 /**
  * Preference fragment used to control screen zoom.
  */
@@ -45,6 +45,7 @@ public class ScreenZoomSettings extends PreviewSeekBarPreferenceFragment impleme
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

+        android.util.Log.d("ScreenZoomSettings","oncreate");
         mActivityLayoutResId = R.layout.screen_zoom_activity;

         // This should be replaced once the final preview sample screen is in place.
@@ -69,6 +70,7 @@ public class ScreenZoomSettings extends PreviewSeekBarPreferenceFragment impleme
             mEntries = density.getEntries();
             mInitialIndex = initialIndex;
             mDefaultDensity = density.getDefaultDensity();
+            android.util.Log.d("ScreenZoomSettings","oncreate valuse = " + Arrays.toString(mValues));
         }
     }

根据各等级对应的数值,可参考如下修改,配置默认的density,并写入数据库,进行验证:

 diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index cdc80fd..cee72cc 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -249,4 +249,8 @@
     <integer name="def_navigation_bar_config">0</integer>
     <!-- Default for Settings.System.NAVIGATION_BAR_SHOW -->
     <integer name="def_navigation_bar_show">1</integer>
+
+    <!-- Default for Settings.Secure.DISPLAY_DENSITY_FORCED -->
+    <string name="def_display_density">240</string>
+
 </resources>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/sett
index 8d3c472..10f508f 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2434,6 +2434,8 @@ class DatabaseHelper extends SQLiteOpenHelper {
             loadIntegerSetting(stmt, Settings.Secure.SLEEP_TIMEOUT,
                     R.integer.def_sleep_timeout);

+            loadStringSetting(stmt, Settings.Secure.DISPLAY_DENSITY_FORCED,
+                    R.string.def_display_density);
             /*
              * IMPORTANT: Do not add any more upgrade steps here as the global,
              * secure, and system settings are no longer stored in a database

注:“def_display_density”>240 只是举例说明

方法2:修改

PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=204-------这个是修改默认 default的值

Android中,如果你想要让ImageView显示图片的原始大小而不是默认缩放,你可以使用以下方法: 1. **设置布局属性**:在XML布局文件中,可以使用`android:scaleType="centerCrop"`或者`android:scaleType="fitStart"`。`centerCrop`会使图片等比例缩放并填充整个ImageView,保留图片内容;而`fitStart`会让图片尽可能铺满视图,不会改变其宽高比。 ```xml <ImageView android:id="@+id/imageView" android:src="@drawable/your_image" android:scaleType="centerCrop" /> ``` 2. **程序中动态设置**:在Java或Kotlin代码里,你可以创建ImageView对象后直接设置`scaleType`属性: ```java ImageView imageView = findViewById(R.id.imageView); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); ``` 3. **加载Bitmap时设置**:如果你是通过网络下载图片,或者使用其他方法获取Bitmap,可以在加载时指定宽度和高度为原始尺寸: ```java BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; // 只获取尺寸信息 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), yourResourceId, options); int originalWidth = options.outWidth; int originalHeight = options.outHeight; // 然后创建一个新的选项对象并设置实际大小 options = new BitmapFactory.Options(); options.inJustDecodeBounds = false; options.inSampleSize = calculateInSampleSize(options, originalWidth, originalHeight); // 根据需要调整采样率 bitmap = BitmapFactory.decodeResource(getResources(), yourResourceId, options); imageView.setImageBitmap(bitmap); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值