2016-06-29 59 views
0

我有以下MainActivity xml文件AdView中不顯示(可能隱藏在其它視圖背後)

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 

    xmlns:ads="http://schemas.android.com/apk/res-auto" 

    android:id="@+id/mainLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.retrochicken.slide.MainActivity"> 

    <com.google.android.gms.ads.AdView 
     android:id="@+id/adView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="bottom|start" 
     ads:adSize="BANNER" 
     ads:adUnitId="@string/banner_ad_unit_id"> 
    </com.google.android.gms.ads.AdView> 

</FrameLayout> 

然後在MainActivity java類OnCreate方法

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

     setContentView(R.layout.activity_main); 

     FrameLayout mainLayout = (FrameLayout) findViewById(R.id.mainLayout); 
     mainLayout.addView(new GamePanel(this)); 

     MobileAds.initialize(getApplicationContext(), "ca-app-pub-3940256099942544~3347511713"); 

     AdView mAdView = (AdView) findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     mAdView.loadAd(adRequest); 

     mAdView.bringToFront(); 
    } 

我想有我GamePanel類,它是一個SurfaceView,在整個屏幕上繪製一個畫布,但在其頂部的屏幕底部顯示一個廣告條。目前我看不到任何廣告,這可能是一些其他問題,但我猜測它顯示在GamePanel正在繪製的背後。

編輯
我已經證實,它是GamePanel上AdView的頂部繪製的問題,我認爲這可能是我是怎麼處理的繪畫方法。在GamePanel我有一個方法draw(Canvas canvas)繪製所有的遊戲對象在畫布上,我然後發佈使用

try { 
       canvas = this.surfaceHolder.lockCanvas(); 
       synchronized (surfaceHolder) { 
        this.gamePanel.update(timeMillis); 
        this.gamePanel.draw(canvas); 
       } 
      } catch(Exception e) { 

      } finally { 
       if(canvas != null) { 
        try { 
         surfaceHolder.unlockCanvasAndPost(canvas); 
        } catch(Exception e) {e.printStackTrace();} 
       } 
      } 
,其被包含在while循環重複(在另一個線程)

畫布到屏幕,其控制遊戲幀。

回答

0

基於信息here,或許你可以嘗試

mAdView.setWillNotDraw(false); 
+0

它沒有看起來工作,但我現在認爲這是一個問題,我如何繪製我的畫布,而不是分層。 –

+0

@ wfish454教程用新的嘗試更新了答案 – jeyoor