图片下拉放大 自定义scrollView

uniApp(H5,App端) 实现手指下拉屏幕,顶部背景图片放大,松开缩放还原效果。 App,H5,类似抖音我的页面,触摸屏幕下拉顶部背景图片放大,松开图片缩放回弹效果。用户执行下拉操作时,顶部背景图会放大并高度增加的效果,使页面感觉更加的丝滑。类似 个人中心 最上部有个背景图片,下拉放大,松开还原的效果 阅读详情

使用自定义scrollView的方法实现这个效果。也不多说了,直接上代码。

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.example.myapplication.dropzoom;  
  2.   
  3. import android.animation.ObjectAnimator;  
  4. import android.animation.ValueAnimator;  
  5. import android.content.Context;  
  6. import android.util.AttributeSet;  
  7. import android.view.MotionEvent;  
  8. import android.view.View;  
  9. import android.view.ViewGroup;  
  10. import android.widget.ScrollView;  
  11.   
  12. /** 
  13.  * Created by Liujinhua on 2016/3/25. 
  14.  * 下拉放大scrollView 
  15.  */  
  16. public class DropZoomScrollView extends ScrollView implements View.OnTouchListener {  
  17.   
  18.     // 记录首次按下位置  
  19.     private float mFirstPosition = 0;  
  20.     // 是否正在放大  
  21.     private Boolean mScaling = false;  
  22.   
  23.     private View dropZoomView;  
  24.     private int dropZoomViewWidth;  
  25.     private int dropZoomViewHeight;  
  26.   
  27.     public DropZoomScrollView(Context context) {  
  28.         super(context);  
  29.     }  
  30.   
  31.     public DropZoomScrollView(Context context, AttributeSet attrs) {  
  32.         super(context, attrs);  
  33.     }  
  34.   
  35.     public DropZoomScrollView(Context context, AttributeSet attrs, int defStyleAttr) {  
  36.         super(context, attrs, defStyleAttr);  
  37.     }  
  38.   
  39.     @Override  
  40.     protected void onFinishInflate() {  
  41.         super.onFinishInflate();  
  42.         init();  
  43.     }  
  44.   
  45.     @Override  
  46.     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  
  47.         super.onMeasure(widthMeasureSpec, heightMeasureSpec);  
  48.   
  49.     }  
  50.   
  51.     private void init() {  
  52.         setOverScrollMode(OVER_SCROLL_NEVER);  
  53.         if (getChildAt(0) != null) {  
  54.             ViewGroup vg = (ViewGroup) getChildAt(0);  
  55.             if (vg.getChildAt(0) != null) {  
  56.                 dropZoomView = vg.getChildAt(0);  
  57.                 setOnTouchListener(this);  
  58.   
  59.             }  
  60.         }  
  61.     }  
  62.   
  63.     @Override  
  64.     public boolean onTouch(View v, MotionEvent event) {  
  65.         if (dropZoomViewWidth <= 0 || dropZoomViewHeight <= 0) {  
  66.             dropZoomViewWidth = dropZoomView.getMeasuredWidth();  
  67.             dropZoomViewHeight = dropZoomView.getMeasuredHeight();  
  68.         }  
  69.         switch (event.getAction()) {  
  70.             case MotionEvent.ACTION_UP:  
  71.                 //手指离开后恢复图片  
  72.                 mScaling = false;  
  73.                 replyImage();  
  74.                 break;  
  75.             case MotionEvent.ACTION_MOVE:  
  76.                 if (!mScaling) {  
  77.                     if (getScrollY() == 0) {  
  78.                         mFirstPosition = event.getY();// 滚动到顶部时记录位置,否则正常返回  
  79.                     } else {  
  80.                         break;  
  81.                     }  
  82.                 }  
  83.                 int distance = (int) ((event.getY() - mFirstPosition) * 0.6); // 滚动距离乘以一个系数  
  84.                 if (distance < 0) { // 当前位置比记录位置要小,正常返回  
  85.                     break;  
  86.                 }  
  87.   
  88.                 // 处理放大  
  89.                 mScaling = true;  
  90.                 setZoom(1 + distance);  
  91.                 return true; // 返回true表示已经完成触摸事件,不再处理  
  92.         }  
  93.         return false;  
  94.     }  
  95.   
  96.     // 回弹动画 (使用了属性动画)  
  97.     public void replyImage() {  
  98.         final float distance = dropZoomView.getMeasuredWidth() - dropZoomViewWidth;  
  99.   
  100.         // 设置动画  
  101.         ValueAnimator anim = ObjectAnimator.ofFloat(0.0F, 1.0F).setDuration((long) (distance * 0.7));  
  102.   
  103.         anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {  
  104.             @Override  
  105.             public void onAnimationUpdate(ValueAnimator animation) {  
  106.                 float cVal = (Float) animation.getAnimatedValue();  
  107.                 setZoom(distance - ((distance) * cVal));  
  108.             }  
  109.         });  
  110.         anim.start();  
  111.   
  112.     }  
  113.   
  114.     //缩放  
  115.     public void setZoom(float s) {  
  116.         if (dropZoomViewHeight <= 0 || dropZoomViewWidth <= 0) {  
  117.             return;  
  118.         }  
  119.         ViewGroup.LayoutParams lp = dropZoomView.getLayoutParams();  
  120.         lp.width = (int) (dropZoomViewWidth + s);  
  121.         lp.height = (int) (dropZoomViewHeight * ((dropZoomViewWidth + s) / dropZoomViewWidth));  
  122.         dropZoomView.setLayoutParams(lp);  
  123.     }  
  124. }  

