在一些界面上,我们可能需要实现可以移动的按钮等功能,最简单的方式是调用View.layout(),任何布局上的空间都可以支持这种方式移动,上下左右参数值是相对于父viewgroup而言的。

1
2
3
public void layout(int l, int t, int r, int b)
eg.
button.layout(newLeft, newTop, newRight,newBottom);

但是这种方式有个缺陷就是,当同一个viewgroup中有控件更新(界面刷新)时,移动的控件会复位,即回到一开始的位置,这常常会让人莫名其妙。

另外一种方法是调用MarginLayoutParams.setMargins(),重新设置控件位置参数来实现控件移动效果。这种方式比较适合RelativeLayout、FrameLayout,AbsoluteLayout,对于LinearLayout,因为最后增加的控件总在最下或最右,所以达不到移动效果,TableLayout也不行。

1
2
3
4
5
public MarginLayoutParams(MarginLayoutParams source)
eg.
FrameLayout.LayoutParams btnLp = (FrameLayout.LayoutParams)button.getLayoutParams();
btnLp.setMargins(newLeft, newTop, newRight, newBottom);   
button.requestLayout();

Android不建议应用直接调用layout()方法,所以个人建议选择FrameLayout + setMargins()实现控件动态移动效果,还有一个经常搭配使用的方法是bringToFront(),当控件被盖住看不见时相当有用。

本文转自sarchitect 51CTO博客,原文链接:http://blog.51cto.com/stevex/1266926,如需转载请自行联系原作者

Android 动态移动控件实现相关推荐

  1. 深入浅出Android动态载入jar包技术

    在实际项目中.因为某些业务频繁变更而导致频繁升级client的弊病会造成较差的用户体验,而这也恰是Web App的优势,于是便衍生了一种思路.将核心的易于变更的业务封装在jar包里然后通过网络下载下来 ...

  2. android 实现表格横向混动_Flutter混合开发和Android动态更新实践

    Flutter混合开发和Android动态更新实践 感谢闲鱼和csdn的文章给的思路: 本篇是实践性文章包含两部分 将Flutter工程编译后的文件集成到Android项目 将Flutter代码热更新 ...

  3. android 动态 dex,Android 动态加载dex

    首先如果仅仅是因为64K method的问题可以直接看这里DexGuard.Proguard.Multi-dex给出的解决方案. 本文主要讨论从编译层面,dex动态加载器选择层面以及安全层面讨论dex ...

  4. android 动态设置padding,Android动态设置控件大小以及设定margin以及padding值

    http://www.aichengxu.com/Java/73893.htm Android动态设置控件大小以及设定margin以及padding值,有需要的朋友可以参考下. 一.概述 在andro ...

  5. Android动态权限管理模型(4.3-6.0)

    Google从4.3开始就试图引入AppOpsManager动态权限管理模型,但是,由于感觉技术不太成熟,在Release版本中,这个功能都是被隐藏掉的,所以官方Rom一直没有动态权限管理机制.直到A ...

  6. Android动态加载技术初探

    一.前言: 现在,已经有实力强大的公司用这个技术开发应用了,比如淘宝,大众点评,百度地图等,之所以采用这个技术,实际上,就是方便更新功能,当然,前提是新旧功能的接口一致,不然会报Not Found等错 ...

  7. 【Android NDK 开发】Ubuntu 函数库交叉编译 ( Android 动态库交叉编译 | Android 静态库交叉编译 )

    文章目录 I . Ubuntu 中交叉编译 Android 动态库 II . Ubuntu 中交叉编译 Android 静态库 I . Ubuntu 中交叉编译 Android 动态库 1 . 要编译 ...

  8. Android动态加载黑科技 动态创建Activity模式

    基本信息 Author:kaedea GitHub:android-dynamical-loading 代理Activity模式的限制 还记得我们在代理Activity模式里谈到启动插件APK里的Ac ...

  9. Android动态加载进阶 代理Activity模式

    基本信息 作者:kaedea 项目:android-dynamical-loading 技术背景 简单模式中,使用ClassLoader加载外部的Dex或Apk文件,可以加载一些本地APP不存在的类, ...

最新文章

  1. (血和泪的成果)使用PageHelper分页插件进行后台分页
  2. 中小企业团队敏捷产品开发流程最佳实践
  3. C++——const加深理解之const在函数后
  4. 英语国家的学生学语法么?_纪念国家语法日
  5. python-day76--django-中间件
  6. 百科知识 STEP文件如何打开
  7. Wpf ScrollBar自定义样式
  8. bios更新工具_5分钟教会您升级bios主板,华硕主板BIOS教程
  9. 股票大宗交易对股价走势的影响
  10. 罗比机器人说明书_罗比_机器人人物_我要机器人
  11. 任鸟飞FPS类型游戏绘制,骨骼,u3d,UE4和游戏安全,反外挂研究 (三)
  12. 每天一句英语(有道)
  13. windows无法格式化u盘_Windows系统提示U盘无法完成格式化的解决方法
  14. 破解Excel的宏密码
  15. 豆瓣电影数据可视化大屏
  16. python零基础自学英语软件下载_GitHub - geniux-TI/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...
  17. Android 实践:做一款新闻 APP
  18. BODIPY-TR氟化硼二吡咯偶联神经酰胺/炔烃/氨基/羧基等活性基团
  19. 摩尔定律,梅特卡夫定律和科斯定律
  20. Oracle12C静默安装 Centos7

热门文章

  1. [译]AppExtension编程指南:扩展基础1
  2. 随机获取图片的api接口
  3. java处理json的工具类(list,map和json的之间的转换)
  4. php7 viewmodel,【初念科技】| php框架实例: Laravel之Model Observer模型
  5. WebLogic中如何设置Spring Boot项目的属性
  6. Jenkins 在Windows下插件无法安装问题解决
  7. 8.1 Ext JS应用测试概览
  8. K-th Closest Distance
  9. CSS中meta标签的viewport
  10. Linux下的hostname命令