Как сделать наборы для моего android приложения тренировки? - PullRequest
0 голосов
/ 09 апреля 2020

во-первых, спасибо, что прочитали это. Я сделал приложение для моей команды, вдохновленное учебным пособием по йоге. Моя проблема в приложении для йоги, у вас не так много наборов, только один, и я хотел бы добавить наборы. Я пытался сделать for(int i = 0; i < 50; i++) в моих упражнениях ShowExercises, но это не сработало, и я хотел бы повторить упражнение, а остальные, а не только упражнение. Вот мой код,


import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.example.workout_sure.Database.SWADB;
import com.example.workout_sure.Model.Exercise;
import com.example.workout_sure.Utils.Common;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import me.zhanghai.android.materialprogressbar.MaterialProgressBar;

public class Daily_Training extends AppCompatActivity {

    Button btnStart;
    ImageView ex_image;
    TextView txtGetReady,txtCountdown,txtTimer,ex_name,detail_text;
    ProgressBar progressBar;
    LinearLayout layoutGetReady;


    int ex_id=0,limit_time=0;

    List<Exercise> list = new ArrayList<>();

    SWADB swaDB;


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

        initData();
        swaDB =  new SWADB(this);





        btnStart = (Button)findViewById(R.id.btnStart);

        ex_image = (ImageView)findViewById(R.id.detail_image);
        detail_text = (TextView)findViewById(R.id.detail_text);

        txtCountdown = (TextView)findViewById(R.id.txtCountdown);
        txtGetReady = (TextView)findViewById(R.id.txtGetReady);
        txtTimer = (TextView)findViewById(R.id.timer);
        ex_name = (TextView)findViewById(R.id.title);

        layoutGetReady = (LinearLayout)findViewById(R.id.layout_get_ready);

        progressBar = (MaterialProgressBar)findViewById(R.id.progressBar);

        //Set data
        progressBar.setMax(list.size());

