ユーザ用ツール

サイト用ツール


サイドバー

android:imageview

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を設定する

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)

// ネットから画像を取得する
// <uses-permission android:name="android.permission.INTERNET" />が必要
// 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
        }

android/imageview.txt · 最終更新: 2019/11/04 20:14 by ips