Intereting Posts
Могу ли я проверять обновления подписки на Google Play полностью на сервере? Как повторить звук звонка Как преобразовать проект библиотеки Android в внешний JAR? Должен ли распознаватель речи Google на Android нужен интернет? AutoCompleteTextView не работает при вводе первого символа Использует ли android dalvik vm оптимизацию анализа побега? Как создать эти библиотеки из GitHub Cordova phonegap с использованием внешней веб-страницы в приложении, сохраняя верхний / нижний колонтитул (для навигации) Как установить Java Doc для google drive api для android в Eclipse Android: установите фон макета, используя путь изображения Android – как отличить макеты Galaxy S-3 и Galaxy S-4? Какова точная разница между намерением и ожиданием намерения? Что такое widthMeasureSpec и heightMeasureSpec в пользовательских представлениях Android? Как оживить смену менеджера компоновки просмотра ресайклера Отступы, потерянные с помощью тега <merge> с пользовательским составным компонентом

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, который не требует дополнительной настройки для эффекта параллакса.