この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
|
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> | ||