Как скрывать / прерывать кнопку, чтобы избегать того, чтобы на него нажали?

У меня есть большая маленькая проблема, у меня есть layout с 2 кнопками, "инициализироваться" и "timers" и 3 параметра, которые нужно вводить, (числа ночных обходов, минуты и отдых) однажды введенный эта стоимость ты даешь ему инициализироваться и начни обратный счет, я схватил простого. То, что он перемещает, что с тех пор, как ты даешь ему инициализироваться и он начинает обратный счет есть аудио, которое продолжается 10 секунд, и если пользователь clicka кнопка инициализироваться в этих 10 секундах, когда он начинает обратный счет, линуется, и много.

То, что я нашел, это 2 решения: заставлять скрывать кнопку инициализироваться с View.GONE или заставлять один появляться dialog сверху чтобы избегать того, чтобы usario смог clikarlo., но Я НЕ СПОСОБЕН способствовать тому, чтобы он это переместил перед аудио: как я это делаю? я попробовал все в основных зонах.

ПОМОЩЬ:

Функция начинания аудио называется public void estamos_contigo() это кнопки start он iniciar.setOnClickListener(new View.OnClickListener().. и функция, что способствует тому, чтобы программа ждала 10 секунд пока он звучит, аудио, public void esperar(int seconds) . Я могу предоставлять, что queráis, я знаю, что он очень длинный, и я провожу более 5 длинных часов попробованным делать это без успеха.

Спасибо заранее.

public class Three_fragment extends Fragment implements View.OnClickListener {

private TextView crono;
private TextView View2;
private TextView View3;
private TextView View4;

private ImageView spotify;

private Button iniciar;
private Button ajustar;
private Button detener;
private Button asaltos;
private Button user_minutos;
private Button des_segundos;


private Button incrementar;

private static final String FORMAT = "%02d:%02d:%02d";

//Asaltos
private int segundos;
private int minutos;
private int numero_asaltos;

//Tiempos
private int tiempo;
private int tiempo1;
private int tiempo_descanso;
private int tiempo_descanso1;
private int auxiliar;

private CountDownTimer timer;

//El onCreateView es el metodo que nos enlaza el .java con el fragment o xml
//Se implementa de este modo
public View onCreateView(LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.three_tab, container, false);

    getActivity().setTheme(R.style.AppTheme);
    getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    //En los fragments tenemos que instanciar los objetos aqui
    if (v != null) {
        crono = (TextView) v.findViewById(R.id.crono);
        //Botones
        iniciar = (Button) v.findViewById(R.id.iniciar);
        ajustar = (Button) v.findViewById(R.id.ajustar);
        detener = (Button) v.findViewById(R.id.detener);
        asaltos = (Button) v.findViewById(R.id.button4);
        user_minutos = (Button) v.findViewById(R.id.button7);
        des_segundos = (Button) v.findViewById(R.id.button8);

        //Componentes de la interfaz
        View2 = (TextView) v.findViewById(R.id.textView2);
        View3 = (TextView) v.findViewById(R.id.textView3);
        View4 = (TextView) v.findViewById(R.id.textView4);

        spotify = (ImageView) v.findViewById(R.id.spotify);

        spotify.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    Intent intencion = getActivity().getPackageManager().getLaunchIntentForPackage("com.spotify.music");
                    startActivity(intencion);
                }catch (Exception e){
                    Toast.makeText(getActivity(), "Instala Spotify para acceder a tu playlist", Toast.LENGTH_SHORT).show();
                }
            }
        });
        asaltos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setNumberAsaltos();
            }
        });
        user_minutos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setDuracionAsaltos();
            }
        });
        des_segundos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {                   setDuracionDescansos(); }
        });

        //Cambiamos las fuentes
        String font_path = "fonts/TitilliumWeb-BoldItalic.ttf";
        Typeface TF = Typeface.createFromAsset(getActivity().getAssets(),font_path);
        View2.setTypeface(TF);
        View3.setTypeface(TF);
        View4.setTypeface(TF);
        iniciar.setTypeface(TF);
        ajustar.setTypeface(TF);
        detener.setTypeface(TF);
        asaltos.setTypeface(TF);
        user_minutos.setTypeface(TF);
        des_segundos.setTypeface(TF);
        crono.setTypeface(TF);

