Android中轮播所用到viewPager.PageTransformer 页面滑动时候处理图片缩放效果代码
来源:互联网 发布:日本对外贸易数据2015 编辑:程序博客网 时间:2024/06/05 23:08
class ScalePagerTransformer implements ViewPager.PageTransformer {
//最小缩放率
private static final float MIN_SCALE = 0.85f;
//最小的透明度
private static final float MIN_ALPHA = 0.5f;
//这个就是在viewpager 页面滑动的时候会回调这个方法
@Override
public void transformPage(View view, float position) {
//当前的图片位置 ,viewpager设置显示3个图片,最左边的为-1 中间为0 右边位置为1
if (position >= -1 || position <= 1) {
//图片高
final float height = view.getHeight();
//图片宽
final float width = view.getWidth();
//缩放因子, 如果是中间位置0,得到因子为1,不缩放,如果为-1或者1得到缩放因子为0.85,就进行缩放
// 0.85 如果为中间位置,这就是0 ,Math.abs = 0
final float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
// 求出来图片要进行缩放后的高度,如果为中间位置,scaleFactor =1 ,那么这个vertMargin = 0
// 如果是两边位置scaleFactor = 0.85 得到vertMargin = height*0.15/2
final float vertMargin = height * (1 - scaleFactor) / 2;
final float horzMargin = width * (1 - scaleFactor) / 2;
// 这个方法就是进行缩放所指定的中心点的位置,就是图片的中心点
view.setPivotX(0.5f * height);
view.setPivotY(0.5f * width);
//这个是进行位移,应该是处理两个图片之间的间距
if (position < 0) {
view.setTranslationX(horzMargin - vertMargin / 2);
} else {
view.setTranslationX(-horzMargin + vertMargin / 2);
}
//进行缩放
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
//进行透明度处理 ,比如如果是在中间位置 0.5 + (1 - 0.85)/(1-0.85)*(1-0.5)= 0.5+0.15/0.15 * 0.5 = 0.5+0.5 = 1
// 如果是两边位置 0.5 + (0.85 - 0.85)/(1-0.85)*(1-0.5) = 0.5,进行半透明处理
view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
}
}
}
//最小缩放率
private static final float MIN_SCALE = 0.85f;
//最小的透明度
private static final float MIN_ALPHA = 0.5f;
//这个就是在viewpager 页面滑动的时候会回调这个方法
@Override
public void transformPage(View view, float position) {
//当前的图片位置 ,viewpager设置显示3个图片,最左边的为-1 中间为0 右边位置为1
if (position >= -1 || position <= 1) {
//图片高
final float height = view.getHeight();
//图片宽
final float width = view.getWidth();
//缩放因子, 如果是中间位置0,得到因子为1,不缩放,如果为-1或者1得到缩放因子为0.85,就进行缩放
// 0.85 如果为中间位置,这就是0 ,Math.abs = 0
final float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
// 求出来图片要进行缩放后的高度,如果为中间位置,scaleFactor =1 ,那么这个vertMargin = 0
// 如果是两边位置scaleFactor = 0.85 得到vertMargin = height*0.15/2
final float vertMargin = height * (1 - scaleFactor) / 2;
final float horzMargin = width * (1 - scaleFactor) / 2;
// 这个方法就是进行缩放所指定的中心点的位置,就是图片的中心点
view.setPivotX(0.5f * height);
view.setPivotY(0.5f * width);
//这个是进行位移,应该是处理两个图片之间的间距
if (position < 0) {
view.setTranslationX(horzMargin - vertMargin / 2);
} else {
view.setTranslationX(-horzMargin + vertMargin / 2);
}
//进行缩放
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
//进行透明度处理 ,比如如果是在中间位置 0.5 + (1 - 0.85)/(1-0.85)*(1-0.5)= 0.5+0.15/0.15 * 0.5 = 0.5+0.5 = 1
// 如果是两边位置 0.5 + (0.85 - 0.85)/(1-0.85)*(1-0.5) = 0.5,进行半透明处理
view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
}
}
}
阅读全文
0 0
- Android中轮播所用到viewPager.PageTransformer 页面滑动时候处理图片缩放效果代码
- 深度解析ViewPager 页面 滑动效果PageTransformer
- Android 图片滑动效果: ViewPager
- [Android官方Demo系列] PageTransformer缩放滑动
- Android ViewPager 和PageTransformer滑动颜色渐变
- Android ViewPager的切换动画效果PageTransformer
- ViewPager切换的时候,添加图片的缩放效果
- viewPager+photoView实现网络图片加载左右滑动+手势缩放功能+滑动到下一页其他页面恢复默认大小
- Android图片缩放效果代码
- android实现图片左右滑动效果:viewpager
- Android ViewPager实现图片滑动预览效果
- Android代码库-ViewPager滑动导航页面
- android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能
- Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能
- Android viewpager 动画 PageTransformer
- ViewPager多页面滑动效果
- ViewPager多页面滑动效果
- Android-ViewPager滑动图片
- javascript/js 原生动态引入外部css文件及动态插入css代码片段
- FileZilla上传文件到外网FTP服务器响应:550 Permission denied.
- Scala实战—连接oracle及mysql数据库
- overlay 如何实现跨主机通信?- 每天5分钟玩转 Docker 容器技术(52)
- Android Translucent System Bar 开发详解-实现沉浸式通知栏(通知栏与导航栏颜色相同)
- Android中轮播所用到viewPager.PageTransformer 页面滑动时候处理图片缩放效果代码
- 判断一个树是不是平衡二叉树
- Android SDK 之 InputMethodService 详解
- 网络爬虫抓包使用及通过表单请求
- 时间复杂度和空间复杂度
- Spring Ioc的基本原理及XML实现方法(下)
- [LeetCode] 583. Delete Operation for Two Strings
- 顺序表的简单实现
- Eclipse常用快捷键