Androidアプリ用の広告は、SDKとして、Viewを作成するjarが用意され、XMLのレイアウトファイルに設定するのが主流みたいですね。
PhoneGapで作成したアプリの場合、res/layout/main.xmlに設定しても反映されないみたいです。
そういえば、App.javaの
setContentView(R.layout.main);
とってしまいますものね。
AdMobを入れたら動かなくなっでも、述べましたが、PhoneGapのandroidアプリにAdMobを設定する方法が、GoogleのガイドでJavaによる追加方法があり、一応追加できました。(AVDとかでは、上手く動くのですが、私にHTC Jでは、DBのクリア問題が発生しています。)
XMLによる追加の方法などもあり、PhoneGapのアプリでも、XMLで指定した広告(View)を表示できるのではないかと調査しました。
LayoutInflaterというのを使って、XMLのレイアウトを繰り返し部分を別のXMLファイルを使っているのを見つけました。
LayoutInflaterを使うと、通常setContentView()で設定したレイアウトXMLファイルしか扱えないのが、他のxmlリソースのViewを扱えます。
広告用のXMLファイルは、res/layout/ad.xmlに用意しておいて、App.javaのsuper.loadUrl()の後に以下の様なコードを書けばOK.
LayoutInflater factory = LayoutInflater.from(this); View layInfView = factory.inflate(R.layout.ad, null); View adView = layInfView.findViewById(R.id.adView); ViewGroup parent = (ViewGroup) adView.getParent(); if ( parent != null ) { parent.removeView(adView); } LinearLayout layout = super.root; layout.addView(adView);
R.id.adViewは、ad.xml内の広告viewのIDで、このIDをもとにviewを取り出し、PhoneGapで使っているLinearLayoutに追加するという処理です。
ポイントとしては、ad.xml内のviewは、そちらの親の下にあるので、親から切り離さないといけないところ。
コメントを残す
コメントを投稿するにはログインしてください。