私が使用AdView mAdView
して、最後に更新ライブラリ。
私は(例に示すように)私のレイアウトにAdViewを置きます:
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id">
</com.google.android.gms.ads.AdView>
その後、私はそれを識別し、新しい広告をロードしようとするonCreate()
方法:
AdView mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
しかし、私のレイアウトは、いくつかのアニメーションオブジェクトを持っています。新しい広告が目に見えるようになるされている間、このアニメーションは(いくつかのフレームをスキップ)凍結されています。
私たちは、無効にインターネット(それは広告を無効にし、ラグに影響を与えない)と同じ問題をキャッチすることはできません。
私は自分の記録に問題があることを表示するようにしようとしている(GIFは完全にそれを表示することはできません)。
https://www.youtube.com/watch?v=adH2Mn79O7w
どのように私は広告のラグを削除することができ、より良いユーザーエクスペリエンスを作りますか?
これは、ネット上で何度も議論されている既知の問題、ある言葉「AdMobのfpsの低下」などで検索するのに十分です。
ここでの問題の根本は、ほとんどの場合、AdMobのを実行するとアニメーションが失速し始め理由である、かなりのリソースを必要とすることです。一つの解決策として、あなたはいくつかの遅延で広告を表示することができます:
Handler handler = new Handler ();
handler.postDelayed (new Runnable () {
@Override
public void run () {
AdRequest bannerRequest = new AdRequest.Builder (). Build ();
mAdView.loadAd (bannerRequest);
}
}, 2000);
あなたは遅延が固定されていない作るが、ユーザーのアクションにバインドすることができます。たとえば、広告にユーザーが画面をスクロール停止した後に一瞬のダウンロードを開始。
別の解決策は、LAYER_TYPE_SOFTWAREプロパティを操作することにより、広告の無効グラフィックスアクセラレーションにあります。
mAdView.setAdListener(new AdListener(){
@Override
public void onAdLoaded(){
runOnWebView(mAdView, new WebViewAction(){
@Override
public void run(WebView view){
view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
});
}
});
このようなソリューションの場合は、以下のインタフェースを実装する必要があります。
private void runOnWebView (View view, WebViewAction action) {
if (view instanceof WebView){
action.run((WebView)view);
return;
}
if (view instanceof ViewGroup) {
final ViewGroup parent = (ViewGroup)view;
for (int i = 0; i < parent.getChildCount(); i++) {
runOnWebView(parent.getChildAt(i), action);
}
}
}
private interface WebViewAction{
void run(WebView view);
}
同様に、あなたはいくつかの活動の加速をオフにすることができます:
<activity
android:hardwareAccelerated = "false"
android:softwareAccelerated = "false" />