Android 可滑动ViewGroup

自定义控件ViewGroup上下滑动 自定义ViewGroup,就是组合型控件,ViewGroup不需要调用ONDraw()方法,因为ViewGroup就是View的容器,每一个View是其的子类,只需要将创建好的View添加到ViewGroup控件当中即可。 在自定义ViewGroup控件,首先确定是否从Layout(布局文件中)调用,就一定要调用该方法,用于实例化从layout布局文件中加载组件。 public MyViewGroup(Context context, AttributeSet attrs) { super(c 阅读详情

背景是需要一个悬浮的播放器,有按键可以控制上一曲下一曲

需要解决的问题

  1. 可以拖动
  2. 和子view点击时间不存在冲突

第一点监听移动位置。第二点,dispatchTouchEvent接收到move 的时候标记,在onInterceptTouchEvent进行拦截。

效果:

video-floating

package com.example.bannerdemo;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.FrameLayout;

/**
 * 浮动的ViewGroup
 */
public class FloatingViewGroup extends FrameLayout {

    //是否在拖动
    boolean isDragging = false;

    //按下的xy
    float downX, downY;


    public FloatingViewGroup(Context context) {
        this(context, null);
    }

    public FloatingViewGroup(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public FloatingViewGroup(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
    }



    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN:
                downX = ev.getX();
                downY = ev.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                Log.e("ssssssss", "onFling  ev.getX()" + ev.getX());
                isDragging = true;
                float fx = ev.getX() - downX + getX();
                float fY = ev.getY() - downY + getY();
                if (fx + getWidth() > 1280) {
                    fx = 1280 - getWidth();
                }
                if (fx < 0) {
                    fx = 0;
                }
                if (fY + getHeight() > 566) {
                    fY = 566 - getHeight();
                }
                if (fY < 0) {
                    fY = 0;
                }
                setX(fx);
                setY(fY);
                break;
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP:
                isDragging = false;
                break;
        }
        return super.dispatchTouchEvent(ev);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return isDragging;
    }
}

Android自定义ViewGroup实现弹性滑动效果 主要为大家详细介绍了Android自定义ViewGroup实现弹性滑动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 立即下载

相关推荐

黑苹果从入门到精通:最详细的VMware安装macOS教程

前言 不知为何,以前我发的两篇关于黑苹果的文章或没过审或被删除,最近SMZDM上有不少优质的黑苹果文章发出来,貌似禁令已开,前段时间在一篇写的很不错的黑果文章下吹牛说今年要写一个系列,故有了这篇文章作为系列的开头。 系列的名字起的有点俗,叫做xxx从入门到精通,但是我很喜欢,相信过半的黑果群众都是程序员,作为教程来说这个名字俗但是好用,我也希望这个系列能像其它入门到精通系列一样,让大家学到东西...

La victoria的博客 14万+

android 滑动取值_Android-自定义ViewGroup-上下滑动整体实践下

本来上周六晚上出去散步的时候就随便想了下,当时的想法是ViewGroup要实现内部控件的滚动,1. 最终效果肯定就是子控件的重绘对吧? 2. 重绘肯定就涉及到onLayout重新定位的处理对吧? 重新定位+重新绘制理论上就是实现滚动的原理了吧。基于上述猜测,小白以为我们只要在onLayout中重新刷新控件的位置不就可以实现滚动了么?没错,小白实践了,可以滴?--需要了解如下知识:Invali...

weixin_39586335的博客 413

Delphi中使用FireDAC与uniDAC高效连接PostgreSQL的实战指南

本文为Delphi开发者提供了使用FireDAC与uniDAC组件高效连接PostgreSQL数据库的实战指南。文章详细对比了两款组件的选择策略,重点解析了驱动依赖(libpq.dll)的配置、连接参数设置、常见错误排查及性能优化技巧,旨在帮助开发者快速构建稳定可靠的数据库连接。

tomato的博客 805

android view上下滚动条,android上下滑动View的实现

先放上这个自定义的View的代码,package com.example.viewpagervertical;import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.Veloc...

weixin_30990711的博客 1286

Mac上MySQL出现secure-file-priv为null

在使用MySQL导入导出文件时出现了错误,原因是没有配置secure-file-priv。 我的MySQL版本是8.0.13,使用如下命令查看secure-file-priv。 结果发现secure-file-priv为空,此时需要为它配置一个文件夹。 解决方案: 1)到MySQL的安装目录中去,Mac中是的是 /usr/local/mysql/support-files,该目录下有一...

