如何为我的Android锻炼应用程序设置设置?

时间:2020-04-09 19:06:44

标签: java android conditional-statements

首先感谢您阅读本文。 受瑜伽应用程序教程的启发,我为团队制作了一个健身应用程序。我的问题是在Yoga App中,您没有很多套,只有一套,我想添加套。我试图在ShowExercises中制作一个for(int i = 0; i < 50; i++),但是它没有用,我想重复练习,其余的重复练习,而不仅仅是练习。 这是我的代码,


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"));

    }
}

我的for代码:

        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();

    }

非常感谢, 斯特凡(Stéphane)

2 个答案:

答案 0 :(得分:0)

我已阅读您的要求,根据您的要求,您希望一一展示每个集合并重复它们。

您可以做的是为每个集合创建一个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();


    }

答案 1 :(得分:0)

我在initData()中添加了一个字符串值,该值是每个练习的集合数(换句话说,我希望我的showExercises()重复的次数),并且我想添加一个int值,如果此int值与字符串add int ++不对应,否则请转到其他练习 例如,字符串值set_number为3,我想创建一个等于0的int(或其他东西,这只是个主意)。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();
                }

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();
        }
    };

整个代码都在我的帖子上,非常感谢

相关问题