使用的时候也十分的简单

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical">  
  6.   
  7.     <com.example.myapplication.dropzoom.DropZoomScrollView  
  8.         android:layout_width="match_parent"  
  9.         android:layout_height="match_parent">  
  10.   
  11.         <LinearLayout  
  12.             android:layout_width="match_parent"  
  13.             android:layout_height="wrap_content"  
  14.             android:orientation="vertical">  
  15.   
  16.   
  17.             <ImageView  
  18.                 android:layout_width="wrap_content"  
  19.                 android:layout_height="wrap_content"  
  20.                 android:layout_gravity="center"  
  21.                 android:src="@drawable/bg" />  
  22.   
  23.             <ImageView  
  24.                 android:layout_width="wrap_content"  
  25.                 android:layout_height="wrap_content"  
  26.                 android:layout_gravity="center"  
  27.                 android:src="@drawable/home_bg" />  
  28.   
  29.             <ImageView  
  30.                 android:layout_width="wrap_content"  
  31.                 android:layout_height="wrap_content"  
  32.                 android:layout_gravity="center"  
  33.                 android:src="@drawable/home_bg" />  
  34.   
  35.             <ImageView  
  36.                 android:layout_width="wrap_content"  
  37.                 android:layout_height="wrap_content"  
  38.                 android:layout_gravity="center"  
  39.                 android:src="@drawable/home_bg" />  
  40.   
  41.             <ImageView  
  42.                 android:layout_width="wrap_content"  
  43.                 android:layout_height="wrap_content"  
  44.                 android:layout_gravity="center"  
  45.                 android:src="@drawable/home_bg" />  
  46.         </LinearLayout>  
  47.     </com.example.myapplication.dropzoom.DropZoomScrollView>  
  48. </LinearLayout>  

Android-PullZoomScrollView滑动缩放顶部视图 PullZoomScrollView 滑动缩放顶部视图 立即下载

相关推荐

scrollview下拉放大效果,弹回效果动画(基于手势,不导入第三方包)重新上传

scrollview下拉放大效果,手势,弹回效果动画(基于手势,不导入第三方包),自己搞的,欢迎提意见.

实现上滑列表图片放大进入,缩小放大后隐藏效果

讲解: HTML 的部分 打开 CodePen 编辑器,在 HTML 的部份加入标题。由于它有一个副标题,所以我会用<p>标签去装着它。然后加入一个<div>,id名为iphone,里面新增两个<div>,id分别是hardware和ui;hardware会用来显示 iPhone 的机身和边框,而ui则会显示画面里面的内容。 CSS 的部分 先定义一些 CSS,让我们更加清楚知道在做什么。加入:root选择器,定义一些变量和样式:...

qq_41429765的博客 574

HeadZoomScrollView下拉放大的图片松开回弹

效果图地址 http://blog.youkuaiyun.com/qq_34709056/article/details/72781986

