日々是好日~every day is a good day~

日常の中の非日常の備忘録

【Android Studio】スクリーンサイズを取得する

以前 Android Studioでゲームのひな形となるプログラムを作りました
everydayisagoodday.hatenadiary.com
今度はプログラムの中でよく使うメソッドの必要なところだけを変更して使える部品のようなものを作っていこうと思っています
言葉にすると分かりにくいですね
今回は例として『スクリーンサイズを取得する』パーツを作って実行してみます
2パターンあります

val wm = windowManager
val display: Display = wm.defaultDisplay
val size = Point()
display.getSize(size)
SCREEN_WIDTH = size.x
SCREEN_HEIGHT = size.y

fun getScreenSize(context: Context) {
        val vm: WindowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
        val display = vm.defaultDisplay
        val metric: DisplayMetrics = DisplayMetrics()
        display.getMetrics(metric)
        SCREEN_WIDTH = metric.widthPixels
        SCREEN_HEIGHT = metric.heightPixels
    }

使用例はこちら(xmlファイルは省略します)

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import android.graphics.Point   //Ⅰ
import android.view.Display     //Ⅰ
import android.content.Context       //Ⅱ
import android.util.DisplayMetrics   //Ⅱ
import android.view.WindowManager    //Ⅱ

class MainActivity : AppCompatActivity() {
    var SCREEN_WIDTH = 0
    var SCREEN_HEIGHT = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val tvx:TextView = findViewById(R.id.tvx)
        val tvy:TextView = findViewById(R.id.tvy)
        val tvx2:TextView = findViewById(R.id.tvx2)
        val tvy2:TextView = findViewById(R.id.tvy2)

        //Ⅰ
        val wm = windowManager
        val display: Display = wm.defaultDisplay
        val size = Point()
        display.getSize(size)
        SCREEN_WIDTH = size.x
        SCREEN_HEIGHT = size.y
        tvx.text = "X = "+SCREEN_WIDTH.toString()
        tvy.text = "Y = "+SCREEN_HEIGHT.toString()

        //Ⅱ
        GetScreenSize(this)
        tvx2.text = "X = "+SCREEN_WIDTH.toString()
        tvy2.text = "Y = "+SCREEN_HEIGHT.toString()
    }

    fun GetScreenSize(context: Context) {
        val vm: WindowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
        val display = vm.defaultDisplay
        val metric = DisplayMetrics()
        display.getMetrics(metric)
        SCREEN_WIDTH = metric.widthPixels
        SCREEN_HEIGHT = metric.heightPixels
    }
}

実行すると

スマホの画面サイズに依存しないアプリを作る場合サイズの取得は必須です
これでコピペで使えるようになりました