Executar um comando no seekbar?

0 respostas
A

Pessoal preciso executar um comando de troca de imagem com um controle de velocidade num seekbar, mais não estou conseguindo.

Fiz assim
private long longTemp = 0;
private Runnable mRun = new Runnable() {
		public void run() {
			try {
				count = count;
				if (count == 17) {
					count = 0;
				} else {
					textView.setText("Contagem=" + count);

					switch (count) {
					case 0:
						p1.setBackgroundResource(R.drawable.btnverde);
						break;
					case 1:
						p1.setBackgroundResource(R.drawable.btnred);
						p2.setBackgroundResource(R.drawable.btnverde);
						
						break;
					case 2:
						p2.setBackgroundResource(R.drawable.btnred);
						p3.setBackgroundResource(R.drawable.btnverde);
						break;
					case 3:
						p3.setBackgroundResource(R.drawable.btnred);
						p4.setBackgroundResource(R.drawable.btnverde);
						
						break;
					case 4:
						p4.setBackgroundResource(R.drawable.btnred);
						p5.setBackgroundResource(R.drawable.btnverde);
						break;
					case 5:
						p5.setBackgroundResource(R.drawable.btnred);
						p6.setBackgroundResource(R.drawable.btnverde);
						
						break;
					case 6:
						p6.setBackgroundResource(R.drawable.btnred);
						p7.setBackgroundResource(R.drawable.btnverde);
						break;
					case 7:
						p7.setBackgroundResource(R.drawable.btnred);
						p8.setBackgroundResource(R.drawable.btnverde);
						
						break;
					case 8:
						p8.setBackgroundResource(R.drawable.btnred);
						p9.setBackgroundResource(R.drawable.btnverde);
						
						break;
					case 9:
						p9.setBackgroundResource(R.drawable.btnred);
						p10.setBackgroundResource(R.drawable.btnverde);
						
						break;
					case 10:
						p10.setBackgroundResource(R.drawable.btnred);
						p11.setBackgroundResource(R.drawable.btnverde);
						break;
					case 11:
						p11.setBackgroundResource(R.drawable.btnred);
						p12.setBackgroundResource(R.drawable.btnverde);
						
						break;
					case 12:
						p12.setBackgroundResource(R.drawable.btnred);
						p13.setBackgroundResource(R.drawable.btnverde);
						break;
					case 13:
						p13.setBackgroundResource(R.drawable.btnred);
						p14.setBackgroundResource(R.drawable.btnverde);
						
						break;
					case 14:
						p14.setBackgroundResource(R.drawable.btnred);
						p15.setBackgroundResource(R.drawable.btnverde);
						break;
					case 15:
						p15.setBackgroundResource(R.drawable.btnred);
						p16.setBackgroundResource(R.drawable.btnverde);
						
						break;
					case 16:
						p16.setBackgroundResource(R.drawable.btnred);
						p1.setBackgroundResource(R.drawable.btnverde);
						break;
					case 18:
						btnTodosRed();
						break;
					}
				}
				count++;
				if (count <= 17) {
					mHandler.postDelayed(mRun, longTemp);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	};
e chamando no comando do seekbar assim
/** seekbar tempo */
		tempo = (SeekBar) findViewById(R.id.seekbarTempo);
		seekBarValue.setText(tempo.getProgress() + "/" + tempo.getMax());
		progress = 100;
		tempo.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
			@Override
			public void onProgressChanged(SeekBar seekBar, int progresValue,
					boolean fromUser) {
				progress = progresValue;
			}

			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {

			}

			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				seekBarValue.setText(progress + "/" + seekBar.getMax());
				/** atualiza o tempo do pisca */
				mHandler.removeCallbacks(runnable);
				count = count;
				longTemp = progress;				
				mHandler.post(mRun);
			}
		});
Mais o tempo aqui
mHandler.postDelayed(mRun, longTemp);
Esta muito devagar, ja tentei incluir direto um valor para ver se melhorava a velocidade para ir mais rápido e não consigo.
/** tratar os leds de piscar */
		btnPlay = (Button) findViewById(R.id.btnplay);
		btnPlay.setOnClickListener(new View.OnClickListener() {
			public void onClick(View arg0) {
				trans = new TranslateAnimation(0, 3, 3, 0);
				trans.setDuration(100);
				btnPlay.startAnimation(trans);
				new Thread() {
					public void run() {
						try {
							textView = (TextView) findViewById(R.id.textfactor);
							count = 0;
							// progress = 50;
							longTemp = 10; // progress;
							mHandler.post(mRun);
						} catch (Exception e) {

						}
					}
				}.start();
			}
		});

		btnStop = (Button) findViewById(R.id.btnstop);
		btnStop.setOnClickListener(new View.OnClickListener() {
			public void onClick(View arg0) {
				trans = new TranslateAnimation(0, 3, 3, 0);
				trans.setDuration(100);
				btnStop.startAnimation(trans);
				new Thread() {
					public void run() {
						try {
							count = 18;
							mHandler.post(mRun);
						} catch (Exception e) {

						}
					}
				}.start();
			}
		});

Tem uma outra forma de fazer isso ai com um controle de velocidade que eu posso deixar mais rápido a ação? Assim vou aumentando a velocidade no seekbar e as imagens vão dando um efeito de piscar mais rápido também.

Obrigado.

Criado 23 de maio de 2014
Respostas 0
Participantes 1