تطبيق quizz بأندرويد


فهاد الدرس الجديد من سلسلة أندرويد غادي نشوفو كيفاش نقادو تطبيق quizz بأندرويد التطبيق كيمكن المستخدم من استعراض مجموعة من الأسئلة من بعد مكايجاوب على كل واحد كتظهر رسالة كتخبرو واش الجواب صحيح ولا خطأ من بعد كتعرض النتيجة ديال لquizz.

نظرة سريعة بالفيديو

1- الملف activity_main.xml

فأول حاجة غادي نديرو غادي نزيدو project جديد ف android studio سميه AndroidQuizz او لي بغيتي ختار Empty Activity من بعد ميتزاد غادي تمشي للمجلد res/layout فيه كاين ملف سميتو activity_main.xml هادا هو الملف ديال الصفحة الرئيسية ديالنا فيه ل progressbar لي غادي تبقى تعمر كل متزاد شي سؤال من بعد كاين les textviews لي غادي ياخدو السؤال و score منبعد كاين les boutons باش كنجاوب على السؤال  الكود ديال activity_main.xml هو :

                                <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimaryDark"
    tools:context="com.example.belasri.adroidquizz.MainActivity">

    <ProgressBar
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/progressBar"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:indeterminate="false" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/progressBar"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:id="@+id/gameScore"
        android:textColor="@color/textColor"
        android:textStyle="bold"
        android:textSize="25sp"
        android:text="@string/initScore"
        android:padding="10dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="50dp"
        android:id="@+id/questionText"
        android:gravity="center"
        android:padding="20dp"
        android:text="@string/question1"
        android:textColor="@color/textColor"
        android:textStyle="bold"
        android:textSize="30sp" />

    <LinearLayout
        android:layout_centerHorizontal="true"
        android:layout_above="@id/gameScore"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="20dp"
        android:orientation="horizontal">

        <Button
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:id="@+id/vraiBtn"
            android:text="@string/trueBtn"
            android:textColor="@color/textColor"
            android:textStyle="bold"
            style="@style/Base.Widget.AppCompat.Button.Borderless"
            android:background="@color/vraiColor"
            android:textSize="20sp" />

        <Button
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            style="@style/Base.Widget.AppCompat.Button.Borderless"
            android:id="@+id/fauxBtn"
            android:text="@string/falseBtn"
            android:background="@color/fauxColor"
            android:textColor="@color/textColor"
            android:textStyle="bold"
            android:textSize="20sp"/>
    </LinearLayout>

</RelativeLayout>
                            

2- الملف Questions.java

فالمجلد com.example زيد ملف جديد عبارة عن java class فيه غادي نخزنو المعلومات الخاصة بكل question فعندنا المعلومات على شكل des variables كاين ل id ديال السؤال والجواب ديالو واش صحيح ولا خطأ و كاين ل constructeur ولgetters وsetters الكود ديال الملف هو:

                                package com.example.belasri.adroidquizz;

/**
 * Created by belasri on 17/09/2017.
 */

public class Questions {
    private int question_id;
    private boolean answer;

    public Questions(int question_id, boolean answer) {
        this.question_id = question_id;
        this.answer = answer;
    }

    public int getQuestion_id() {
        return question_id;
    }

    public void setQuestion_id(int question_id) {
        this.question_id = question_id;
    }

    public boolean isAnswer() {
        return answer;
    }

    public void setAnswer(boolean answer) {
        this.answer = answer;
    }
}

                            

3- الملف MainActivity.java

فالمجلد java كاين الملف MainActivity.java  فيه الكود لي كيمكن باش نسترجع textviews ول boutons ول progressbar من الملف activity_main.xml من بعد عندي جدول فيه كل الأسئلة من بعد كاين PROGRESS_INCREMENT لي هو العدد باش كتحرك ل ProgressBar ولي هو 100 مقسومة على عدد الأسئلة من بعد عندنا ل fonction nextQuestion لي ملي كيتجاوب على شي سؤال كتعرضنا السؤال لي موراه بإستعمال ل index لي كيتزاد بواحد هو وال score بالإضافة ل progressbar يلا كان ل index كيساوي صفر الشي لي كيعني بلي وصلنا للآخر سؤال كنعرض رسالة فيها النتيجة النهائية منبعد كاين ل fonction check لي كتحقق واش الجواب صحيح كان كتزيد واحد ل score مكانش مكتزيدش وكتعرض رسالة فيها واش الجواب صحيح ولا خطأ وفل onclick ديال les boutons كنفد هاد les fonctions الكود ديال الملف هو: 

                                package com.example.belasri.adroidquizz;

import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import static android.R.attr.value;
import static android.icu.lang.UCharacter.GraphemeClusterBreak.T;
import static java.lang.String.valueOf;

