iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android怎么实现背景图滑动变大松开回弹效果
  • 246
分享到

Android怎么实现背景图滑动变大松开回弹效果

2023-06-30 04:06:55 246人浏览 八月长安
摘要

这篇文章主要讲解了“Android怎么实现背景图滑动变大松开回弹效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么实现背景图滑动变大松开回弹效果”吧!原图放大后自定义vie

这篇文章主要讲解了“Android怎么实现背景图滑动变大松开回弹效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么实现背景图滑动变大松开回弹效果”吧!

原图

Android怎么实现背景图滑动变大松开回弹效果

放大后

Android怎么实现背景图滑动变大松开回弹效果

自定义view继承ScrollView实现效果

public class HeadZoomScrollView extends ScrollView {    private View mZoomView;    private int mZoomViewWidth;    private int mZoomViewHeight;    private float firstPosition;//记录第一次按下的位置    private boolean isScrolling;//是否正在缩放    private float mScrollRate = 0.3f;//缩放系数,缩放系数越大,变化的越大    private float mReplyRate = 0.5f;//回调系数,越大,回调越慢    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);    }    public void setmZoomView(View mZoomView) {        this.mZoomView = mZoomView;    }    public void setmScrollRate(float mScrollRate) {        this.mScrollRate = mScrollRate;    }    public void setmReplyRate(float mReplyRate) {        this.mReplyRate = mReplyRate;    }    @Override    protected void onFinishInflate() {        super.onFinishInflate();        init();    }    private void init() {        setOverScrollMode(OVER_SCROLL_NEVER);        if (getChildAt(0) != null) {            ViewGroup vg = (ViewGroup) getChildAt(0);            if (vg.getChildAt(0) != null) {                mZoomView = vg.getChildAt(0);            }        }    }    @Override    public boolean onTouchEvent(MotionEvent ev) {        if (mZoomViewWidth <= 0 || mZoomViewHeight <= 0) {            mZoomViewWidth = mZoomView.getMeasuredWidth();            mZoomViewHeight = mZoomView.getMeasuredHeight();        }        switch (ev.getAction()) {            case MotionEvent.ACTION_UP:                //手指离开后恢复图片                isScrolling = false;                replyImage();                break;            case MotionEvent.ACTION_MOVE:                if (!isScrolling) {                    if (getScrollY() == 0) {                        firstPosition = ev.getY();// 滚动到顶部时记录位置,否则正常返回                    } else {                        break;                    }                }                int distance = (int) ((ev.getY() - firstPosition) * mScrollRate); // 滚动距离乘以一个系数                if (distance < 0) { // 当前位置比记录位置要小,正常返回                    break;                }                // 处理放大                isScrolling = true;                setZoom(distance);                return true; // 返回true表示已经完成触摸事件,不再处理        }        return true;    }    //回弹动画    private void replyImage() {        float distance = mZoomView.getMeasuredWidth() - mZoomViewWidth;        ValueAnimator valueAnimator = ValueAnimator.ofFloat(distance, 0f).setDuration((long) (distance * mReplyRate));        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {            @Override            public void onAnimationUpdate(ValueAnimator animation) {                setZoom((Float) animation.getAnimatedValue());            }        });        valueAnimator.start();    }    public void setZoom(float zoom) {        if (mZoomViewWidth <= 0 || mZoomViewHeight <= 0) {            return;        }        ViewGroup.LayoutParams lp = mZoomView.getLayoutParams();        lp.width = (int) (mZoomViewWidth + zoom);        lp.height = (int) (mZoomViewHeight * ((mZoomViewWidth + zoom) / mZoomViewWidth));        ((MarginLayoutParams) lp).setMargins(-(lp.width - mZoomViewWidth) / 2, 0, -(lp.width - mZoomViewWidth) / 2, 0);        mZoomView.setLayoutParams(lp);    }}

直接布局中使用这个view就可以,要注意的是在布局中需要在自定义view下写一个子控件才能使用

<?xml version="1.0" encoding="utf-8"?><你的包名.HeadZoomScrollView xmlns:android="Http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/drop_down_menu"    android:layout_width="match_parent"    android:layout_height="match_parent"   >    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent">        <ImageView            android:id="@+id/iv_show"            android:layout_width="match_parent"            android:layout_height="200dp"            android:layout_weight="1"            android:src="@mipmap/ic_launcher"/>    </RelativeLayout></com.example.application.view.HeadZoomScrollView>

感谢各位的阅读,以上就是“Android怎么实现背景图滑动变大松开回弹效果”的内容了,经过本文的学习后,相信大家对Android怎么实现背景图滑动变大松开回弹效果这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Android怎么实现背景图滑动变大松开回弹效果

本文链接: https://www.lsjlt.com/news/327461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现背景图滑动变大松开回弹效果
    本文实例为大家分享了Android实现背景图滑动变大松开回弹的具体代码,供大家参考,具体内容如下 原图 放大后 1、自定义view继承ScrollView实现效果 public ...
    99+
    2022-11-13
  • Android怎么实现背景图滑动变大松开回弹效果
    这篇文章主要讲解了“Android怎么实现背景图滑动变大松开回弹效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么实现背景图滑动变大松开回弹效果”吧!原图放大后自定义vie...
    99+
    2023-06-30
  • Android实现背景颜色滑动渐变效果的全过程
    目录前言一、介绍一下GradientDrawable二、实现三、源码:总结前言 今天和朋友聊到这个功能,刚开始的想法是自定义view,如何进行滑动监听,经过一列操作完成效果后,发现...
    99+
    2022-11-12
  • Android怎么自定义View实现竖向滑动回弹效果
    这篇文章主要介绍“Android怎么自定义View实现竖向滑动回弹效果”,在日常操作中,相信很多人在Android怎么自定义View实现竖向滑动回弹效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Andro...
    99+
    2023-06-30
  • CSS怎么实现背景渐变图片过渡效果
    这篇文章主要介绍“CSS怎么实现背景渐变图片过渡效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS怎么实现背景渐变图片过渡效果”文章能帮助大家解决问题。一、b...
    99+
    2022-10-19
  • 如何通过纯CSS实现网页的平滑滚动背景图片渐变效果
    在现代的网页设计中,丰富的背景效果可以提升网页的美观度和用户体验。其中,平滑滚动和背景图片渐变效果是常用的一种设计方式。本文将介绍如何通过纯CSS实现网页的平滑滚动背景图片渐变效果,并提供具体的代码示例。一、平滑滚动效果首先,我们需要创建一...
    99+
    2023-10-21
    平滑滚动 网页 关键词:CSS
  • 怎么在Android应用中实现一个背景可滑动的登录界面效果
    怎么在Android应用中实现一个背景可滑动的登录界面效果?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。实现思路主要列举一下实现过程过程中遇到的难点。如何使键盘...
    99+
    2023-05-31
    android roi
  • Android直播软件搭建之实现背景颜色滑动渐变效果的详细代码
    Android直播软件搭建实现背景颜色滑动渐变效果的相关代码 一、介绍一下GradientDrawable GradientDrawable 支持渐变色的Drawable,与sha...
    99+
    2022-11-12
  • 使用css3怎么实现一个背景动态渐变效果
    使用css3怎么实现一个背景动态渐变效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计...
    99+
    2023-06-08
  • 如何通过纯CSS实现网页的平滑滚动背景图片放大缩小效果
    在现代网页设计中,背景图片是非常常见的元素之一。为了提升网页的视觉效果,我们可以利用CSS来实现背景图片的平滑滚动放大缩小效果,从而给用户带来更好的浏览体验。首先,在HTML中创建一个具有该效果的容器元素:<div class=&qu...
    99+
    2023-10-21
    CSS 平滑滚动 背景图片放大缩小效果
  • 怎么在Android中利用ScrollView实现一个放大回弹效果
    这期内容当中小编将会给大家带来有关怎么在Android中利用ScrollView实现一个放大回弹效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。自定义ScrollView创建一个类,继承ScrollVi...
    99+
    2023-05-31
    scrollview android roi
  • Android中怎么利用ViewPager实现图片滑动预览效果
    本篇文章给大家分享的是有关Android中怎么利用ViewPager实现图片滑动预览效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。xml代码:<xml ve...
    99+
    2023-05-30
    android viewpager
  • css3中怎么使用animation属性实现背景颜色动态渐变的效果
    本篇内容主要讲解“css3中怎么使用animation属性实现背景颜色动态渐变的效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css3中怎么使用animat...
    99+
    2022-10-19
  • 怎么在Android中使用ScrollView实现一个下拉弹回动画效果
    本篇文章给大家分享的是有关怎么在Android中使用ScrollView实现一个下拉弹回动画效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Android是什么Android...
    99+
    2023-05-30
    android scrollview
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作