gpt4 book ai didi

java - 如何为我的 Android 锻炼应用程序做组训练?

转载 作者:行者123 更新时间:2023-12-01 17:30:40 26 4
gpt4 key购买 nike

首先感谢您阅读本文。受 Yaga 应用程序教程的启发,我为我的团队制作了一款锻炼应用程序。我的问题是在 Yaga 应用程序中你没有很多组,只有一组,我想添加组。我试图制作一个 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();

}

非常感谢,史蒂芬

最佳答案

我阅读了您的要求,根据您的要求,您想逐一显示每组并重复它们。

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


}

关于java - 如何为我的 Android 锻炼应用程序做组训练?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61128480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com