こんにちは、画像ビューに触れたときにピクセルの色を取得したいのですが、xml の画像ビューの幅と高さがラップ コンテンツの場合、このコードは正常に動作します。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight=".2"
android:orientation="vertical"
android:gravity="center">
<ImageView
android:id="@+id/iv_cam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" >
</ImageView>
</LinearLayout>
、xmlファイルで画像ビューのラップコンテンツの幅と高さを親と一致するように設定すると問題が発生します
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight=".2"
android:orientation="vertical"
android:gravity="center">
<ImageView
android:id="@+id/iv_cam"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher" >
</ImageView>
</LinearLayout>
これを行うと、小さな画像がストレッチ エラーになります E/MessageQueue-JNI(1006): java.lang.IllegalArgumentException: x must be < bitmap.width()
どうすればこれを解決できますか...
@Override public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
ImageView iv = ((ImageView)v);
Bitmap bmp = ((BitmapDrawable)iv.getDrawable()).getBitmap();
int pixel = bmp.getPixel((int)event.getX(),(int)event.getY());// error comes in this line
int alphaValue = Color.alpha(pixel);
int redValue = Color.red(pixel);
int blueValue = Color.blue(pixel);
int greenValue = Color.green(pixel);
Toast.makeText(this,"[" +alphaValue+"," +redValue+","+greenValue+","+blueValue+"]", Toast.LENGTH_LONG).show();
}
return false;
}