Android开发仿qq详情下拉头像变大

Android开发仿qq详情下拉头像变大

个人详情界面,很多都有下拉头像变大的效果,其实我觉得这效果还不如点击头像看大图呢

一、思路:

自定义ScrollView

二、效果图:

在这里插入图片描述
看视频更直观点:

Android开发教程案例分享-仿qq详情下拉头像变大

三、关键代码:
public class HeadZoomScrollView extends ScrollView {public HeadZoomScrollView(Context context) {super(context);}public HeadZoomScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public HeadZoomScrollView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}// 用于记录下拉位置private float y = 0f;// zoomView原本的宽高private int zoomViewWidth = 0;private int zoomViewHeight = 0;// 是否正在放大private boolean mScaling = false;// 放大的view,默认为第一个子viewprivate View zoomView;public void setZoomView(View zoomView) {this.zoomView = zoomView;}// 滑动放大系数,系数越大,滑动时放大程度越大private float mScaleRatio = 0.4f;public void setmScaleRatio(float mScaleRatio) {this.mScaleRatio = mScaleRatio;}// 最大的放大倍数private float mScaleTimes = 2f;public void setmScaleTimes(int mScaleTimes) {this.mScaleTimes = mScaleTimes;}// 回弹时间系数,系数越小,回弹越快private float mReplyRatio = 0.5f;public void setmReplyRatio(float mReplyRatio) {this.mReplyRatio = mReplyRatio;}@Overrideprotected void onFinishInflate() {super.onFinishInflate();
//  不可过度滚动,否则上移后下拉会出现部分空白的情况setOverScrollMode(OVER_SCROLL_NEVER);
//  获得默认第一个viewif (getChildAt(0) != null && getChildAt(0) instanceof ViewGroup && zoomView == null) {ViewGroup vg = (ViewGroup) getChildAt(0);if (vg.getChildCount() > 0) {zoomView = vg.getChildAt(0);}}}@Overridepublic boolean onTouchEvent(MotionEvent ev) {if (zoomViewWidth <= 0 || zoomViewHeight <= 0) {zoomViewWidth = zoomView.getMeasuredWidth();zoomViewHeight = zoomView.getMeasuredHeight();}if (zoomView == null || zoomViewWidth <= 0 || zoomViewHeight <= 0) {return super.onTouchEvent(ev);}switch (ev.getAction()) {case MotionEvent.ACTION_MOVE:if (!mScaling) {if (getScrollY() == 0) {y = ev.getY();//滑动到顶部时,记录位置} else {break;}}int distance = (int) ((ev.getY() - y) * mScaleRatio);if (distance < 0) break;//若往下滑动mScaling = true;setZoom(distance);return true;case MotionEvent.ACTION_UP:mScaling = false;replyView();break;}return super.onTouchEvent(ev);}/*** 放大view*/private void setZoom(float s) {float scaleTimes = (float) ((zoomViewWidth + s) / (zoomViewWidth * 1.0));
//  如超过最大放大倍数,直接返回if (scaleTimes > mScaleTimes) return;ViewGroup.LayoutParams layoutParams = zoomView.getLayoutParams();layoutParams.width = (int) (zoomViewWidth + s);layoutParams.height = (int) (zoomViewHeight * ((zoomViewWidth + s) / zoomViewWidth));
//  设置控件水平居中((MarginLayoutParams) layoutParams).setMargins(-(layoutParams.width - zoomViewWidth) / 2, 0, 0, 0);zoomView.setLayoutParams(layoutParams);}
四、项目demo源码结构图

在这里插入图片描述
有问题或者需要完整demo源码的私信我,我每天都看私信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/62652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析下oracle date底层存储方式

之前我们介绍了varchar2和char的数据库底层存储格式&#xff0c;今天我们介绍下date类型的数据存储格式&#xff0c;并通过测试程序快速获取一个日期。 一、环境搭建 1.1&#xff0c;创建表 我们还是创建一个测试表t_code&#xff0c;并插入数据&#xff1a; 1.2&#xff0c;…

golang版本管理工具:scoop使用

安装 Scoophttps://scoop.sh/根据官方文档安装。 第一步&#xff1a;打开PowerShell。(注意不要使用管理员方式打开&#xff0c;否则在执行安装Scoop的过程中&#xff0c;会报错。) 第二步&#xff1a;切到C盘根目录下。 第三步&#xff1a; Set-ExecutionPolicy -Executi…

时装购物系统

私信我获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;时装购物系统当然也不能排除在外。时装购物…

架构04-透明多级分流系统

零、文章目录 架构04-透明多级分流系统 1、透明多级分流系统 &#xff08;1&#xff09;概述 **定义&#xff1a;**透明多级分流系统是指在用户请求从客户端发出到最终查询或修改数据库信息的过程中&#xff0c;通过多个技术部件对流量进行合理分配&#xff0c;以提高系统的…

数据清洗与数据抽取:如何进行数据抽取

数据清洗与数据抽取:如何进行数据抽取 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 关键词:数据清洗,数据抽取,数据预处理,数据挖掘,信息提取 1. 背景介绍 1.1 问题的由来 在当今信息爆炸的时代,数据已经成为企业、组织和政府决策的重…

【AI】数据,算力,算法和应用(3)

三、算法 算法这个词&#xff0c;我们都不陌生。 从接触计算机&#xff0c;就知道有“算法”这样一个神秘的名词存在。象征着专业、权威、神秘、高难等等。 算法是一组有序的解决问题的规则和指令&#xff0c;用于解决特定问题的一系列步骤。算法可以被看作是解决问题的方法…