public class MainActivity extends AppCompatActivity {
       Button trueBtn,falseBtn;
       ProgressBar progressBar;
       TextView scoreTextView,questionTextView;
       int question_id;
       int index = 0 ;
       int score = 0;
       private Questions[] questions = new Questions[] {
                new Questions(R.string.question1, false),
                new Questions(R.string.question2, false),
                new Questions(R.string.question3, true),
                new Questions(R.string.question4, true),
                new Questions(R.string.question5, true),
                new Questions(R.string.question6, true),
                new Questions(R.string.question7, true),
                new Questions(R.string.question8, false),
                new Questions(R.string.question9, false),
                new Questions(R.string.question10, true),
                new Questions(R.string.question11, false),
                new Questions(R.string.question12, true),
                new Questions(R.string.question13,false)
        };
        final int PROGRESS_INCREMENT = (int) Math.ceil(100.0 / questions.length);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        falseBtn = (Button) findViewById(R.id.fauxBtn);
        trueBtn = (Button) findViewById(R.id.vraiBtn);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);
        scoreTextView = (TextView) findViewById(R.id.gameScore);
        questionTextView = (TextView) findViewById(R.id.questionText);
        question_id = questions[index].getQuestion_id();
        questionTextView.setText(question_id);
        falseBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                check(false);
                nextQuestion();
                Log.v("Faux","Faux clicked");
            }
;        });
        trueBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                check(true);
                nextQuestion();
                Log.v("vrai","Vrai clicked");
            }
        });
    }
    public void nextQuestion(){
        index = (index + 1) % questions.length;
        Log.v("question number", String.valueOf(index));
        if(index == 0){
            progressBar.incrementProgressBy(PROGRESS_INCREMENT);
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
            alertDialog.setTitle("Jeux terminé");
            alertDialog.setCancelable(false);
            alertDialog.setMessage("Votre score est :" + score + " points");
            alertDialog.setPositiveButton("Quittez", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    finish();
                }
            });
            alertDialog.show();
        }else{
            question_id = questions[index].getQuestion_id();
            questionTextView.setText(question_id);
            scoreTextView.setText("Score " + score + " / " + questions.length);
            progressBar.incrementProgressBy(PROGRESS_INCREMENT);
        }
    }
    public void check(boolean answer){
        boolean correctAnswer = questions[index].isAnswer();
        if(correctAnswer == answer){
            Toast.makeText(getApplicationContext(),R.string.correct, Toast.LENGTH_SHORT).show();
            score+=1;
        }else{
            Toast.makeText(getApplicationContext(),R.string.incorrect, Toast.LENGTH_SHORT).show();
        }
    }
}

                            

4- الملف string.xml

فالمجلد values فيه الملف strings.xml هادا الملف لي فيه les questions ديالنا بالإضافة للإسم ديال التطبيق وles boutons وغيرها الكود ديالو هو:

                                    <resources>
    <string name="app_name">Quizz</string>

    <string name="trueBtn">Vrai</string>
    <string name="falseBtn">Faux</string>
    <string name="initScore">Score 0/13</string>


    <string name="incorrect">Faux!</string>
    <string name="correct">Bonne réponse!</string>

    <string name="question1">Montréal est la capitale de la République de Djibouti ?</string>
    <string name="question2">Gilgamesh est l\'homme qui a découvert que la Terre est ronde ?</string>
    <string name="question3">Kevin Systrom est le créateur d\'Instagram ?</string>
    <string name="question4">Reagan est le quarantième président des USA ?</string>
    <string name="question5">Le Rhin est le plus long fleuve d\'Europe occidentale ?</string>
    <string name="question6">Le court est le nom officiel du terrain de tennis ?</string>
    <string name="question7">Neil Armstrong a mis le premier le pied sur la Lune ?</string>
    <string name="question8">Paris a construit le premier métro ?</string>
    <string name="question9">L\'espagne est le pays natal de Mozart ?</string>
    <string name="question10">Rabat est la capitale du maroc ?</string>
    <string name="question11">Le bresil accueillera la coupe du monde 2018 ? </string>
    <string name="question12">Macron est l\'actuel président de la france ?</string>
    <string name="question13">Ronaldo est le plus riche des footbaleurs du monde?</string>

</resources>

                                

5- الملف color.xml

فالمجلد res/values كاين ملف colors.xml هادا فيه les couleurs لي غادي نحتاجو الكود ديال الملف هو :

                                    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#c0392b</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
    <color name="textColor">#ecf0f1</color>
    <color name="vraiColor">#27ae60</color>
    <color name="fauxColor">#c0392b</color>
</resources>
                                


بحث في الموقع


إشترك للتوصل بالجديد