        setExerciseInformation(ex_id);

        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(btnStart.getText().toString().toLowerCase().equals("commencer"))
                {
                    showGetReady();
                    btnStart.setText("fini");
                }
                else if(btnStart.getText().toString().toLowerCase().equals("fini"))
                {

                    if(swaDB.getSettingMode() == 0)
                        exercisesEasyModeCountDown.cancel();
                    if(swaDB.getSettingMode() == 1)
                        exercisesMediumModeCountDown.cancel();
                    if(swaDB.getSettingMode() == 2)
                        exercisesHardModeCountDown.cancel();


                    restTimeCountDown.cancel();

                    if(ex_id < list.size())
                    {
                        showRestTime();
                        ex_id++;
                        progressBar.setProgress(ex_id);
                        txtTimer.setText("");
                    }
                    else
                        showFinished();
                }
                else
                {
                    if(swaDB.getSettingMode() == 0)
                        exercisesEasyModeCountDown.cancel();
                    if(swaDB.getSettingMode() == 1)
                        exercisesMediumModeCountDown.cancel();
                    if(swaDB.getSettingMode() == 2)
                        exercisesHardModeCountDown.cancel();
                    restTimeCountDown.cancel();

                    if(ex_id < list.size())
                        setExerciseInformation(ex_id);
                    else
                        showFinished();
                }


            }
        });
    }

    private void showRestTime() {
        ex_image.setVisibility(View.INVISIBLE);
        btnStart.setText("Passer");
        btnStart.setVisibility(View.VISIBLE);
        txtTimer.setVisibility(View.INVISIBLE);
        detail_text.setVisibility(View.INVISIBLE);

        layoutGetReady.setVisibility(View.VISIBLE);

        restTimeCountDown.start();

        txtGetReady.setText("TEMPS DE REPOS");


    }

    private void showGetReady() {
        ex_image.setVisibility(View.INVISIBLE);
        btnStart.setVisibility(View.INVISIBLE);
        txtTimer.setVisibility(View.VISIBLE);
        detail_text.setVisibility(View.INVISIBLE);




        layoutGetReady.setVisibility(View.VISIBLE);

        txtGetReady.setText("PREPARE TOI");
        new CountDownTimer(6000,1000)
        {

            @Override
            public void onTick(long millisUntilFinished) {
                txtCountdown.setText(""+(millisUntilFinished/1000));
            }

            @Override
            public void onFinish() {
                showExercises();
            }
        }.start();

    }

    private void showExercises() {
        if(ex_id < list.size())  //list size y'a ts les exos
        {

                ex_image.setVisibility(View.VISIBLE);
                btnStart.setVisibility(View.VISIBLE);
                layoutGetReady.setVisibility(View.INVISIBLE);
                detail_text.setVisibility(View.VISIBLE);

                if (swaDB.getSettingMode() == 0)
                    exercisesEasyModeCountDown.start();
                if (swaDB.getSettingMode() == 1)
                    exercisesMediumModeCountDown.start();
                if (swaDB.getSettingMode() == 2)
                    exercisesHardModeCountDown.start();

                //Set Data youno

                ex_image.setImageResource(list.get(ex_id).getImage_id());
                ex_name.setText(list.get(ex_id).getName());
                detail_text.setText(list.get(ex_id).getDetail());



        }
        else
            showFinished();

    }



    private void showFinished() {

        ex_image.setVisibility(View.INVISIBLE);
        btnStart.setVisibility(View.INVISIBLE);
        txtCountdown.setVisibility(View.INVISIBLE);
        layoutGetReady.setVisibility(View.VISIBLE);
        detail_text.setVisibility(View.INVISIBLE);
        progressBar.setVisibility(View.INVISIBLE);


        txtGetReady.setText("FINISHED !!!");
        txtCountdown.setText("Félicitations ! \n Tu as fini ton entraînement ;) ");
        txtCountdown.setTextSize(20);

        //Sauvegarder le workout de fou tavusa dans la db
        swaDB.saveDay(""+ Calendar.getInstance().getTimeInMillis());
    }

    // Countdown

    CountDownTimer exercisesEasyModeCountDown = new CountDownTimer(Common.TIME_LIMIT_EASY,1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            txtTimer.setText(""+1/1000);
        }

        @Override
        public void onFinish() {
            if(ex_id < list.size() -1)
            {
                ex_id++;
                progressBar.setProgress(ex_id);
                txtTimer.setText("");


                setExerciseInformation(ex_id);
                btnStart.setText("Commencer");

            }
            else
            {
                showFinished();
            }
        }
    };
    CountDownTimer exercisesMediumModeCountDown = new CountDownTimer(Common.TIME_LIMIT_EASY,1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            txtTimer.setText(""+1/1000);
        }

        @Override
        public void onFinish() {
            if(ex_id < list.size() -1)
            {
                ex_id++;
                progressBar.setProgress(ex_id);
                txtTimer.setText("");


                setExerciseInformation(ex_id);
                btnStart.setText("Commencer");

            }
            else
            {
                showFinished();
            }
        }
    };
    CountDownTimer exercisesHardModeCountDown = new CountDownTimer(Common.TIME_LIMIT_EASY,1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            txtTimer.setText(""+1/1000);
        }

        @Override
        public void onFinish() {
            if(ex_id < list.size() -1)
            {
                ex_id++;
                progressBar.setProgress(ex_id);
                txtTimer.setText("");


                setExerciseInformation(ex_id);
                btnStart.setText("Commencer");

            }
            else
            {
                showFinished();
            }
        }
    };


    CountDownTimer restTimeCountDown = new CountDownTimer(10000,1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            txtCountdown.setText(""+(millisUntilFinished/1000));
        }

        @Override
        public void onFinish() {
            setExerciseInformation(ex_id);
            showExercises();
        }
    };


    private void setExerciseInformation(int id) {
        ex_image.setImageResource(list.get(id).getImage_id());
        ex_name.setText(list.get(id).getName());
        detail_text.setText(list.get(id).getDetail());
        btnStart.setText("Commencer");

        ex_image.setVisibility(View.VISIBLE);
        btnStart.setVisibility(View.VISIBLE);
        txtTimer.setVisibility(View.VISIBLE);
        detail_text.setVisibility(View.VISIBLE);


        layoutGetReady.setVisibility(View.INVISIBLE);



    }


    private void initData() {

        list.add(new Exercise(R.drawable.test,"Positionne-toi face au sol, les mains hauteur d’épaules. Les jambes ne sont pas loin derrière. Rapproche tes jambes de manière à former un angle avec ton corps.\n" +
                "Ton dos doit rester bien droit et ta tête doit être dans le même alignement que ton dos pendant toute l’exécution du mouvement.\n" +
                "Descends en PLONGEANT EN AVANT tout en restant le dos droit  puis repousse fermement pour remonter.\n" ," Pompes Pike"));
        list.add(new Exercise(R.drawable.clappushups, "Mets toi en position pompe (dos droit, bien gainé, bras tendus), descends jusqu'à ce que tes pecs touchent le sol puis pousse de façon explosive de sorte à faire décoller ton corps loin du sol et pouvoir claquer dans tes mains.", "Pompes claquées"));
        list.add(new Exercise(R.drawable.dips, "En appui sur les barres, buste légèrement penché vers l’avant , fléchis les bras jusqu’à ce que ceux-ci se retrouvent à l’horizontal , puis pousse pour revenir à la position initiale.Reste toujours gainé.", "Dips"));
        list.add(new Exercise(R.drawable.diamondpushups, "Mets tes mains en prise serrée ou en forme de triangle, comme sur la video ci-dessus, fais ton maximum de pompes.\n Sans prendre de repos, écarte tes mains et fais ton maximum de répétitions. \n Enfin, reprends une prise basique avec tes mains et fais ton maximum de pomeps.", "Superset Pompes(Diamant-Ecartées-Basiques)"));
        list.add(new Exercise(R.drawable.jumpsquats, "Enchaîne un squat avec un saut.", "Squats Sautés"));

    }
}

