2013-06-21 1 views
1

этот сайт является лучшим, его помощь мне много ... Я новичок в создании Android-аппликации. Это мой первый раз, когда я задаю вопрос здесь. Мой вопрос заключается в том, как отобразить текстовое изображение всего за 5 секунд и заставить его исчезнуть. Когда я искал, я нашел несколько кодов, но я не знал, как его использовать, или, может быть, я используйте его не так. Так кто может дать мне очень простой пример, как это сделать? я действительно ценю вашу помощь ...... >> (Я не хочу, чтобы текст исчезнет, ​​я хочу, чтобы отверстие TextView исчезнуть)Как отобразить текстовое изображение в течение нескольких секунд, а затем сделать его невидимым?

+4

Вы можете использовать AsyncTask для удаления TextView из макета. Может быть, опубликовать код, который вы пробовали, и описать, как он терпит неудачу? – DevOfZot

+0

Если вы хотите показать Пользователю какую-либо информацию, такую ​​как «foobar deleted» или тому подобное, вы можете использовать класс «Toast». – Ridcully

+0

TextView txt = (TextView) findViewById (R.id.textView3); \t TimerTask задача = новый TimerTask() { \t @Override \t общественности недействительным запуска() { \t txt.setVisibility (View.INVISIBLE); \t} \t}; \t Таймер таймера = новый таймер(); \t timer.schedule (задача, 5000); \t Когда я пишу этот код через 5 секунд, приложение останавливается .. вы знаете этот messege «навсегда приложение как остановленное» >> Я ненавижу его .. Я думаю, что я сделал что-то неправильно –

ответ

5

Один из способов будет использовать CountDownTimer, если вы хотите, чтобы таймер показать

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.

Here is a SO answer с хорошим примером TimerTask

Существуют также различные другие способы. Вы можете осуществлять поиск через Docs или 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); 
+0

Спасибо вам большое. Мне нравится ваш код его простой –

10

Использование 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); 
+1

Почему вы изменили свой ответ? Мне очень понравилось решение« Анимация ». – Ridcully

+2

отредактированный ответ, чтобы показать анимацию только подход – CSmith

+0

Большое спасибо, это работает –

1
 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(); 
+0

Спасибо вам большое, также я использую этот код и его работу –

1

Вы можете использовать Handler и Runnable, чтобы сделать это.

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); 
} 
} 
+0

что я могу сказать ... спасибо всем за ваш помощь ^^ –