Это известная проблема, которая много раз обсуждалась на net, достаточно для поиска по словам "AdMob fps drop" и т. П.
root проблемы скорее всего, здесь для запуска 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" />