Intereting Posts
Как поместить текст в drawable? Android firebase Получает push-сообщения, не работающие после закрытия силы Android: мое приложение слишком велико и дает «Невозможно выполнить dex: идентификатор метода не в : 65536»? Как настроить пользовательский вид в вкладках навигации ActionBar и настроить вкладки на его высоту? OpenGl визуализируется прямо в растровое (без какого-либо представления) Как обнаружить Android-планшеты в целом. UserAgent? Язык клавиатуры для клавиатуры Android Как получить непрерывное событие Touch? Как преобразовать имена цветов в эквивалентный шестнадцатеричный код? Android, как передать Activity.class в качестве аргумента для функции WakefulBroadcastReceiver не может быть разрешен для типа Ошибка Fatal Lint при экспорте подписанного приложения ScrollView отсекает верх и оставляет пространство внизу Значение значения точности, возвращаемого Android GPS Gradle не работает с «Недопустимым объектом project_info»

Android Parallax Effect и View Pager

Я пытаюсь добиться эффекта параллакса в своем приложении. У меня есть FragmentActivity который реализует интерфейс OnPageChangeListener и прослушивает мои ViewPager прокрутки ViewPager .

Чтобы добиться этого эффекта в моем XML, у меня есть LinearLayout за всеми остальными видами с моим фоном, и я перемещаю его в onPageScrolled . Если я просто проведите пальцем по экрану, все будет в порядке, эффект будет работать, а положение фона изменится. Но когда мой палец покидает экран, фон перерисовывается в исходном положении (даже если я нахожусь на новой странице). Я не понимаю, почему это происходит. Здесь код моего FragmentActivity :

 public class MainActivity extends FragmentActivity implements OnPageChangeListener { // DEFINE THE PAGEADAPTER private ViewPager viewPager; private com.angtrim.ecomilano.PagerAdapter pagerAdapter; private int oldPosition = 0; private int offSet = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // CREATE VIEWPAGER viewPager = (ViewPager) findViewById(R.id.viewpager); pagerAdapter = new PagerAdapter(getApplicationContext(),getSupportFragmentManager()); // SET THE ADAPTER viewPager.setAdapter(pagerAdapter); // SET FIRST ITEM viewPager.setCurrentItem(0); // SET CHANGE PAGE LISTENER viewPager.setOnPageChangeListener(this); } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // RIGHT SWIPE if((oldPosition < arg2)) { offSet = (int)((arg2 - oldPosition)*0.5); oldPosition = arg2; } // LEFT SWIPE else if( (oldPosition > arg2)) { offSet = (int) (-(oldPosition - arg2)*0.5); oldPosition = arg2; } findViewById(R.id.backi).offsetLeftAndRight(offSet); } @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub } } 

Спасибо.

Solutions Collecting From Web of "Android Parallax Effect и View Pager"

Я знаю, что это немного устарело, но посмотрите на https://github.com/xgc1986/ParallaxPagerLibrary

Он не переопределяет метод onDraw, а эффект не только с изображениями, он работает с любым видом

 mPager.setPageTransformer(false, new ParallaxTransformer(R.id.parallaxContent)); 

R.id.paraallaxContent – это идентификатор представления, который вы хотите использовать для этого эффекта.

Если другие решения не нуждаются в какой-либо конкретной структуре для работы, а также независимо от формата

Demo: youtube

Я знаю, что вопрос старый, и я не могу ответить на ваш вопрос. Но парень по имени Matthieu создал отличный пример эффекта параллакса ViewPager, который можно найти по следующей ссылке.

https://github.com/MatthieuLJ/ViewPagerParallax

Возможно, эта библиотека может вам помочь:

https://github.com/garrapeta/ParallaxViewPager

Эта библиотека полностью настраивается в направлениях x и y и включает альфа-эффекты:

https://github.com/prolificinteractive/ParallaxPager

Установка (с версии v.7.7, проверка README для обновлений):

  1. Добавить как зависимость от Maven Central с Gradle

  2. Использовать собственный ParallaxContainer в формате XML вместо ViewPager

  3. Создайте XML-файл макета для каждой страницы (атрибуты x / y / alpha могут быть установлены отдельно для каждого объекта, перемещающегося в / из страницы)

  4. Есть несколько строк для копирования / вставки, которые нужно добавить в onCreate of Activity (перейти к README для точных строк)

Анимация планетарной планеты

Взгляните на эту небольшую библиотеку, которую я создал – это подкласс ViewPager, который не требует дополнительной настройки для эффекта параллакса.