Kids Math app


package com.apdim3.learningforkidsunlimited;

import android.content.ClipData;
import android.content.ClipDescription;
import android.os.Bundle;
import android.util.Log;
import android.view.DragEvent;
import android.view.View;
import android.widget.GridLayout;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import java.util.Random;

public class CalculationActivity extends AppCompatActivity {

private GridLayout gridLayout1, gridLayout2;
private TextView question, answers;
private int num1,num2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculation);

gridLayout1 = findViewById(R.id.gridLayout1);
gridLayout2 = findViewById(R.id.gridLayout2);
question = findViewById(R.id.question);
answers = findViewById(R.id.answers);

populateGridLayouts();

// Generate the first question
generateQuestion();


}

void generateQuestion() {
num1 = (int) gridLayout1.getChildAt(new Random().nextInt(gridLayout1.getChildCount())).getTag();
num2 = (int) gridLayout2.getChildAt(new Random().nextInt(gridLayout2.getChildCount())).getTag();

question.setText(num1 + " + " + num2 + " = ");

int correctAnswer = num1 + num2;
setOptions(correctAnswer);

// Debug: Log the correct answer
Log.d("CalculationActivity", "Correct Answer: " + correctAnswer);
}

void setOptions(int correctAnswer) {
Random random = new Random();
int[] options = new int[4];
int correctPosition = random.nextInt(4);

for (int i = 0; i < 4; i++) {
if (i == correctPosition) {
options[i] = correctAnswer;
} else {
int wrongAnswer;
do {
wrongAnswer = random.nextInt(20); // Adjust range as needed
} while (wrongAnswer == correctAnswer);
options[i] = wrongAnswer;
}
}

TextView option1 = findViewById(R.id.option1);
TextView option2 = findViewById(R.id.option2);
TextView option3 = findViewById(R.id.option3);
TextView option4 = findViewById(R.id.option4);

option1.setText(String.valueOf(options[0]));
option2.setText(String.valueOf(options[1]));
option3.setText(String.valueOf(options[2]));
option4.setText(String.valueOf(options[3]));

setupDragAndDrop(option1, correctAnswer);
setupDragAndDrop(option2, correctAnswer);
setupDragAndDrop(option3, correctAnswer);
setupDragAndDrop(option4, correctAnswer);
}

void setupDragAndDrop(TextView option, int correctAnswer) {
option.setOnLongClickListener(view -> {
ClipData.Item item = new ClipData.Item(option.getText());
ClipData dragData = new ClipData(
option.getText(),
new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN},
item
);

View.DragShadowBuilder myShadow = new View.DragShadowBuilder(option);
view.startDragAndDrop(dragData, myShadow, null, 0);
return true;
});

answers.setOnDragListener((view, dragEvent) -> {
switch (dragEvent.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
return dragEvent.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN);

case DragEvent.ACTION_DRAG_ENTERED:
view.setBackgroundColor(0x30000000); // Optional: highlight when dragging over
return true;

case DragEvent.ACTION_DRAG_EXITED:
view.setBackgroundColor(0x00000000); // Optional: remove highlight when exiting
return true;

case DragEvent.ACTION_DROP:
ClipData.Item item = dragEvent.getClipData().getItemAt(0);
String dragData = item.getText().toString();

TextView answerTextView = (TextView) view;
answerTextView.setText(dragData);

int droppedAnswer = Integer.parseInt(dragData);
if (droppedAnswer == correctAnswer) {
generateQuestion(); // Generate next question if correct
}
return true;

case DragEvent.ACTION_DRAG_ENDED:
view.setBackgroundColor(0x00000000); // Optional: remove highlight when drag ends
return true;

default:
return false;
}
});
}

void populateGridLayouts() {
for (int i = 0; i < num1; i++) {
ImageView imageView = new ImageView(this);
imageView.setImageResource(R.drawable.circle); // Replace with actual image resource
imageView.setTag(i + 1); // Assign a value to each image

GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams();
layoutParams.width = 50; // width in pixels
layoutParams.height = 50; // height in pixels
layoutParams.setMargins(3, 3, 3, 3); // margins in pixels
imageView.setLayoutParams(layoutParams);

gridLayout1.addView(imageView);
}

for (int i = 0; i < num2; i++) {
ImageView imageView = new ImageView(this);
imageView.setImageResource(R.drawable.star); // Replace with actual image resource
imageView.setTag(i + 1); // Assign a value to each image
GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams();
layoutParams.width = 50; // width in pixels
layoutParams.height = 50; // height in pixels
layoutParams.setMargins(3, 3, 3, 3); // margins in pixels
imageView.setLayoutParams(layoutParams);
gridLayout2.addView(imageView);
}
}

} 



Post a Comment

Post a Comment (0)

Previous Post Next Post