【Android】Android javaでシステムのDPIを変更

Android

アプリケーション自体の表示スケールを変更したい場合は、以下のようにConfigurationクラスを使ってアプリのリソースをスケールすることができます:

例:アプリケーションの表示スケールを変更

java

import android.content.res.Configuration;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.d(TAG, "configuration.densityDpi="+configuration.densityDpi);
        if(configuration.densityDpi>320)
            configuration.densityDpi = 320; // 例えば、xhdpiのスケール
        /*
            例えば、xhdpi   configuration.densityDpi    = 320;
            例えば、xxhdpi  configuration.densityDpi    = 480;
            例えば、mdpi    configuration.densityDpi    = 160;
        */
        createConfigurationContext(configuration);
        //getResources().updateConfiguration(configuration, getResources().getDisplayMetrics());
      
    }
}

このコードでは、アプリケーションのConfigurationオブジェクトを取得し、densityDpiプロパティを変更しています。しかし、この方法でもシステム全体のDPIを変更することはできず、アプリケーションの表示スケールのみを変更することになります。

コメント