如何实现android视图寻呼机,为每个页面传递背景图像?

时间:2017-03-14 08:12:06

标签: android android-layout android-fragments animation android-viewpager

请查看以下视图寻呼机: View Pager with relaying background images

我该如何实现呢?我试图扩展ViewPager并覆盖onDraw(),但是我无法实现在gif中观察到的行为。

我已经使用透明圆圈实现了视图,该圆圈正在背景上滚动。我的主要问题是背景图像的绘制部分:平滑过渡,当页面稍微向左或向右滚动时,另一页的一半圆也可见的情况等。

2 个答案:

答案 0 :(得分:1)

这里是您的问题的提示。

采用框架布局并放置图像视图,然后在其上查看Pager。 现在准备一个在其中心有一个透明圆圈的布局。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>
</FrameLayout>
</LinearLayout>

现在,您可以使用View Pager的addOnPageChangeListener更改主布局中的Image,并且在滚动时可以获得所需的效果。

Use the ViewPager.onPageChangeListener:

viewPager.setOnPageChangeListener(new OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {}
public void onPageScrolled(int position, float positionOffset, int      positionOffsetPixels) {}

public void onPageSelected(int position) {
    // Change your Image here.
}
});

答案 1 :(得分:1)

更新:示例项目在GitHub上为here

您可以使用ClipDrawable课程来实现您要查找的内容。每张图片都放在ImageViewCoordinatorLayout堆叠在一起。通过使用ViewPager回调方法,您可以根据ClipDrawable报告的偏移量控制每个ViewPager的显示量。

以下是在示例项目中移动三页的一些屏幕截图。我没有实现移动圈,但我认为你已经弄明白了。

我希望这就是你要找的东西。

演示here