YOLO系列论文综述(从YOLOv1到YOLOv11)【第14篇:YOLOv11——在速度和准确性方面具有无与伦比的性能】

YOLOv11 1 摘要2 改进点3 模型性能4 模型架构 YOLO系列博文&#xff1a; 【第1篇&#xff1a;概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】【第2篇&#xff1a;YOLO系列论文、代码和主要优缺点汇总】【第3篇&#xff1a;YOLOv1——YOLO的开山之作】【第4篇&#xff…

最短路径(Floyd-Warshall、Dijkstra、Bellman-Ford)

图的遍历&#xff0c;通过算法优雅实现。 上次使用遍历的方法求得最短路径&#xff08;图的遍历。-CSDN博客&#xff09;&#xff0c;这样虽然可以解决问题&#xff0c;但还是不够优雅&#xff0c;有一些弊端&#xff0c;时间复杂度和空间复杂度都比较高。本博客主要描述三种求…

Unity UGUI原理剖析

UI渲染关注的三个部分 UI是如何渲染出来的。点击事件如何触发。何时发生UI重绘。 1&#xff1a;UI如何渲染出来的 UI渲染一定是有顶点的&#xff0c;没有顶点就没法确定贴图的采样&#xff0c;UGUI的顶点在一张Mesh上创建&#xff0c;配合上UI的UV以及贴图&#xff0c;经过渲染…

一些优秀的布隆过滤器介绍

&#x1f680; 博主介绍&#xff1a;大家好&#xff0c;我是无休居士&#xff01;一枚任职于一线Top3互联网大厂的Java开发工程师&#xff01; &#x1f680; &#x1f31f; 在这里&#xff0c;你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人&#xff0c;我不仅热衷…

YOLOv8模型pytorch格式转为onnx格式

一、YOLOv8的Pytorch网络结构 model DetectionModel((model): Sequential((0): Conv((conv): Conv2d(3, 64, kernel_size(3, 3), stride(2, 2), padding(1, 1))(act): SiLU(inplaceTrue))(1): Conv((conv): Conv2d(64, 128, kernel_size(3, 3), stride(2, 2), padding(1, 1))(a…

论文解读:Reward criteria impact on the performance ofreinforcement learning...

Reward criteria impact on the performance ofreinforcement learning agent for autonomous navigation 译文&#xff1a; 奖励准则对自主导航强化学习agent性能的影响 摘要&#xff1a; 在强化学习中&#xff0c;主体在环境中的每个时间步采取行动&#xff08;遵循策略&…

glog在vs2022 hello world中使用

准备工作 设置dns为阿里云dns 223.5.5.5&#xff0c;下载cmake&#xff0c;vs2022&#xff0c;git git clone https://github.com/google/glog.git cd glog mkdir build cd build cmake .. 拷贝文件 新建hello world并设置 设置预处理器增加GLOG_USE_GLOG_EXPORT;GLOG_NO_AB…

速盾:介绍一下高防cdn的缓存响应事什么功能?

高防CDN&#xff08;Content Delivery Network&#xff09;是一种基于分布式缓存技术的网络加速服务&#xff0c;能够提供强大的缓存响应功能。它的缓存响应功能主要包括缓存加速和智能缓存两个方面。 首先&#xff0c;高防CDN的缓存加速功能是指通过在全球范围内部署大量的缓…

搜索二维矩阵 II(java)

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 代码思路&#xff1a; 用暴力算法&#xff1a; class Solution {public boolean searchMatrix(…

基于vite创建的react18项目的单元测试

题外话 最近一个小伙伴进了字节外包&#xff0c;第一个活就是让他写一个单元测试。 嗯&#xff0c;说实话&#xff0c;在今天之前我只知道一些理论&#xff0c;但是并没有实操过&#xff0c;于是我就试验了一下。 通过查询资料&#xff0c;大拿们基本都说基于vite的项目&…

两个生活中的例子反向理解正/反向代理?

正向代理 场景&#xff1a;你在学校里想访问一个被限制的网站&#xff0c;比如某个社交媒体平台。 操作方式&#xff1a; 你把访问请求发送给学校的代理服务器&#xff08;正向代理&#xff09;。代理服务器代表你向互联网发出请求&#xff0c;去访问那个受限的网站。网站的响…

GY302光照传感器模块详解

目录 一、引言 二、功能特点 三、工作原理 四、引脚功能 五、应用场景 六、使用方法 七、总结 一、引言 在当今科技飞速发展的时代&#xff0c;传感器技术在各个领域都发挥着至关重要的作用。光照传感器作为一种能够感知环境光照强度的设备&#xff0c;广泛应用于农业、…

pip install causal-conv1d==1.1.1报错

Building wheels for collected packages: causal-conv1d Building wheel for causal-conv1d (setup.py) ... error error: subprocess-exited-with-error python setup.py bdist_wheel did not run successfully. │ exit code: 1 ╰─> [8 lines of output]…

【WRF后处理】WRF模拟效果评价及可视化:MB、RMSE、IOA、R

【WRF后处理】模拟效果评价及可视化 准备工作模型评价指标Python实现代码Python处理代码:导入站点及WRF模拟结果可视化图形及评价指标参考在气象和环境建模中(如使用 WRF 模型进行模拟),模型性能评价指标是用于定量评估模拟值与观测值之间偏差和拟合程度的重要工具。 本博客…