zhangvalue的博客 5883

用Unity Wheel Collider做坦克转向?3步实现履带式载具物理效果

本文详细解析了如何利用Unity的Wheel Collider组件实现履带式载具的差速转向物理效果。通过思维转换、场景搭建和核心代码实现三步,将Wheel Collider从模拟轮式车辆转向改造为控制履带扭矩差的系统,并深入探讨了参数调试与真实感提升的方法,帮助开发者打造物理反馈扎实的坦克或特种车辆模拟。

weixin_29009971的博客 223

Android开发教程:自定义ViewGroup方法总结

应用中需要添加一个滑动按钮,在网上看了几个Demo之后决定自定义ViewGroup来实现。 这里是对实现过程中自定义ViewGroup的方法总结。 关于ViewGroup,文档给出的描述是: A ViewGroup is a special view that can contain other views (called children.) The view group is

专注Android开发 737

Cadence Design Entry HDL 使用教程

Cadence Design Entry HDL 使用教程 前言 cadence Design Entry HDL是cadence内部集成的一款板级的EDA设计工具,早期叫 concept HDL。其为cadence最早的原配板级电路图绘制工具,只不过由于后来cadence收购了orcad然后就将旗下的capture CIS收入其中,由于后者使用起来上手简单,所以后者更为大家所熟知。虽然大家对...

uio159753的博客 4万+

android 可拖动的浮动 view