android 下拉放大头部图片的ScrollView

之前做项目的时候,需要实现类似微博个人主页的ScrollView效果,就是到顶部时继续下拉会放大顶部的图片。然后在网上找了一篇相关的实现,效果非常好,代码也很简洁易懂。(传送门: 自定义scrollView实现顶部图片下拉放大)那么我这里就只是在其基础上修改了一点点而已,比如在代码中控制图片居中、增加动态设置放大的控件、使用自定义的最大放大倍数等,都是很简单的修改,还添加了滑动的监听回调

Jimi_Wu的专栏 1万+

Gradient Accumulation 梯度累加/梯度累积 (Pytorch)

我们在训练神经网络的时候,batch_size的大小会对最终的模型效果产生很大的影响。一定条件下,batch_size设置的越大,模型就会越稳定。batch_size的值通常设置在 8-32 之间,但是当我们做一些计算量需求大的任务(例如语义分割、GAN等)或者输入图片尺寸太大的时候,我们的batch size往往只能设置为2或者4,否则就会出现 “CUDA OUT OF MEMORY” 的不可抗力报错。 那么如何在有限的计算资源的条件下,训练时采用更大的batch size...

hxxjxw的博客 5829

深入解析DDR5 RFM机制:从JESD79-5标准到硬件实现

本文深入解析了DDR5内存标准中的关键机制——RFM(Refresh Management)。文章从JESD79-5标准出发,详细阐述了RFM如何通过RAA计数器实现从被动定时到主动响应的智能刷新管理,并探讨了其硬件实现细节、命令调度挑战及系统级设计考量,为芯片设计工程师优化DDR5内存子系统性能与可靠性提供了实践指导。

fff88的博客 492

android 头部伸缩动画,Android中ScrollView 滑到头部或尾部可伸缩放大效果

最近做项目,想要这么一个效果,就是ScrollView 滑动到顶部,当不能在滑动的时候,图片可以下拉放大,松开又恢复。滑到底部没有内容的时候,也有伸缩效果,先看看效果图吧。就是如上图这么个效果。系统提供的ScrollView 是不能做到这个效果的,所以需要自己自定义,网上找了一些资料。也参考了下其他人的做法。自己也整合了一下。希望对大家有所帮助。核心的控件就是下面的这段代码:package com...

weixin_39805195的博客 842

手把手教你用Alinx黑金开发板(Spartan-6)驱动ADF4351信号源(附Verilog SPI代码)

本文详细介绍了如何使用Alinx黑金开发板(Spartan-6 FPGA)驱动ADF4351信号源,包括硬件连接、Verilog SPI代码实现及系统调试。通过实战指南,帮助开发者快速掌握FPGA控制ADF4351芯片的技术,适用于射频信号源设计和学习应用。

weixin_30335575的博客 628

Android 自定义可缩放图片的ScrollView

前言 通过用下拉,实现对图片进行放大 在项目中使用起来也比较方便 <?xml version="1.0" encoding="utf-8"?> <com.mycompany.myapp.ZoomScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_h...

饮料 577

【科研学习】Demo3D2015安装包以及图文安装步骤

安装包 点击下图的.exe文件,安装 不需要解压,打开注册机 如下图: 点击上图的.exe文件,出现下图 先点击 patch 打开安装目录下的Demo3D.licensing.dll文件,然后点击Generate,生成dvt-license文件,保存即可 打开安装完成的Demo3D 2015(64-bit),一般破解没完成的,会出现一个request a license 的问题,点击find license 的那一行 点击后找到自己Generate,生成dvt

KaelCui的博客 1万+

Visual Studio 6.0 镜像下载全指南:从企业版到中文版

本文提供Visual Studio 6.0企业版和中文版的镜像下载全指南,包括详细版本解析、已验证的下载链接及校验信息。针对现代系统的安装技巧和兼容性处理方案,帮助开发者高效获取并运行这一经典开发工具,特别适合维护遗留系统的专业人员。

weixin_33712987的博客 1109

自定义控件之重写ScrollView实现图片下拉放大

