この文書の現在のバージョンと選択したバージョンの差分を表示します。
次のリビジョン | 前のリビジョン | ||
android:imageview [2019/11/03 18:59] ips 作成 |
android:imageview [2019/11/04 20:14] (現在) ips |
||
---|---|---|---|
ライン 7: | ライン 7: | ||
image1.setImageResource(R.drawable.man) | image1.setImageResource(R.drawable.man) | ||
| | ||
+ | | ||
+ | // imageViewのサイズを変更する | ||
+ | layout1.addView(imagev1) | ||
+ | imagev1.layoutParams.width=200 | ||
+ | imagev1.layoutParams.height=200 | ||
</code> | </code> | ||
ライン 71: | ライン 76: | ||
</code> | </code> | ||
+ | ===== ImageViewのタッチした部分が透明かどうかを判定する ===== | ||
+ | <code> | ||
+ | // スイッチのタッチイベント | ||
+ | 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 | ||
+ | } | ||
+ | |||
+ | |||
+ | </code> |