业务来源 页面最小化后,需要出现一个浮动 view 告知用户,防止遮挡视线,需要对 view 做可滑动处理 已知会遇到的问题 1.view 的依赖的布局类型未知【为了后续方便扩展】 外界传递 ViewGroup 自己本身继承 LinearLayout【或者其他 ViewGroup 】 class FloatChannelView(var mContext: Context?, var viewGroup: ViewGroup) : LinearLayout(mContext){ pri.

ff_hh的博客 867

基于STM32+华为云设计的智能鱼缸

本项目基于STM32单片机设计一款基于物联网的智能鱼缸系统,并通过应用侧接口开发上位机APP实现远程对鱼缸参数的检测和控制。该系统包括水温检测、水质检测、自动或手动换水、氛围灯灯光变换和自动或手动喂食等功能,可以帮助用户更好地管理鱼缸,提高鱼儿的生存率,同时增强用户对家庭装饰品的掌控感和科技感。

1万+

【即插即用模块】Transformer篇 | MICCAI 2025 | ReLULA:Q/K双ReLU线性注意力,既轻又准!

本文介绍了一种基于线性注意力的多实例学习模块(Lin-MIL),适用于高分辨率视觉任务。该模块通过转置计算顺序和使用ReLU激活,将计算复杂度从O(n²d)降至O(nd²),同时提升特征判别性。核心创新包括Q/K双ReLU激活、可学习温度系数和数值稳定归一化。实验表明,该模块在轻量化视觉任务中优于传统线性注意力和Mamba架构。代码实现了模块化矩阵乘法,支持即插即用替换ViT自注意力层。该模块特别适合计算病理学等需要处理大量图像补丁的任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 140

android 手势滑动(ViewGroup, Scroller, VelocityTracker, ViewConfiguration)

http://blog.youkuaiyun.com/hgl868/article/details/7057579 http://www.cnblogs.com/yyyyy5101/archive/2012/01/12/2320587.html http://www.cnblogs.com/supersugar/archive/2012/08/08/2628602.html

学习记录 2286

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

Robot_PLC_HMI_Automation 1513

android 自定义上下滑动viewgroup,Android自定义viewgroup快速滑动(4)

package com.example.libingyuan.horizontallistview.ScrollViewGroup;import android.content.Context;import android.util.AttributeSet;import android.util.DisplayMetrics;import android.view.MotionEvent;imp...

weixin_29917533的博客 283

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Android:跟手滑动的布局ViewGroup

跟手滑动很多开发者对布局的跟手滑动不太了解,在此就举一个例子,看一个RelativeLayout的滑动显示原理无论是跟手滑动,还是弹入弹出动画,本质上都是修改View或ViewGroup的位置,也即是setX() setY()这两个方法。 跟手滑动 跟手滑动是指,当用户在屏幕上滑动时,某一块布局,随着手指的滑动而滑动。所以,它的实现原理就是在onTouch事件中动态获得手指滑动的距离,然后修改vie

郑海波(莫川)的优快云博客 4514

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android自定义控件Group之上下滑动回弹及快速滑动手势viewgroup

最近一周工作上比较闲,想来没有事做,,于是就想写个自定义控件巩固一下android的自定义控件开发,一开始的想法就是写一个简单的上下翻页的viewGroup,我们都知道viewpager是左右滑动的控件。 还是老规矩,先上效果图: 以上就是效果图,补充说一下实现的效果:实现子控件根据手势上下滑动翻页,慢速滑动过半时会翻页,快速滑动速度达到1000px/s时也会翻页,当然也要首页和尾页处理,...

Always_MyHomeTown的博客 967

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android自定义组件系列【4】——自定义ViewGroup实现双侧滑动

在上一篇文章《Android自定义组件系列【3】——自定义ViewGroup实现侧滑》中实现了仿Facebook和人人网的侧滑效果,这一篇我们将接着上一篇来实现双面滑动的效果。1、布局示意图:2、核心代码 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeas

水寒 4117

android 自定义上下滑动viewgroup,Android自定义ViewGroup实现弹性滑动效果

自定义View实现一个弹性滑动的效果,供大家参考,具体内容如下实现原理onMeasure()中测量所有子View@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// 测量所有子Viewint count = getChildCount();for (int i = 0; i < c...

weixin_30369405的博客 372

android使用ViewGroup实现滑动菜单

Android开发教程:自定义ViewGroup方法总结 [日期:2013-01-18] 来源:Linux社区  作者:lissdy [字体:大 中 小] 应用中需要添加一个滑动按钮,在网上看了几个Demo之后决定自定义ViewGroup来实现。 这里是对实现过程中自定义ViewGroup的方法总结。 关于ViewGroup,文档

xidianhuihui的专栏 1079

Android 解决滑动冲突的方法--ViewGroup中的requestDisallowInterceptTouchEvent(true)方法

当我们使用ScrollView和ViewFlipper或者ListView等等控件产生滑动冲突的时候,我们会觉得,怎么会有这样的设计,难道就没有更好的设计了吗?可是,当我们不得不处理这样的情况的时候,这个方法绝对是一个利器。         在ViewGroup的源码中并没有对这个方法有具体的使用,导致我之前根本不知道这个方法是该怎么使用的,其实这个方法的作用,当触摸到该ViewGrou

guibao513的专栏 1270

android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu

示意图就不展示了,和上一节的一样,滑动菜单SlidingMenu效果如何大家都比较熟悉,在这里我简单说明一下用自定义ViewGroup来实现.     实现方法:我们自定义一个ViewGroup实现左右滑动,第一屏隐藏,第二屏显示.     代码如下: package com.jj.sliding_6; import android.content.Context; import andr

jj120522的专栏 1万+

Android自己定义组件系列【4】——自己定义ViewGroup实现双側滑动

在上一篇文章《Android自己定义组件系列【3】——自己定义ViewGroup实现側滑》中实现了仿Facebook和人人网的側滑效果,这一篇我们将接着上一篇来实现双面滑动的效果。1、布局示意图:2、核心代码 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.on...

weixin_34248849的博客 97

android 自定义上下滑动viewgroup,Android自定义ViewGroup实现受边界限制的滚动操作(3)...

代码package com.example.libingyuan.horizontallistview.ScrollViewGroup;import android.content.Context;import android.util.AttributeSet;import android.util.DisplayMetrics;import android.view.MotionEvent;i...

weixin_33850805的博客 337

android 布局滑动监听,Android自定义viewgroup可滚动布局 GestureDetector手势监听(5)...

这篇效果和上一篇:https://www.jb51.net/article/100638.htm的效果是一样的,但是不再在OnTouchEvent中写代码,而是使用系统自带的类GestureDetector来监听手势以及滑动事件等等,它内置了滑动,点击,长按等事件,而且有快速滑动,比较方便,比自己写的细节处理要好。代码:package com.example.libingyuan.horizont...

weixin_39618339的博客 289

android:自定义横向滑动的 ViewGroup

效果图: 大概就是这样子的,然后可以左右滑动。 原来是想做成ViewPager的那种效果的,但是感觉那种更不实用。 这个效果很类似系统控件 HorizontalScrollView 了。 关键代码还是测量,布局,触摸事件拦截,触摸滑动。 完整代码: public class HorizontalView extends ViewGroup { private static final ...

Cat的专栏 734
上一篇: Android 可滑动的ProgressBar
下一篇: Android Overlay机制总结
彼天
博客等级 码龄11年 37粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值