//ЗДЕСЬ ЭТО ВАЖНАЯ ТОЧКА, ГДЕ ОН НАЧИНАЕТ ИНИЦИАЛИЗИРОВАТЬСЯ

        iniciar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (numero_asaltos == 0) {
                    Toast.makeText(getActivity(), "Especifica el número de asaltos", Toast.LENGTH_SHORT).show();
                    return;
                }
                if (minutos == 0 || segundos == 0) {
                    Toast.makeText(getActivity(), "Especifica la duración del entrenamiento", Toast.LENGTH_SHORT).show();

                    return;
                }



                    //A partir de aquí trabajamos con todos los datos
                tiempo = (minutos * 60);
                tiempo1 = tiempo;
                tiempo_descanso = segundos;
                tiempo_descanso1 = tiempo_descanso;

                //Cambiamos los editText por el cronometro
                asaltos.setVisibility(View.INVISIBLE);
                user_minutos.setVisibility(View.INVISIBLE);
                des_segundos.setVisibility(View.INVISIBLE);
                View2.setVisibility(View.INVISIBLE);
                View3.setVisibility(View.INVISIBLE);
                View4.setVisibility(View.INVISIBLE);
                crono.setVisibility(View.VISIBLE);

                iniciar.setVisibility(View.INVISIBLE);
                detener.setVisibility(View.VISIBLE);

                try {
                    //SONIDO:falta campana y la cuenta atrás
                    AudioManager am2 = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
                    int result = am2.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
                    if(result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED){

//ЗДЕСЬ ЭТО ВАЖНАЯ ТОЧКА, ГДЕ Я ДЕЛАЮ ПРИЗЫВ К АУДИО, И ХОЧУ, ЧТОБЫ//ПЕРЕД ЭТИМ АУДИО ОН СКРЫЛ КНОПКУ, ПОЭТОМУ ЭТО ПОМЕСТИЛ ПЕРЕД ЭТОЙ//ИНСТРУКЦИЮ ЕСЛИ УСПЕХ.

                        estamos_contigo();
                    }else  {
                        Toast.makeText(getActivity(), "Deshabilitada la opción de control de audio", Toast.LENGTH_SHORT).show();
                    }

                    esperar(10);
                    campana();
                    am2.abandonAudioFocus(null);
                    asalto();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        detener.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                detener.setVisibility(GONE);
                iniciar.setVisibility(View.VISIBLE);
                timer.cancel();
            }
        });

        ajustar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    timer.cancel();
                    asaltos.setVisibility(View.VISIBLE);
                    user_minutos.setVisibility(View.VISIBLE);
                    des_segundos.setVisibility(View.VISIBLE);
                    View2.setVisibility(View.VISIBLE);
                    View3.setVisibility(View.VISIBLE);
                    View4.setVisibility(View.VISIBLE);
                    crono.setVisibility(GONE);

                    iniciar.setVisibility(View.VISIBLE);
                    detener.setVisibility(GONE);
                }catch (Exception e){
                    Toast.makeText(getActivity(), "Ajusta los timers", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
    return v;
}

public void asalto() throws InterruptedException {

    timer = new CountDownTimer(tiempo1 * 1000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            crono.setText("" + String.format(FORMAT, TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
                    TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
                    TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));


        }
        @Override
        public void onFinish() {
            if (numero_asaltos - 1 != auxiliar) {
                try {
                    auxiliar = auxiliar + 1;
                    //SONIDO
                    AudioManager am4 = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
                    int result = am4.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
                    if(result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED){
                        raw_acabado();
                    }else  {
                        Toast.makeText(getActivity(), "Deshabilitada la opción de control de audio", Toast.LENGTH_SHORT).show();
                    }
                    esperar(3);
                    am4.abandonAudioFocus(null);
                    descanso();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }else{
                auxiliar = 0;
                //SONIDO
                AudioManager am1 = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
                int result = am1.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
                if(result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED){
                    final_entrenamiento();
                }else  {
                    Toast.makeText(getActivity(), "Deshabilitada la opción de control de audio", Toast.LENGTH_SHORT).show();
                }
                timer.cancel();
            }
        }
    };
    timer.start();
}

public void descanso() throws InterruptedException {

    timer = new CountDownTimer(tiempo_descanso1 * 1000, 1000) {

        @Override
        public void onTick(long millisUntilFinished) {

            crono.setText("" + String.format(FORMAT, TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
                    TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
                    TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
        }
        @Override
        public void onFinish() {

            try {
                AudioManager am = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
                int result = am.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
                if(result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED){
                    //SONIDO
                    preparado_siguiente();
                }else  {
                    Toast.makeText(getActivity(), "Deshabilitada la opción de control de audio", Toast.LENGTH_SHORT).show();
                }
                esperar(7);
                campana();
                am.abandonAudioFocus(null);
                asalto();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
    timer.start();
}
//A partir de aquí introduciremos todas las funciones que reproduzcan los mensajes
//de la parte del cronómetro

public void final_entrenamiento() {
    MediaPlayer sonido = MediaPlayer.create(this.getActivity(), R.raw.finalentrenamiento);
    sonido.start();
}

public void preparado_siguiente() {
    MediaPlayer sonido = MediaPlayer.create(this.getActivity(), R.raw.preparadosiguiente);
    sonido.start();
}

public void raw_acabado() {
    MediaPlayer sonido = MediaPlayer.create(this.getActivity(), R.raw.rawnacabado);
    sonido.start();
}

//ЗДЕСЬ ЭТО ВАЖНАЯ ТОЧКА, ГДЕ ОН НАЧИНАЕТ АУДИО, НЕПОСРЕДСТВЕННО ПЕРЕД ТЕМ, КАК//ОН НАЧАЛ ВОСТОК АУДИО, ГДЕ Я ХОЧУ СКРЫТЬ КНОПКУ, "инициализироваться"

public void estamos_contigo() {

    MediaPlayer sonido = MediaPlayer.create(getActivity(), R.raw.cuenta_atras);
    sonido.start();
}

public void campana() {
    MediaPlayer sonido = MediaPlayer.create(this.getActivity(), R.raw.campana_3s);
    sonido.start();
}

public void esperar(int seconds){
    try{



        Thread.sleep(seconds*1000);

    }catch (Exception e){}
}



//Esto es lo que empleamos con los dialogs
private void setNumberAsaltos() {
    NumberPicker mynumberPicker = new NumberPicker(getActivity());
    //mynumberPicker.setBackgroundColor();
    //mynumberPicker.setScrollBarSize();
    //mynumberPicker.setBackgroundColor();
    mynumberPicker.setMaxValue(15);
    mynumberPicker.setMinValue(0);

    NumberPicker.OnValueChangeListener myValChangedListener = new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            asaltos.setText("" + newVal);
            numero_asaltos = newVal;
        }
    };
    mynumberPicker.setOnValueChangedListener(myValChangedListener);
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()).setView(mynumberPicker);
    builder.setTitle(R.string.num_asaltos_f).setIcon(R.drawable.rudeboys_icon);
    builder.setPositiveButton(R.string.listo, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        }
    });
    builder.show();
}

private void setDuracionAsaltos() {
    NumberPicker mynumberPicker = new NumberPicker(getActivity());
    mynumberPicker.setMaxValue(15);
    mynumberPicker.setMinValue(0);

    NumberPicker.OnValueChangeListener myValChangedListener = new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            user_minutos.setText(newVal + " min");
            minutos = newVal;
        }
    };
    mynumberPicker.setOnValueChangedListener(myValChangedListener);
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()).setView(mynumberPicker);
    builder.setTitle(R.string.dur_asaltos_f).setIcon(R.drawable.rudeboys_icon);
    builder.setPositiveButton(R.string.listo, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        }
    });
    builder.show();
}

private void setDuracionDescansos() {
    NumberPicker mynumberPicker = new NumberPicker(getActivity());
    mynumberPicker.setMaxValue(59);
    mynumberPicker.setMinValue(0);

    NumberPicker.OnValueChangeListener myValChangedListener = new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            des_segundos.setText(newVal + " sec");
            segundos = newVal;
        }
    };
    mynumberPicker.setOnValueChangedListener(myValChangedListener);
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()).setView(mynumberPicker);
    builder.setTitle(R.string.dur_descansos_f).setIcon(R.drawable.rudeboys_icon);
    builder.setPositiveButton(R.string.listo, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        }
    });
    builder.show();
}

public void onClick(View v) {
}

}

-1
задан 26.01.2017, 15:30
0 ответов