Проверьте, равен ли ImageView щелчку ввода - PullRequest
0 голосов
/ 23 декабря 2018

Я хочу создать приложение для Android (с помощью Android Studio), в котором пользователь увидит случайное изображение, которое я сгенерировал в массиве.Затем они должны выбрать правильное изображение из горизонтальной прокрутки, которое соответствует отображаемому случайному изображению.Тем не менее, я не могу написать правильный код, чтобы проверить, нажал ли пользователь на правильное, соответствующее изображение.Я использую оператор if.

Это мой код_действия.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!");
        }
    }

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Вместо создания нескольких функций я бы просто объединил их все в одну.Кроме того, созданный вами код сравнивает 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;
}

Затем для каждого ImageView в вашем XML-файле просто добавьте android:onClick="clickedImage".Надеюсь, это поможет!

0 голосов
/ 23 декабря 2018

Вы должны либо внедрить OnClickListener и просто установить OnClickListener для каждого изображения, которое вы хотите проверить, которые были нажаты.Проверьте эту ссылку, она может быть полезна .. Android Studio Как проверить, какой Imageview нажал и присвоить ему значение Int?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...