2010-10-29 13 views
1

Je suis nouveau à la programmation dans Android. J'ai suivi les instructions et créer une bannière admob. Comment puis-je le faire apparaître à certains intervalles, et le faire disparaître si je veux? Par exemple, la bannière admob peut monter et descendre au bas de l'écran quand elle le veut. Merci.Admob dans android. Comment faire apparaître et disparaître

Edit:

Je sais que je peux appeler adView.setVisibility(View.GONE); pour faire les annonces apparaissent et disparaissent, mais lorsque je tente d'écrire dans un fil pour le faire apparaître et disparaître avec des intervalles, il se bloque juste là avec un écran noir.

Ou est-il possible que l'admob puisse faire apparaître et disparaître son annonce à intervalles réguliers?

Voici comment j'appelle le fil.

loadAdmob = new asyncAdmobProc(); 
loadAdmob.execute(); 
loadAdmob.doInBackground();//asyncAdmobProc(); 

Le code:

//wakes up the admob 
private class asyncAdmobProc extends AsyncTask<Integer , Void, Integer> { 

    private boolean bconthread=true; 
    protected Integer doInBackground(Integer... Params) { 
     //wakes up and disable admob 

     /*AdManager.setTestDevices(new String[] { 
       AdManager.TEST_EMULATOR, // Android emulator 
       "E83D20734F72FB3108F104ABC0FFC738", // My T-Mobile G1 Test Phone 
       });//*/ 

     adView = (AdView)findViewById(R.id.articleList_ads); 
     adView.requestFreshAd(); 
     adView.setVisibility(View.GONE); 

     //while(bconthread){ 
      adView.requestFreshAd(); 
      ShowAd(); 

      postDelayed(); 

      //HideAd(); 

      postDelayed(); 

     //} 

     //call this to delete all bitmaps associated with the ad 
     adView.cleanup(); 
     return 0; 
    } 
    private void HideAd() 
    { 
     // Hide the ad. 
     adView.setVisibility(View.GONE); 

     // Fade the ad in over 4/10 of a second. 
     AlphaAnimation animation = new AlphaAnimation(0.0f, 1.0f); 
     animation.setDuration(400); 
     animation.setFillAfter(true); 
     animation.setInterpolator(new AccelerateInterpolator()); 
     adView.startAnimation(animation);//*/ 

    } 
    private void ShowAd() 
    { 
     // Unhide the ad. 
     adView.setVisibility(View.VISIBLE); 

     // Fade the ad in over 4/10 of a second. 
     AlphaAnimation animation = new AlphaAnimation(0.0f, 1.0f); 
     animation.setDuration(400); 
     animation.setFillAfter(true); 
     animation.setInterpolator(new AccelerateInterpolator()); 
     adView.startAnimation(animation);//*/ 
    } 
} 

Répondre

6
  1. Vous ne devez pas appeler AsyncTask.doInBackground, cette méthode sera appelée par AsyncTask lui-même.
  2. AsyncTask.doInBackground est appelée dans un autre thread à la place du thread de l'interface utilisateur, vous ne souhaiterez peut-être pas démarrer une animation, ce qui entraînera des problèmes sur l'interface utilisateur.
  3. Il y a beaucoup de façons de faire apparaître et disparaître la vue avec des intervalles, en utilisant AsyncTask n'est pas l'un d'entre eux, je pense. Voici un exemple de code qui utilise Handler pour l'archiver.
public MyActivity extends Activity { 

     private static final int SHOW = 1; 
     private static final int HIDE = -1; 

     private View adView; 

     private Handler handler = new Handler() { 
      public void handleMessage(Message msg) { 
       adView.setVisibility(msg.what);     
      } 
     } 

     private void startTriggerThread() { 
      new Thread() { 
       boolean show = false; 
       public void run() { 
        while (true) { 
         if (show) { 
          handler.sendEmptyMessage(View.GONE); 
         } else { 
          handler.sendEmptyMessage(View.VISIBLE); 
         } 
         show = !show; 
         try { 
          Thread.sleep(INTERVALS); 
         } 
         catch (InterruptException e) { 
          // Ignore. 
         } 
        } 
       } 
      }.start(); 
     } 

     // Other methods 
    }