Мой код для:

        if(ex_id < list.size())  //list size y'a ts les exos
        {
            for (int i = 0; i < 3; i++) {

                ex_image.setVisibility(View.VISIBLE);
                btnStart.setVisibility(View.VISIBLE);
                layoutGetReady.setVisibility(View.INVISIBLE);
                detail_text.setVisibility(View.VISIBLE);


                //Set Data youno

                ex_image.setImageResource(list.get(ex_id).getImage_id());
                ex_name.setText(list.get(ex_id).getName());
                detail_text.setText(list.get(ex_id).getDetail());

                showRestTime();
            }

        }
        else
            showFinished();

    }

Огромное спасибо, Стефан

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Я добавил строковое значение в свой initData (), которое является количеством наборов для каждого упражнения (другими словами, сколько раз я хочу, чтобы мой showExercises () повторился), и я хочу добавить int, и если это значение int не соответствует строке, добавьте int ++, иначе просто go к другому упражнению. Например, строковое значение set_number равно 3, я хочу создать int (или другую вещь, это просто идея), равную 0. После restTimeCountdown, если int не равно 3, int ++, иначе продолжить мой код. Вот код, о котором я думал, но в нем отсутствует конфигурация int, которую я не знаю, как сделать

Часть кнопки startButton, которая нам нужна в этом случае, с изменениями, о которых я подумал:

                else if(btnStart.getText().toString().toLowerCase().equals("fini"))
                {


                    if(ex_id < list.size())
                    {
                        // Int configuration that I don't know how to do

                        if (int != //the set_number value we can recuperate with getSetValue but I don't know how to recuperate it in an int )
                        {
                            showRestTime();
                        }
                        else
                        {


                            showRestTime();
                            ex_id++;
                            progressBar.setProgress(ex_id);
                            txtTimer.setText("");
                        }
                    }
                    else
                        showFinished();
                }

the showRestTime:

 private void showRestTime() {
        ex_image.setVisibility(View.INVISIBLE);
        btnStart.setText("passer");
        btnStart.setVisibility(View.VISIBLE);
        txtTimer.setVisibility(View.INVISIBLE);
        detail_text.setVisibility(View.INVISIBLE);

        layoutGetReady.setVisibility(View.VISIBLE);

        restTimeCountDown.start();

        txtGetReady.setText("TEMPS DE REPOS");


    }

restTimeCountDown:


  CountDownTimer restTimeCountDown = new CountDownTimer(10000,1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            txtCountdown.setText(""+(millisUntilFinished/1000));
        }

        @Override
        public void onFinish() {

            setExerciseInformation(ex_id);
            showExercises();
        }
    };

Весь код на моём посте, большое спасибо

0 голосов
/ 11 апреля 2020

Я прочитал ваши требования. В соответствии с вашим требованием вы хотите показывать каждый набор по одному и повторять их также.

что вы можете сделать, это создать CountDownTimer установленный период времени для каждого вашего набора затем после завершения одного набора перейдите к следующему, а когда ваш setsList достигнет последнего сброса или повторите таймер.

Пример кода

  int counter=-1;

    CountDownTimer timer=null;
    ArrayList<Foo> setsArrayList=null;


    // foo is generic class(add your model for sets) , and setFoo is object that contains single set details. 
    void startTimer(Foo setFoo) {

      if(null!=timer){
          timer.cancel();
       }



    timer=new CountDownTimer(totalTime, setFoo.singleSetTime) {

         public void onTick(long millisUntilFinished) {
            counter++;

            updateUI(setsArrayList.get[counter])

         }

         public void onFinish() {
            //"done!" or repeat all sets if you want to
            counter=0;
         updateUI(setsArrayList.get[counter])
         }
      }.start();


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