精华内容
下载资源
问答
  • 安卓悬浮按钮,依附于decorView不需要各种权限!你懂的!同时支持拖拽,长按事件自动靠边 唯一缺陷在于依附当前activity因此在activity切换的时候会覆盖,但是相比于各种蛋疼的权限 我觉得这点儿是可以接受的 来来来 先...
  • 安卓可拖拽悬浮按钮

    千次阅读 2017-04-17 15:25:31
    几个月前,我写了一篇文章 《Android 可拖拽悬浮吸附按钮》 这篇文章的实现方式有点影响性能,介于当时的能力不足也是有一定原因的。这几天重新实现了一种效果更好的方式,这种方式的优点是,你可以就像使用普通的...

    几个月前,我写了一篇文章 《Android 可拖拽悬浮吸附按钮》 这篇文章的实现方式有点影响性能,介于当时的能力不足也是有一定原因的。这几天重新实现了一种效果更好的方式,这种方式的优点是,你可以就像使用普通的控件的一样使用它(实际上它就是普通的控件)并且满足按钮点击效果,代码上也大大的比之前简化了。记得之前的方式 应为事件被改写了还得单独写一个接口来用来判断点击事件。

    实现思路

    1. 通过重写控件的onTouchEvent方法监听触摸效果。
    2. 通过View的setX()和setY()方法实现移动。
    3. 使用属性动画实现边缘吸附效果。

    源代码没多少行,这里先把代码线上。此处我是继承了FloatingActionButton,使它拥有了拖拽移动的功能。

    public class DragFloatActionButton extends FloatingActionButton{
    
        private int screenWidth;
        private int screenHeight;
        private int screenWidthHalf;
        private int statusHeight;
    
        public DragFloatActionButton(Context context) {
            super(context);
            init();
        }
    
        public DragFloatActionButton(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }
    
        public DragFloatActionButton(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            init();
        }
    
        private void init(){
            screenWidth= DisplayUtil.getMobileWidth(getContext());
            screenWidthHalf=screenWidth/2;
            screenHeight=DisplayUtil.getMobileHeight(getContext());
            statusHeight=DisplayUtil.getStatusHeight((Activity) getContext());
        }
    
        private int lastX;
        private int lastY;
    
        private boolean isDrag;
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            int rawX = (int) event.getRawX();
            int rawY = (int) event.getRawY();
            switch (event.getAction() & MotionEvent.ACTION_MASK) {
                case MotionEvent.ACTION_DOWN:
                    isDrag=false;
                    getParent().requestDisallowInterceptTouchEvent(true);
                    lastX=rawX;
                    lastY=rawY;
                    break;
                case MotionEvent.ACTION_MOVE:
                    isDrag=true;
                    //计算手指移动了多少
                    int dx=rawX-lastX;
                    int dy=rawY-lastY;
                    //这里修复一些华为手机无法触发点击事件的问题
                    int distance= (int) Math.sqrt(dx*dx+dy*dy);
                    if(distance==0){
                        isDrag=false;
                        break;
                    }
                    float x=getX()+dx;
                    float y=getY()+dy;
                    //检测是否到达边缘 左上右下
                    x=x<0?0:x>screenWidth-getWidth()?screenWidth-getWidth():x;
                    y=y<statusHeight?statusHeight:y+getHeight()>screenHeight?screenHeight-getHeight():y;
                    setX(x);
                    setY(y);
                    lastX=rawX;
                    lastY=rawY;
                    //Log.i("getX="+getX()+";getY="+getY()+";screenHeight="+screenHeight);
                    break;
                case MotionEvent.ACTION_UP:
                    if(isDrag){
                        //恢复按压效果
                        setPressed(false);
                        Log.i("getX="+getX()+";screenWidthHalf="+screenWidthHalf);
                        if(rawX>=screenWidthHalf){
                            animate().setInterpolator(new DecelerateInterpolator())
                                    .setDuration(500)
                                    .xBy(screenWidth-getWidth()-getX())
                                    .start();
                        }else {
                            ObjectAnimator oa=ObjectAnimator.ofFloat(this,"x",getX(),0);
                            oa.setInterpolator(new DecelerateInterpolator());
                            oa.setDuration(500);
                            oa.start();
                        }
                    }
                    break;
            }
           //如果是拖拽则消耗事件,否则正常传递即可。
            return isDrag || super.onTouchEvent(event);
        }
    }

    代码很简单,

    手指按下

    首先是处理手指按压下的事件,这里我们把拖拽标识符设置为false并记录当前点击的屏幕坐标。然后我们在移动事件处。

    手指移动

    这里我们把拖拽标识符设置为true,因为手指移动了。然后我们需要计算手指移动了多少偏移量

    //计算手指移动了多少
    int dx=rawX-lastX;
    int dy=rawY-lastY;

    而后的两行代码表示控件需要移动的具体距离,后面有一个简单的边缘检测计算。最终通过调用setX以及setY方法实现控件的移动。

    手指松开

    这里如果是拖拽动作我们才需要处理自己的逻辑否则直接跳过即可。在这里我们首先恢复了按钮的按压效果,在源代码中找到 setPressed(boolean) 方法,这是处理按钮点击效果用的,在这里当手指松开后我们需要恢复按钮原来的效果。然后在判断控件需要往哪边吸附,吸附的过程就是做属性动画而已,原理还是不断的改变setX方法让按钮靠边移动

    总结

    这种实现方式,我们能正常的使用控件的单击时间和长按事件,因为只有当控件拖拽的时候我们才自己消耗事件否则全部交给系统处理。这是一种比较好的实现方式,通过这个例子其实我们还能实现更多的控件移动效果。事实上只需要改变所继承的控件类型就可以了

    PS:最近发现在部分华为手机上无法触发点击事件,调试发现当我手指按压的时候会一直触发MotionEvent.ACTION_MOVE事件而事实上我手指一点都没有动,且Log出现的数据显示移动距离一直是0.坑爹。只能加一个距离判断了。上面的代码已经修复了这个问题。

    转载自http://www.ctolib.com/topics-113424.html

    展开全文
  • Android源码是一个比较不错的悬浮操作的按钮案例,源码fab,悬浮操作按钮,可以定义不同的样式。效果出来还是挺漂亮的,大家可以试试。.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行...
  • 这次给大家带来怎样使用...React Native悬浮按钮组件:react-native-action-button,纯JS组件,支持安卓和IOS双平台,支持设置子按钮,支持自定义位置和样式和图标。效果图安装方法npm i react-native-action-bu...

    这次给大家带来怎样使用React Native做出悬浮按钮组件,使用React Native做出悬浮按钮组件的注意事项有哪些,下面就是实战案例,一起来看一下。

    React Native悬浮按钮组件:react-native-action-button,纯JS组件,支持安卓和IOS双平台,支持设置子按钮,支持自定义位置和样式和图标。

    效果图

    fdc3691141c837663e443f3d1510c133.gif

    安装方法npm i react-native-action-button --save

    react-native link react-native-vector-icons

    因为用到了react-native-vector-icons图标组件,需要做下link。如果你项目中已经使用了react-native-vector-icons,那就不需要这步了。

    示例代码

    悬浮按钮组件示例

    console.log("notes tapped!")}>

    {}}>

    {}}>

    buttonColor="rgba(231,76,60,1)"

    onPress={() => { alert('你点了我!')}}

    renderIcon={() => (

    新增

    )}

    />

    主要参数说明

    ActionButtonsize:按钮的大小,默认为56

    active:是否显示按钮

    position:按钮的位置,可以为left center right

    offsetX:X轴上的偏移位置

    offsetY:Y轴上的偏移位置

    onPress:点击事件

    onLongPress:长按事件

    buttonText:按钮标题

    verticalOrientation:弹出按钮的方向,up 或者 down

    renderIcon:可以自定义按钮显示的样式,默认是一个加号

    ActionButton.Itemsize:按钮的大小,默认为56

    title:按钮标题

    buttonColor:按钮颜色

    onPress:点击事件

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    展开全文
  • 控件介绍 属性介绍 注意事项 例子效果 设计思路 代码如下:

    例子效果

    这里写图片描述

    代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_margin="16sp"
            android:src="@drawable/ic_done"
            android:elevation="8dp"/>
    
    </RelativeLayout>
    展开全文
  • React Native悬浮按钮组件:react-native-action-button,纯JS组件,支持安卓和IOS双平台,支持设置子按钮,支持自定义位置和样式和图标。 效果图 安装方法 npm i react-native-action-button --sav...
        

    本文原创首发于公众号:ReactNative开发圈,转载需注明出处。

    React Native悬浮按钮组件:react-native-action-button,纯JS组件,支持安卓和IOS双平台,支持设置子按钮,支持自定义位置和样式和图标。

    效果图

    安装方法

    npm i react-native-action-button --save
    react-native link react-native-vector-icons

    因为用到了react-native-vector-icons图标组件,需要做下link。如果你项目中已经使用了react-native-vector-icons,那就不需要这步了。

    示例代码

    <View style={styles.container}>
            <Text style={styles.welcome}>
              悬浮按钮组件示例
            </Text>
            <ActionButton buttonColor="rgba(231,76,60,1)" position='left' verticalOrientation='up'>
              <ActionButton.Item buttonColor='#9b59b6' title="New Task" onPress={() => console.log("notes tapped!")}>
                <Icon name="ios-create-outline" style={styles.actionButtonIcon} />
              </ActionButton.Item>
              <ActionButton.Item buttonColor='#3498db' title="Notifications" onPress={() => {}}>
                <Icon name="ios-notifications-off" style={styles.actionButtonIcon} />
              </ActionButton.Item>
              <ActionButton.Item buttonColor='#1abc9c' onPress={() => {}}>
                <Icon name="ios-done-all-outline" style={styles.actionButtonIcon} />
              </ActionButton.Item>
            </ActionButton>
    
            <ActionButton
              buttonColor="rgba(231,76,60,1)"
              onPress={() => { alert('你点了我!')}}
              renderIcon={() => (<View style={styles.actionButtonView}><Icon name="ios-create-outline" style={styles.actionButtonIcon} />
              <Text style={styles.actionButtonText}>新增</Text>
              </View>)}
            />
          </View>

    主要参数说明

    ActionButton

    size:按钮的大小,默认为56
    active:是否显示按钮
    position:按钮的位置,可以为left center right
    offsetX:X轴上的偏移位置
    offsetY:Y轴上的偏移位置
    onPress:点击事件
    onLongPress:长按事件
    buttonText:按钮标题
    verticalOrientation:弹出按钮的方向,up 或者 down
    renderIcon:可以自定义按钮显示的样式,默认是一个加号

    ActionButton.Item

    size:按钮的大小,默认为56
    title:按钮标题
    buttonColor:按钮颜色
    onPress:点击事件

    完整示例

    完整代码:GitHub - forrest23/ReactNativeComponents: React Native组件大全,介绍React Native常用组件的使用方法和使用示例
    本次示例代码在 Component10文件夹中。请不要吝啬你们的Star

    组件地址

    GitHub - mastermoo/react-native-action-button: customizable multi-action-button component for react-native

    微信不让跳转外链,可以点击查看原文来查看外链GitHub内容。

    欢迎关注我的微信公众号:ReactNative开发圈

    展开全文
  • React Native悬浮按钮组件:react-native-action-button,纯JS组件,支持安卓和IOS双平台,支持设置子按钮,支持自定义位置和样式和图标。 效果图 安装方法 npm i react-native-action-button --save react-...
  • Android滑出菜单和悬浮按钮的实现

    千次阅读 2019-06-06 08:45:21
      现在的大部分安卓应用都有用到悬浮按钮和滑出菜单,比如我们手机上的记事本用到了悬浮按钮,qq,网易云音乐等用到了滑出菜单,而且这两个功能用上的话也会让你的app给人的感觉好一点。 效果图如下: 滑动菜单  ...
  • 1、效果图如下: 这效果用户体验还是很酷炫,今天我们就来讲解如何实现这个效果。 2、分析 为了方便理解,作图分析 如图所示,整个页面分为四个部分:  1、悬浮内容,floatView  2、顶部内容,headView  3、...
  • PS:悬浮拖拽按钮的使用也是非常广的,就比如说上一个网站的时候就会弹出一个对话框,对话框可以随意拖动,那么安卓手机上可以实现吗,答案是可以的,这就用到了自定义view的按压点击等事件,本文的例子比较简单是...
  • 敲酷炫的 ViewPager 切换效果和弹性指示器 android音乐播放器 android版俄罗斯方块 ColorPicker是一款android取色器,想取哪里点哪里!! 一个增强BottomNavigationView的安卓库 带有进度动画的Android自定义...
  • 安卓组件控件

    2017-12-15 07:31:46
    FloatingDragButton:炫酷的拖拽浮动按钮 IOS的Assistive Touch效果很炫酷,可以任意拖拽,同时点击后会展开菜单栏。然而,这不只是IOS的特权,Android也可以实现。但是由于悬浮窗需要申请权限,所以本文仅在app...
  • 效果展示 流程图 autojs版本 8.7.7-0 get知识点 导入安卓类 停止其他脚本 设置状态栏颜色 获取状态栏高度 viewpager的基本使用 Switch的基本使用 本地存储的使用 无障碍权限判断 悬浮窗权限判断 输入框监听 打开...
  • 本篇文章主要介绍以下几个知识点:Toolbar滑动菜单悬浮按钮卡片式布局 下拉刷新 可折叠式标题栏 蒙奇·D·路飞  Material Design 是由谷歌的设计工程师基于优秀的设计原则,结合丰富的创意和科学技术所发明的...
  • 安卓界面控件滑动置顶

    千次阅读 2015-10-15 11:30:11
    前几天项目需要实现那种控件滑动置顶悬浮效果,类似于美团网的购买按钮,从网上找到一些解决的办法,基本就是在顶部先写一个一样的置顶控件隐藏,置顶控件滑到顶部时,次控件在显示。但是,项目里面需要滑动的部分...
  • 悬浮按钮FloatingActionButton5.轻量级对话框SnackBar 6.数字选择器NumberPicker7.开关Switch 8.图片重叠查看StackView9.涟漪效果CardView 10.刷新操作SwipeRefreshLayout11.百分比容器PercentRelativeLayout,...
  • 悬浮按钮和可交互提示的使用 2.实现过程 (1)添加依赖 implementation 'androidx.recyclerview:recyclerview:1.0.0' //加载网络图片 implementation 'com.github.bumptech.glide:glide:4.9.0' (2)修改act
  • 首页是极简的多引擎搜索页面,输入内容后,鼠标放到搜索按钮悬浮选择使用哪个搜索,你可以设置主页使用,右上角的菜单按钮可以替换到其他页面。 网站导航 这个导航页是我收集了很多不错的网站集合出来的,顶部添加了...
  • [精仿]360手机助手-14.2.6更新(CSkin Demo)

    千次下载 热门讨论 2014-02-19 21:28:54
    5.解决SkinTabControl left和right绘制模式下tab标签悬浮样式不变化问题。 6.所有控件采用最高质量模式绘制文字,防止字体模糊以及锯齿。 CC2013-12.8 1.优化SkinTabControl的效率,不再呢么闪烁,360DEMO直接替换...
  • 15.修复SkinTabControl,Tabpage标签中关闭按钮关闭不了的Bug,解决,悬浮至Tabpeg关闭按钮悬浮效果的Bug。 16.修复若干细节。 CSKIN-14.4.13 1.优化SkinTabControl与好友列表的内存占用问题。 2.内置Mac模板样式...
  • [精仿]QQ2013局域网通讯(10.30更新版-带最新版界面库)

    千次下载 热门讨论 2013-11-02 16:18:45
    2.好友列表加入好友登录平台属性:安卓 苹果 WEBQQ PC 3.优化标题绘制模式,新添标题绘制模式属性。 4.新添标题偏移度属性。 5.加入圆形进度条控件:ProgressIndicator。 CC2013-9.5.2 1.优化截图控件,截图工具栏...
  • ApWiFi Route v1.0.5.3

    2012-05-11 16:52:17
    改良悬浮图标显示 改良无线信号算法 更换SEH的编译方式 改良路由重启调度算法 1.0.5.2[2011.07.17] 修复一处COM引用漏洞 改进安全代码 改良部份UI控制代码 若干细节改良 1.0.5.1[2011.07.16] 加入修复80040201...
  • ApWiFi1.0.4.3正式绿色版

    2011-06-06 09:15:15
    增加安卓补丁[感谢异者 Me]*这个在群里下载 增加对硬件路由上网方式的兼容[感谢九两金] 增加出错代码的解决方案帮助信息 1.0.1.3[2011.04.28] 修正了一个英文语法错误[感谢Neol] 调整了部份UI界面[感谢ㄒňёЕиd....
  • 支持直接源码集成到example的方式,方便编译到安卓,for web套件等。 支持编译成wasm文件,直接网页运行,可以在谷歌、火狐、edge等浏览器运行,原生性能。 每个控件的源代码都有详细中文注释,都按照统一设计规范...
  • PowerWord.exe

    2020-04-01 09:23:25
    支持生词本同步、支持悬浮窗查词。 Ÿ特点 1.领先的C/S应用模式稳定灵活 《金山词霸2014企业版》的客户端验证方式十分灵活,运行稳定性极高。服务器端的安装流程同样简单便捷,同时支持离线激活机制,保证了验证...
  • 界面效果 uni-starter集成的功能包括: 个人中心:登录注册(含用户名密码登录、手机号验证码登录、app一键登录、微信登录、Apple登录、微信小程序登录)、修改密码、忘记密码、头像更换、昵称修改、积分...
  • 界面效果 uni-starter集成的功能包括: 个人中心:登录注册(含用户名密码登录、手机号验证码登录、app一键登录、微信登录、Apple登录、微信小程序登录)、修改密码、忘记密码、头像更换、昵称修改、积分...
  • 内置联网失败的重试页面(不是错误弹框,页面有重试按钮)、更漂亮的分享菜单页面 内置拦截器: 页面路由拦截,配置需强制登陆的页面;打开时检测,如果token无效就自动跳转到登陆页 优雅实现:自动引导打开选择...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

安卓悬浮按钮效果