Spróbuję strzelać i zgadnąć na sucho co może pomóc, bo u mnie taki efekt nie występuje.
Proponuję margines ustawić normalnie tam gdzie deklarujesz pager, operując na DP, mniej więcej w taki sposób:
pager.setPageMargin((int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, res.getDisplayMetrics()));
zamiast operować na pixelach tak jak to robisz tu: GameManager.SCREEN_WIDTH_PX * 0.2f;
A główny LinearLayout zamiast tak:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
android:layout_height="match_parent"
android:weightSum="1">
zrobiłbym tak:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
Zdarzały mi się problemy z automatycznym ustawianiem rozmiaru LinearLayout w tą stronę w którą miał orientacją, więc skoro ma problemy z rozciągnięciem się w poziomie to niech będzie vertical a nie horizontal. Weigth też może trochę mieszać przy obliczaniu szerokości. Ze względu na pager ten layout ma potencjalnie więcej miejsca niż szerokość ekranu, więc i tak musi obliczyć ile ma zająć. Orientacja w poziomie i dodatkowo weight komplikują mu obliczenia, może dlatego czasem robi to błędnie.
Oczywiście strzelam w ciemno, bo odtworzyć efektu nie potrafię.