2011-06-26 9 views
0

私のプログラムでは、ボタンは1つしかありません。最初にプログラムを押すとランダムな文字列が出力されます。ユーザーがプログラムを停止するためにもう一度押すと、私のプログラムは同じスロットマシンをランダムに(遅延)遅らせます。どうしたらいいですか?ランダムな文字列をスロットマシンのように見える方法

私のコードMediaPlayerの部分を無視

package com.Randomsentence; 

import java.util.Random; 
import android.app.Activity; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class Randomsentence extends Activity { 

    boolean showRandom = false; 
    TextView txt; 
    int time = 30; 
    int random; 
    public String[] myString; 
    Button bt1; 
    boolean check = false; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     txt = (TextView) findViewById(R.id.txt); 
     bt1 = (Button) findViewById(R.id.bt1); 
     Medaiplayer mp = new Medaiplayer(); 
     Mediaplayer mp2 = new Mediaplayer(); 
     mp = MediaPlayer.create(getApplicationContext(), R.raw.AudioFile1); 
     mp2 = MediaPlayer.create(getApplicationContext(), R.raw.AudioFile2); 
     bt1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       showRandom = !showRandom; 
       t = new Thread() { 

        public void run() { 
         try { 
          while (showRandom) { 
           mp.start(); 
           mp2.reset(); 
           mp2.prepare(); 
           sleep(1000); 
           handler.sendMessage(handler.obtainMessage()); 
          } 
          mp.reset(); 
          mp.prepare(); 
          mp2.start(); 

         } catch (Exception ex) { 
          ex.printStackTrace(); 
         } 
        } 
       }; 
       t.start(); 
      } 
     }); 
    } 
    // our handler 
    Handler handler = new Handler() { 

     public void handleMessage(Message msg) {//display each item in a single line 
      { 
       Random rgenerator = new Random(); 
       Resources res = getResources(); 
       myString = res.getStringArray(R.array.myArray); 
       String q = myString[rgenerator.nextInt(myString.length)]; 
       txt.setText(q); 

      } 
     } 
    }; 
} 
+2

'同じlottery'は意味がありません(遅延)ランダム遅いです。 – Atreys

+0

ボタンをもう一度押すと文字列がすぐに止まらないという意味です。それは同様のロッテリーを停止するのが遅くなります – user814154

+2

"宝くじ"とはどういう意味ですか?コードからわかる限り、これは宝くじとは関係ありません。 –

答えて

0

、私はそれがこのようであるべきだと思う:

package com.Randomsentence; 

import java.util.Random; 
import android.app.Activity; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.Randomsentence.R; 

public class Randomsentence extends Activity { 
    TextView txt; 
    int random; 
    public String[] myStrings; 
    Button bt1; 

    private static final int MESSAGE_RANDOM = 1; 
    private static final long MIN_INTERVAL = 500; 
    private static final long MAX_INTERVAL = 1500; 
    private static final long STEP = 60; 

    private long mInterval = 0; 
    private boolean mStarted = false; 

    private Random mRandom = new Random(); 

    private Handler mHandler = new Handler() { 

     @Override 
     public void handleMessage (Message msg) { 
      if(msg.what == MESSAGE_RANDOM) { 
       showRandomString(); 
       if(mStarted) { 
        this.sendEmptyMessageDelayed(MESSAGE_RANDOM, mInterval); 
       } else { 
        if(mInterval <= MAX_INTERVAL) { 
         this.sendEmptyMessageDelayed(MESSAGE_RANDOM, mInterval); 
         mInterval += STEP; 
        } else { 
         this.removeMessages(MESSAGE_RANDOM); 
         Toast.makeText(Randomsentence.this, "Stopped!", Toast.LENGTH_SHORT).show(); 
        } 
       } 
      } 
     } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     txt = (TextView) findViewById(R.id.txt); 
     bt1 = (Button) findViewById(R.id.bt1); 
     bt1.setOnClickListener(mBt1OnClick); 
     myStrings = getResources().getStringArray(R.array.myArray); 
    } 

    private void showRandomString() { 
     final int index = mRandom.nextInt(myStrings.length - 1); 
     txt.setText(myStrings[index]); 
    } 

    private OnClickListener mBt1OnClick = new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if(!mStarted) { 
       // Start 
       Toast.makeText(Randomsentence.this, "Started!", Toast.LENGTH_SHORT).show(); 
       mStarted = true; 
       mInterval = MIN_INTERVAL; 
       mHandler.removeMessages(MESSAGE_RANDOM); 
       mHandler.sendEmptyMessage(MESSAGE_RANDOM); 
      } else { 
       // Stop 
       mStarted = false; 
       Toast.makeText(Randomsentence.this, "Stoping...", Toast.LENGTH_SHORT).show(); 
      } 
     } 

    }; 

} 
+0

しかし、私も音が欲しいです。最初にボタンの音を押すと2番目のボタンを押すと別の音がアクティブになります。どのように追加できますか – user814154

+0

onClickの2つのトーストをMediaPlayerのものに置き換えてください。 –

+0

私はすでに編集しています。それは大丈夫ですか? – user814154

関連する問題