查看ImageView是否等于输入点击
Check to see if ImageView is equal to input click
我想创建一个 Android 应用程序(使用 Android Studio),用户可以借此看到我在数组中生成的随机图像。然后,他们必须 select 从与显示的随机图像相对应的水平滚动视图中获取正确的图像。
但是,我似乎无法编写正确的代码来检查用户是否单击了正确的相应图像。我正在使用 if 语句。
这是我的 activity_main.xml:
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="205dp"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="54dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/face_with_tears_of_joy"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
android:onClick="clickedFaceWithTearsOfJoy"
android:clickable="true"
app:srcCompat="@drawable/face_with_tears_of_joy" />
<ImageView
android:id="@+id/grinning_face"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
android:onClick="clickedGrinningFace"
android:clickable="true"
app:srcCompat="@drawable/grinning_face" />
<ImageView
android:id="@+id/grinning_face_with_smiling_eyes"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:clickable="true"
android:contentDescription="@string/funny_emoji"
android:onClick="clickedGrinningFaceWithSmilingEyes"
app:srcCompat="@drawable/grinning_face_with_smiling_eyes" />
<ImageView
android:id="@+id/rolling_on_the_floor_laughing"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
app:srcCompat="@drawable/rolling_on_the_floor_laughing" />
<ImageView
android:id="@+id/smiling_face_with_open_mouth"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
app:srcCompat="@drawable/smiling_face_with_open_mouth" />
<ImageView
android:id="@+id/smiling_face_with_open_mouth_and_cold_sweat"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
app:srcCompat="@drawable/smiling_face_with_open_mouth_and_cold_sweat" />
<ImageView
android:id="@+id/smiling_face_with_open_mouth_and_smiling_eyes"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
app:srcCompat="@drawable/smiling_face_with_open_mouth_and_smiling_eyes" />
</LinearLayout>
</HorizontalScrollView>
这是我的 MainActivity.java:
public class MainActivity extends AppCompatActivity {
public ImageView imageView;
public Random random;
public TextView textView;
int easy[] = {R.drawable.face_with_tears_of_joy, R.drawable.grinning_face, R.drawable.grinning_face_with_smiling_eyes};
int hard[] = {R.drawable.face_with_tears_of_joy, R.drawable.grinning_face, R.drawable.grinning_face_with_smiling_eyes,
R.drawable.rolling_on_the_floor_laughing, R.drawable.smiling_face_with_open_mouth, R.drawable.smiling_face_with_open_mouth_and_cold_sweat,
R.drawable.smiling_face_with_open_mouth_and_smiling_eyes};
public ImageView imageView1;
public ImageView imageView2;
public ImageView imageView3;
public ImageView imageView4;
public ImageView imageView5;
public ImageView imageView6;
public ImageView imageView7;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView1 = (ImageView) findViewById(R.id.face_with_tears_of_joy);
imageView2 = (ImageView) findViewById(R.id.grinning_face);
imageView3 = (ImageView) findViewById(R.id.grinning_face_with_smiling_eyes);
imageView4 = (ImageView) findViewById(R.id.rolling_on_the_floor_laughing);
imageView5 = (ImageView) findViewById(R.id.smiling_face_with_open_mouth);
imageView6 = (ImageView) findViewById(R.id.smiling_face_with_open_mouth_and_cold_sweat);
imageView7 = (ImageView) findViewById(R.id.smiling_face_with_open_mouth_and_smiling_eyes);
imageView = (ImageView) findViewById(R.id.imageView);
random = new Random();
textView = (TextView) findViewById(R.id.textView);
int randomInt = random.nextInt(hard.length);
imageView.setBackgroundResource(hard[randomInt]);
}
public void clickedEmoji(View view) {
ImageView image = (ImageView) view;
Bitmap clicked = ((BitmapDrawable) image.getDrawable()).getBitmap();
Bitmap displayed = ((BitmapDrawable) image.getDrawable()).getBitmap();
if (clicked == displayed) {
textView.setText("Well Done!");
} else {
textView.setText("Unlucky!");
}
}
您必须要么实现 OnClickListener,要么将 OnClickListener 设置为您要检查的每张图像是否已被单击。
检查此 link 可能会有帮助..
与其制作多个功能,不如将它们合而为一。此外,您创建的代码将 ImageView 与 Drawable 进行比较,这是无效的比较。相反,您可以执行以下操作。
public void clickedImage(View view) {
ImageView image = (ImageView) view;
Bitmap clicked = drawableToBitmap(image.getDrawable());
Bitmap displayed = drawableToBitmap(imageView.getBackground());
if (clicked == displayed) {
textView.setText("Well Done!");
} else {
textView.setText("Unlucky!");
}
}
public Bitmap drawableToBitmap(Drawable d) {
Bitmap b = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
d.setBounds(0, 0, c.getWidth(), c.getHeight());
d.draw(c);
return b;
}
然后,对于 XML 文件中的每个 ImageView,只需添加 android:onClick="clickedImage"
。希望这对您有所帮助!
我想创建一个 Android 应用程序(使用 Android Studio),用户可以借此看到我在数组中生成的随机图像。然后,他们必须 select 从与显示的随机图像相对应的水平滚动视图中获取正确的图像。 但是,我似乎无法编写正确的代码来检查用户是否单击了正确的相应图像。我正在使用 if 语句。
这是我的 activity_main.xml:
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="205dp"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="54dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/face_with_tears_of_joy"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
android:onClick="clickedFaceWithTearsOfJoy"
android:clickable="true"
app:srcCompat="@drawable/face_with_tears_of_joy" />
<ImageView
android:id="@+id/grinning_face"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
android:onClick="clickedGrinningFace"
android:clickable="true"
app:srcCompat="@drawable/grinning_face" />
<ImageView
android:id="@+id/grinning_face_with_smiling_eyes"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:clickable="true"
android:contentDescription="@string/funny_emoji"
android:onClick="clickedGrinningFaceWithSmilingEyes"
app:srcCompat="@drawable/grinning_face_with_smiling_eyes" />
<ImageView
android:id="@+id/rolling_on_the_floor_laughing"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
app:srcCompat="@drawable/rolling_on_the_floor_laughing" />
<ImageView
android:id="@+id/smiling_face_with_open_mouth"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
app:srcCompat="@drawable/smiling_face_with_open_mouth" />
<ImageView
android:id="@+id/smiling_face_with_open_mouth_and_cold_sweat"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
app:srcCompat="@drawable/smiling_face_with_open_mouth_and_cold_sweat" />
<ImageView
android:id="@+id/smiling_face_with_open_mouth_and_smiling_eyes"
android:layout_width="50dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:contentDescription="@string/funny_emoji"
app:srcCompat="@drawable/smiling_face_with_open_mouth_and_smiling_eyes" />
</LinearLayout>
</HorizontalScrollView>
这是我的 MainActivity.java:
public class MainActivity extends AppCompatActivity {
public ImageView imageView;
public Random random;
public TextView textView;
int easy[] = {R.drawable.face_with_tears_of_joy, R.drawable.grinning_face, R.drawable.grinning_face_with_smiling_eyes};
int hard[] = {R.drawable.face_with_tears_of_joy, R.drawable.grinning_face, R.drawable.grinning_face_with_smiling_eyes,
R.drawable.rolling_on_the_floor_laughing, R.drawable.smiling_face_with_open_mouth, R.drawable.smiling_face_with_open_mouth_and_cold_sweat,
R.drawable.smiling_face_with_open_mouth_and_smiling_eyes};
public ImageView imageView1;
public ImageView imageView2;
public ImageView imageView3;
public ImageView imageView4;
public ImageView imageView5;
public ImageView imageView6;
public ImageView imageView7;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView1 = (ImageView) findViewById(R.id.face_with_tears_of_joy);
imageView2 = (ImageView) findViewById(R.id.grinning_face);
imageView3 = (ImageView) findViewById(R.id.grinning_face_with_smiling_eyes);
imageView4 = (ImageView) findViewById(R.id.rolling_on_the_floor_laughing);
imageView5 = (ImageView) findViewById(R.id.smiling_face_with_open_mouth);
imageView6 = (ImageView) findViewById(R.id.smiling_face_with_open_mouth_and_cold_sweat);
imageView7 = (ImageView) findViewById(R.id.smiling_face_with_open_mouth_and_smiling_eyes);
imageView = (ImageView) findViewById(R.id.imageView);
random = new Random();
textView = (TextView) findViewById(R.id.textView);
int randomInt = random.nextInt(hard.length);
imageView.setBackgroundResource(hard[randomInt]);
}
public void clickedEmoji(View view) {
ImageView image = (ImageView) view;
Bitmap clicked = ((BitmapDrawable) image.getDrawable()).getBitmap();
Bitmap displayed = ((BitmapDrawable) image.getDrawable()).getBitmap();
if (clicked == displayed) {
textView.setText("Well Done!");
} else {
textView.setText("Unlucky!");
}
}
您必须要么实现 OnClickListener,要么将 OnClickListener 设置为您要检查的每张图像是否已被单击。
检查此 link 可能会有帮助..
与其制作多个功能,不如将它们合而为一。此外,您创建的代码将 ImageView 与 Drawable 进行比较,这是无效的比较。相反,您可以执行以下操作。
public void clickedImage(View view) {
ImageView image = (ImageView) view;
Bitmap clicked = drawableToBitmap(image.getDrawable());
Bitmap displayed = drawableToBitmap(imageView.getBackground());
if (clicked == displayed) {
textView.setText("Well Done!");
} else {
textView.setText("Unlucky!");
}
}
public Bitmap drawableToBitmap(Drawable d) {
Bitmap b = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
d.setBounds(0, 0, c.getWidth(), c.getHeight());
d.draw(c);
return b;
}
然后,对于 XML 文件中的每个 ImageView,只需添加 android:onClick="clickedImage"
。希望这对您有所帮助!