在ImageView外部触摸时,Android应用程序崩溃

时间:2019-03-21 07:56:08

标签: java android

当我触摸ImageView时,它会显示图像的颜色,但是当我触摸图像外时,应用程序崩溃。

这是我的xml代码:

 <ImageView
    android:id="@+id/colorimage"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:src="@drawable/color" />

<ImageView
    android:id="@+id/displaycolor"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/colorimage"/>

这是主要代码:

 mImageView.setDrawingCacheEnabled(true);
    mImageView.buildDrawingCache(true);

    mImageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE){
                Bitmap bitmap = mImageView.getDrawingCache();

               int pixel = bitmap.getPixel((int)event.getX(), (int)event.getY());

                int r = Color.red(pixel);
                int g = Color.green(pixel);
                int b = Color.blue(pixel);

                display.setBackgroundColor(Color.rgb(r , g , b));

            }

            return true;
        }
    });

Logcat错误消息: Error Logs

1 个答案:

答案 0 :(得分:0)

if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE)行更改为:

if(v.getId() == R.id.colorimage){
    if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE)
       {........}
}

触摸监听器已设置为整个活动,而不是特定的视图,除该视图之外,其他视图均无法进行位图操作,因此视图会崩溃。