====== ImageView ======
===== 画像のR値を指定してImageViewに設定する =====
// imageViewに画像を設定
image1.setImageResource(R.drawable.man)
// imageViewのサイズを変更する
layout1.addView(imagev1)
imagev1.layoutParams.width=200
imagev1.layoutParams.height=200
===== 画像を拡大・縮小、回転してからImageViewに設定する =====
// bitmapとして取り出す
val bitMan = BitmapFactory.decodeResource(resources,R.drawable.man)
// matrixを生成
val matrix = Matrix()
// 画像中心を基点に90度回転(角度、基点x、基点y)
matrix.setRotate(90f, (imageWidth/2).toFloat(),(imageHeight/2).toFloat())
// 画像縮小
matrix.preScale(0.5f, 0.5f)
// 元画像から90度回転、半分に縮小した画像を生成
val bitMan90 = Bitmap.createBitmap( bitMan, 0, 0,imageWidth, imageHeight, matrix, true)
// ImageViewに画像設定
image1.setImageBitmap(bitMan90)
===== ImaveViewにgifを設定する =====
[[https://github.com/bumptech/glide|Glide]] をインストールする
// build.gradle(project)
repositories {
mavenCentral()
google()
}
// build.gradle(app)
dependencies {
implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
}
以下Glideの簡単な使い方
// ImageViewにgifを表示させるだけ
Glide.with(this).load(R.drawable.anime_test).into(image2)
// ネットから画像を取得する
// が必要
// httpは別途手間が必要...httpsだと簡単
Glide.with(this).load("https://ips.nekotype.com/wp-content/uploads/2017/05/eyechatch_default-150x150.jpg").into(image2)
// 画像の縁を丸くして表示する
Glide.with(this)
.load("https://ips.nekotype.com/wp-content/uploads/2017/05/eyechatch_default-150x150.jpg")
.apply(RequestOptions.bitmapTransform(RoundedCorners(30))) //←この一行追加
.into(image2)
===== ImageViewのタッチした部分が透明かどうかを判定する =====
// スイッチのタッチイベント
imageViewSwitch.setOnTouchListener { view, motionEvent ->
try {
// ImageViewからビットマップを取得する
val bitmap = imageViewSwitch.drawable.toBitmap()
// タッチした部分のピクセルを取得している
// bitmapのwidth、heightは元の画像のピクセル。(pix)
// motionEvent.x、yで取得できるのは、ImageViewの左上からの位置。(px)
// bitmapのタッチした位置をしるには、pxをpixに変換する必要がある。
// motionEvent.x:
val x=motionEvent.x * bitmap.width / (imageViewSwitch.right - imageViewSwitch.left)
val y=motionEvent.y * bitmap.height / (imageViewSwitch.bottom - imageViewSwitch.top)
// ★bitmap.getPixel のx y は、画像の実サイズのpixを指定することがポイント
val pix = bitmap.getPixel(x.toInt(),y.toInt())
when {
// Down で画像を変える Color.alpha(pix)でタッチした箇所のpixの透明度がわかる。
// Color.alpha(pix)が0の場合は透明
(motionEvent.action == MotionEvent.ACTION_DOWN) && (Color.alpha(pix)!=0) -> {
if (switchValue==false) {
imageViewSwitch.setImageResource(R.drawable.switch_on)
switchValue = true
}else{
imageViewSwitch.setImageResource(R.drawable.switch_off)
switchValue = false
}
}
}
}catch (e: Exception){
}
true
}