3

このウェブサイトは最高です。私はとても役に立ちます...私はAndroid appcationの作成の初心者です。ここで質問するのはこれが初めてです..私の質問は、テキストビューを5秒間だけ表示して非表示にする方法です..検索すると、いくつかのコードが見つかりましたが、使用方法がわかりませんでした。それは間違った方法で..だから、誰かが私にそれを行う方法の非常に簡単な例を教えてもらえますか?? 私は本当にあなたの助けに感謝します......>>(テキストが消えたくない、穴のテキストビューが消えてほしい)

4

6 に答える 6

12

AsyncTask の使用:

new AsyncTask<Void, Void, Void>()
{

  protected Void doInBackground(Void... params)
  {
    Thread.sleep(5000);                   // sleep 5 seconds
  }

  protected void onPostExecute (Void result)
  {
    // fade out view nicely
    AlphaAnimation alphaAnim = new AlphaAnimation(1.0f,0.0f);
    alphaAnim.setDuration(400);
    alphaAnim.setAnimationListener(new AnimationListener()
    {
     public void onAnimationEnd(Animation animation)
     {
       // make invisible when animation completes, you could also remove the view from the layout
       myTextView.setVisibility(View.INVISIBLE);
     }
    });

    myTextView.startAnimation(alphaAnim);


  }
}.execute();

または、もっと良いのは、アニメーションを使用することです:

編集済み(@pkkの提案に感謝):

// fade out view nicely after 5 seconds
AlphaAnimation alphaAnim = new AlphaAnimation(1.0f,0.0f);
alphaAnim.setStartOffset(5000);                        // start in 5 seconds
alphaAnim.setDuration(400);
alphaAnim.setAnimationListener(new AnimationListener()
{
 public void onAnimationEnd(Animation animation)
 {
   // make invisible when animation completes, you could also remove the view from the layout
   myTextView.setVisibility(View.INVISIBLE);
 }
});

myTextView.setAnimation(alphaAnim);
于 2013-06-21T19:43:32.060 に答える
6

タイマーを表示したい場合は、 CountDownTimerを使用するのが 1 つの方法です。

public void onCreate(...){
...
timer = new MyCountDown(5000, 1000);
}

private class MyCountDown extends CountDownTimer
{
    long duration, interval;
    public MyCountDown(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
        // TODO Auto-generated constructor stub
        start();
    }

    @Override
    public void onFinish() {
        textView1.setVisibility(View.INVISIBLE);    
    }

    @Override
    public void onTick(long duration) { 
             // could set text for a timer here     
    }   
}

TimerTaskを使用することもできます。

ここに良い例を含むSOの答えがありますTimerTask

他にもいろいろな方法があります。ドキュメントまたはSOを検索して、ニーズに最適なものを決定できます

TimerTask例で編集

  Timer t = new Timer(false);
  t.schedule(new TimerTask() {
  @Override
  public void run() {
       runOnUiThread(new Runnable() {
            public void run() {
                txt.setVisibility(View.INVISIBLE);
            }
        });
    }
}, 5000);
于 2013-06-21T19:43:51.363 に答える
3
        final TextView textView = new TextView(this);
        // add textView on some Layout
        textView.setText("Text or smth. from resource");        
        CountDownTimer timer = new CountDownTimer(5000, 1000) {

                        @Override
                        public void onTick(long millisUntilFinished) {
                        }

                        @Override
                        public void onFinish() {
                            textView .setVisibility(View.INVISIBLE); //(or GONE)
                            }
                    }.start();
于 2013-06-21T19:47:00.897 に答える
1

これを行うには、 HandlerRunnableを使用できます。

public class MainActivity extends Activity {
private Handler h;
TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txt=(TextView)findViewById(R.id.txt);
    Runnable r=new Runnable(){

        @Override 
        public void run() {
            // TODO Auto-generated method stub
            Log.e("bf", "fd");
            h.postDelayed(this, 500);
            if (txt.isShown()){
                txt.setVisibility(View.INVISIBLE);

            }
            else{
                txt.setVisibility(View.VISIBLE);
            }
        }

    };
    h=new Handler();
    h.post(r);
}
 }
于 2013-06-21T20:25:07.420 に答える