以前 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 } }
実行すると
スマホの画面サイズに依存しないアプリを作る場合サイズの取得は必須です
これでコピペで使えるようになりました