前言因为公司项目要实现一个效果,在ScrollView没有向下滚动时,下拉(未重写前下拉是没有任何效果的)放大顶部的图片,当时去网上找了,记得以前见过很多这样的控件的,现在却找半天也很难找到一个,好不容易找到了2个,发现效果都和需求上面的效果有偏差,最后没有办法只能是自己写了,花费了半天时间研究出来了,同时为了记录实现思路,所以就有了此文章效果实现思路拦截ScrollView的触摸滑动事件(ACTI

wantnrun的专栏 1080

C#上位机+YOLOv8实战:摄像头/视频流实时目标检测(工业级优化+完整可运行源码)

纯C#实现,无Python依赖,适配工业工控机部署;工业级优化:解决帧率、内存、鲁棒性三大核心问题;代码完整可复用,支持摄像头/视频流/RTSP多源检测;避坑指南覆盖开发中90%的常见问题,降低落地成本。相较于传统方案,该方案兼顾实时性与易用性,成本仅为商用视觉库的1/10,可快速落地到工业质检、安防、物流等场景。后续可拓展方向包括:自定义数据集训练、GPU加速推理、工业通信(PLC/串口)对接等。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 736

安卓吸顶+下拉放大_Android自定义scrollView实现顶部图片下拉放大

本文实例为大家分享了scrollView实现顶部图片下拉放大的具体代码,供大家参考,具体内容如下之前的scrollView顶部图片下拉放大在之后的项目用到了几次,但没次都写在Activity中很麻烦,也不方便复用。这几天有空,所以重新使用自定义scrollView的方法实现这个效果。原理和之前的基本是一致的,所以也不多说了,直接上代码。package com.example.myapplicati...

weixin_39704727的博客 359

Vivado ILA抓DDR信号(各种IO信号:差分、ISERDES、IOBUFDS等)

Vivado ILA抓DDR信号(各种IO信号:差分、ISERDES、IOBUFDS等)

千歌叹尽执夏的博客 1109

Kappa函数:测量一致性并计算置信区间的R语言包

Kappa函数是一种常用的统计量,用于衡量两个评估者之间的一致性。在R语言中,有一个名为"vcd"的包提供了计算Kappa函数以及相应的置信区间的功能。本文将介绍如何使用"vcd"包来计算Kappa函数的值,并进一步计算置信区间。Kappa函数的值介于-1和1之间,值越接近1表示评估者之间的一致性越高,值越接近-1表示评估者之间的一致性越低,值接近0表示评估者之间的一致性接近于随机。通过以上步骤,我们成功地使用R语言中的"vcd"包计算了Kappa函数的值和置信区间。接下来,我们可以使用"vcd"包中的。

2301_79331230的博客 1877

自定义scrollView实现顶部图片下拉放大

自定义scrollView实现顶部图片下拉放大

liujinhua的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

自定义ScrollView实现下拉放大头部图片

下拉实现放大头部布局,先看一下下图的效果:代码实现如下:public class HeadZoomScrollView extends ScrollView { private View mZoomView; private int mZoomViewWidth; private int mZoomViewHeight; private float firstPosit

刘建的博客 1209

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

自定义ScrollView实现图片下拉放大(弹性效果)+ 悬浮框

先上效果图: 1.自定义ScrollView: /** * 阻尼效果的scrollview */ public class MyScrollView extends ScrollView { private OnScrollListener onScrollListener; private int lastScrollY; private sta

董俊帅 4030

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android好用的下拉图片放大效果

我的页面下拉图片放大效果的实现效果图如下(只不过没有动态图): 首先布局分为两块,一块是有图片的上部分,另一半是下面的条目这部分 自定义一个Scrollview继承于ScrollView 然后onMeasure,onTouchEvent,onScrollChanged相应的方法中做处理 代码块详细代码如下如下:public class PullToZoomScrollView extends Scr

郭昊的博客 2135

Android自定义ScrollView下拉图片变大且带有一键置顶功能

描述:下拉ScrollView时顶部的图片随之变大,回拉缩小,且带有一键置顶的功能   1.自定义类: import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.content.Context; import android.util.Attribute...

shenggaofei的博客 649

android ScrollView顶部使用Viewpager的轮播图,下拉图片能放大效果

1,顶部轮播图

qizufeng的专栏 2617
上一篇: 为什么很多人写代码会在变量名前面加一个小写的m?
下一篇: Xcode真机测试
一靥知秋
博客等级 码龄10年 3粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值