仿微信的滑动返回Activity(视差滑动).
compile 'com.github.anzewei:parallaxbacklayout:lastversion'
registerActivityLifecycleCallbacks(ParallaxHelper.getInstance());
@ParallaxBack
public class DetailActivity extends AppCompatActivity {
//
}
- 这样DetailActivity就可以滑动返回了
@ParallaxBack(edge = ParallaxBack.Edge.RIGHT,layout = ParallaxBack.Layout.PARALLAX)
注意:其中edge控制滑动方向,layout设置滑动效果
- PARALLAX 视差返回,类似微信的滑动返回效果
- COVER 上级activity不会滑动,只滑动当前activity,有点像抽屉
- SLIDE 跟随滑动,上一级会紧贴着当前activity滑动
- 首先实现滑动效果
public class MyTransform implements ITransform {
@Override
public void transform(Canvas canvas, ParallaxBackLayout parallaxBackLayout, View child) {
//这里对canvas做变换就可以了,可以看一下 CoverTransform ParallaxTransform SlideTransform
}
}
- 设置自定义效果
ParallaxBackLayout layout = ParallaxHelper.getParallaxBackLayout(activity, true);
layout.setLayoutType(LAYOUT_CUSTOM,new MyTransform());
ParallaxBackLayout layout = ParallaxHelper.getParallaxBackLayout(activity, true);
layout.setEdgeMode(EDGE_MODE_FULL);//全屏滑动
layout.setEdgeMode(EDGE_MODE_DEFAULT);//边缘滑动
如果需要对DetailActivity进行滑动返回的控制,如某些情况不希望滑动,那可以使用以下代码
@ParallaxBack
public class DetailActivity extends AppCompatActivity {
private void disableBack(){
ParallaxHelper.getInstance().disableParallaxBack(this);
}
}
- setShadowDrawable
设置阴影 - setEdgeFlag
设置滑动方向 - setLayoutType
设置切换方式 - setSlideCallback
设置滑动回调 - setScrollThresHold
滑动比例超过设置值以后会finish当前activity - setBackgroundView
设置上级view的绘制方式,可继承自GoBackView,在draw方法中做特殊处理
- 华为手机返回时闪屏
请使用1.1.9以后版本 - 使用fresco,滑动返回时看不到图片
这个问题是因为Imageview的onVisibilityAggregated会调用drawable的setVisible,而fresco的RootDrawable在绘制时会判断visible, 为false时不绘制,具体可见com.facebook.drawee.generic.RootDrawable-draw(Canvas); 解决方法是继承SimpleDraweeView重写onVisibilityAggregated
@Override
public void onVisibilityAggregated(boolean isVisible) {
super.onVisibilityAggregated(isVisible);
if (getDrawable() != null) {
getDrawable().setVisible(true, false);
}
}
如果不能获取到application,或者希望兼容4.0以下的版本,建议使用
compile 'com.github.anzewei:parallaxbacklayout:0.5'
-keep public enum com.github.anzewei.parallaxbacklayout.ParallaxBack$** {
**[] $VALUES;
public *;
}
- 日期 2017.06.19 版本 1.1.6 更新了annotation
- 日期 2017.06.19 版本 1.1.2 提供更多接口 新增自定义切换样式 新增自定义阴影
- 日期 2017.06.17 版本 1.1.1 新增多种滑动方向,上下左右都支持; 新增切换样式,视差 、覆盖 、无视差
- 日期 2017.05.16 版本 1.0 使用更简单的方法实现,不需要继承基类
Copyright 2017 anzewei
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.