Android-ParallaxSupportView

Introduction: Android-ParallaxSupportView 是一种 Android 平台的动态视觉差控件,支持 N 个任意 View 的视觉差效果。
More: Author   ReportBugs   
Tags:
视觉差-Parallax-

Android-ParallaxSupportView 是一种 Android 平台的动态视觉差控件,支持 N 个任意 View 的视觉差效果,支持最低 API v9。

Project site: https://github.com/HomHomLin/Android-ParallaxSupportView.

最新版本:v1.0.1

p1

支持平台

API v9+

导入项目

API v9+:

Gradle dependency:

compile 'homhomlin.lib:psv-library:1.0.1'

or

Maven dependency:

<dependency>
  <groupId>homhomlin.lib</groupId>
  <artifactId>psv-library</artifactId>
  <version>1.0.1</version>
</dependency>

API v12+:

Gradle dependency:

compile 'homhomlin.lib.v12:psv-library:1.0.1'

or

Maven dependency:

<dependency>
  <groupId>homhomlin.lib.v12</groupId>
  <artifactId>psv-library</artifactId>
  <version>1.0.1</version>
</dependency>

依赖

如果你使用的是 API v9+的 ParallaxSupportView,需要以下依赖:

compile 'com.nineoldandroids:library:2.4.0'

使用 API v12+的 ParallaxSupportView 不需要依赖。

用法

1.在需要添加的界面 xml 中添加组件

    <homhomlib.lib.parallax.sv.ParallaxSupportView
        android:id="@+id/parallaxSv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

2.创建 ParallaxProvider

与 RecyclerView 的 RecyclerViewAdpater 构造方式一致,首先需要一个 ParallaxSupportView.ViewHolder,然后再进行 Provider 的构造,ParallaxSupportView 不会重复构建 View,以下为最基本的 Provider 构造。

class ParallaxProvider extends ParallaxSupportView.ParallaxSupportViewProvider<ParallaxProvider.ViewHolder>{

        class ViewHolder extends ParallaxSupportView.ViewHolder{
            public ImageView mImageView;

            public ViewHolder(View itemView) {
                super(itemView);
                mImageView = (ImageView)itemView;
            }
        }

        @Override
        public ViewHolder onCreateViewHolder(int type) {
            ImageView iv = new ImageView(MainActivity.this);
            iv.setLayoutParams(new FrameLayout.LayoutParams(
                    FrameLayout.LayoutParams.MATCH_PARENT,
                    FrameLayout.LayoutParams.MATCH_PARENT));
            iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
            return new ViewHolder(htv);
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            holder.mImageView.setBackgroundResource(R.mipmap.ic_launcher);

        }

        @Override
        public int getItemCount() {
            return 5;
        }
    }

3.在代码中 find 该组件,并且设置 provider。

    ParallaxSupportView parallaxSupportView = (ParallaxSupportView) findViewById(R.id.parallaxSv);
    parallaxSupportView.setProvider(new ParallaxProvider());

高级 ParallaxSupportView 使用

1.ParallaxSupportViewProvider

ParallaxSupportView 支持你构建多种不同的 View,为了能这么做,你需要重写 ParallaxSupportViewProvider 中的两个个方法:

  • public int getItemTypeCount();用于返回 type 类型的数量
  • public int getItemType(int position);用于返回 type 类型

2.动画拦截

ParallaxSupportView 支持你对动画进行拦截,你可以实现自己想要的动画特效而不一定使用 ParallaxSupportView 自带的默认动画,回调的 View 为当前即将执行动画的 View,方法返回真会导致默认动画不会继续执行:

  mParallaxSupportView.setAnimInterceptor(new ParallaxSupportView.AnimInterceptor() {
            @Override
            public boolean anim(View view) {
                return false;
            }
        });

反馈

如果使用上有问题或者需要提交代码,请直接提 issue,谢谢。

Developed By

License

Copyright 2016 LinHongHong

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools