2022-02-09 Android setLayoutParams动态修改RelativeLayout控件layout_width、layout_marginTop等。实际应用实例:控件随手指移动。
一、修改大致方法如下:
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) textview.getLayoutParams(); lp.leftMargin = 0; textview.setLayoutParams(lp);
二、实际应用实例:控件随手指移动。
1、布局文件文件RelativeLayout中有个ImageVIew,id是code。
2、首先我们要给控件设置触摸监听函数,监听按下,移动,抬起,移动等操作。
3、在手指移动的过程中用setLayoutParams改变控件的位置以及大小。也可以用layout函数,但是这里我没有用。本例中手指上下移动的时候控件上下移动。手指向左移动的时候控件会变小,手指向右滑动的时候控件会变大。
ll_move.setOnTouchListener(new View.OnTouchListener() {private int startY;private int startX;@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:Log.e("打印操作:", "按下了");//获取当前按下的坐标startX = (int) event.getRawX();startY = (int) event.getRawY();break;case MotionEvent.ACTION_MOVE:if(!is_move_to_modify)break;//获取移动后的坐标int moveX = (int) event.getRawX();int moveY = (int) event.getRawY();//拿到手指移动距离的大小int move_bigX = moveX - startX;int move_bigY = moveY - startY;//Toast.makeText(MainActivity.this,"\nX移动了" + move_bigX + "\nY移动了" + move_bigY, Toast.LENGTH_SHORT).show();//拿到当前控件未移动的坐标int left = ll_move.getLeft();int top = ll_move.getTop();//left += move_bigX;top += move_bigY;int right = left + ll_move.getWidth();int bottom = top + ll_move.getHeight();// ll_move.layout(left, top, right, bottom);startX = moveX;startY = moveY;RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) ll_move.getLayoutParams();SharedPreferences sp = getSharedPreferences("health_code", Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();// String str_test_time_location= String.valueOf(test_time_location);code_image_top = sp.getInt("code_image_top", 0);code_image_top =code_image_top+move_bigY;editor.putInt("code_image_top",code_image_top );editor.commit();// Toast.makeText(MainActivity.this,"lp.topMargin="+String.valueOf(lp.topMargin)+" move_bigY="+move_bigY+" ll_move.getTop()="+ll_move.getTop()+"code_image_top="+code_image_top, Toast.LENGTH_SHORT).show();lp.topMargin=lp.topMargin+move_bigY;ll_move.setLayoutParams(lp);if(move_bigX > 30){lp.height=lp.height+2;lp.width=lp.width+2;code_image_wh =lp.height;editor.putInt("code_image_wh",code_image_wh );editor.commit();ll_move.setLayoutParams(lp);Toast.makeText(MainActivity.this,"move right move_bigX "+move_bigX+"code_image_wh="+code_image_wh+"lp.height="+lp.height, Toast.LENGTH_SHORT).show();}else if (move_bigX < -30){lp.height=lp.height - 2;lp.width=lp.width - 2;code_image_wh =lp.height;editor.putInt("code_image_wh",code_image_wh );editor.commit();ll_move.setLayoutParams(lp);Toast.makeText(MainActivity.this,"move right move_bigX "+move_bigX+"code_image_wh="+code_image_wh+"lp.height="+lp.height, Toast.LENGTH_SHORT).show();}break;case MotionEvent.ACTION_UP:Log.e("打印操作:", "抬起了");break;}return true;//此处一定要返回true,否则监听不生效}});
4、涉及一点敏感的信息,这里就不上图。
四、参考文章
Android控件随手指的移动而移动_xiayiye5的博客-CSDN博客_android 随手指移动
Android 代码动态修改RelativeLayout布局 - 简书
Android动态设置Margin的方法 - 简书
2022-02-09 Android setLayoutParams动态修改RelativeLayout控件layout_width、layout_marginTop等。实际应用实例:控件随手指移动。相关推荐
- 动态修改RelativeLayout的宽高
我们经常会动态修改RelativeLayout的宽高,这样的代码,比较简单,就是修改Relativelayout的LayoutParams就可以.代码一般如下: RelativeLayout ss = ...
- 2011.09.09 ——— android 2.2 修改安装路径
2011.09.09 --- android 2.2 修改安装路径 android2.2比android2.1多了一个软件安装位置属性的添加: <manifest xmlns: android= ...
- Android怎么动态修改vector填充颜色?
android怎么动态修改vector填充颜色? 要动态修改Android中的矢量图形(Vector)填充颜色,可以按照以下步骤: 在您的布局文件中,添加一个 ImageView,并设置其 src 属 ...
- 修改sim卡号码 android,android 如何动态修改SIM卡应用名称 MT6572 MT6589
两种方法: 方法1: packages\apps\launcher2\src\com\android\launcher2\PagedViewIcon.java 1:6575.6573.6577平台: ...
- Java初级知识复习-2021.12.27~2022.02.09
文章目录 Java语法基础1 1.Java简介 Java三大版本含义 Java的特性和核心优势 2.Java开发环境配置 Java应用程序的运行机制 开发环境搭建 3.Java基础语法 4.Java基 ...
- android动态更新配置文件,Android如何动态修改Manifest文件
修改manifest文件Android Manifest.xml,添加相应的声明.在这里,我们需要将新定义的活动PrefsActivity注册到manifest文件. 同前面一样,在Eclipse中打 ...
- Android运行时修改Manifest,Android如何动态修改Manifest文件
慕妹3242003 修改manifest文件Android Manifest.xml,添加相应的声明.在这里,我们需要将新定义的活动PrefsActivity注册到manifest文件.同前面一样,在 ...
- android 动态修改资源,Android如何动态修改Manifest文件
修改manifest文件Android Manifest.xml,添加相应的声明.在这里,我们需要将新定义的活动PrefsActivity注册到manifest文件. 同前面一样,在Eclipse中打 ...
- android 动态更改主题,Android应用动态修改主题的方法示例
1.使用API设置主题 如下所示,在Activity中使用setTheme setTheme(R.style.MyTheme1); 2.调用API的时机 需要在super.onCreate(saved ...
- android 动态修改控件的宽高
今天,简单讲讲android如何动态设置控件的宽高. 这个其实也比较简单,但是之前做的时候出现了问题,代码里设置的宽高是dx,需要先转成dp.下面以RelativeLayout作为例子,简单记录一下. ...
最新文章
- 案例:Oracle dul数据挖掘 磁盘损坏dul提取数据文件中表的数据及l
- python的软件叫什么-python是什么软件
- js IE和Firefox下event处理
- 人脸识别进水_万维|人脸识别闸机怎么选?
- python以什么方式处理文件-Python文件修改和常用方法
- 数颜色(洛谷-P1903)
- 有望支撑半年时间!华为麒麟9000芯片库存约为1000万片
- try catch异常后会执行后面的代码吗_Java的异常体系
- Mac 安装 python brew
- armbian n1 桌面_Armbian5.89桌面版安装OpenMediaVault教程
- android TTS语音播报
- vue中删除表格中的一行记录后,如何让表格更新(性能优化)
- Python爬取豆瓣高分电影Top250
- 【高数】【本科笔记】【第七章 微分方程】【7.2 可分离变量的微分方程】
- phpnow测试PHP源码,phpnow php探针环境检测代码
- 关于BMP格式图片在终端显示的具体做法(超详细)
- 注塑模具设计时,需要依据哪些设定原则?
- 区间dp(Pangu and Stones)
- 图片转文字的app:智能、高效,你离大神就差一款清描!
- ARM V8 base instruction -- lse
热门文章
- 目前主要的计算机汉字输入方法是什么,[计算机汉字输入方法.ppt
- vue项目的elementui表格合并
- 初级程序员升中级程序员需要掌握哪些知识
- 小马哥---高仿苹果6 plus 主板型号Q33 6582芯片刷机拆机主板图与开机界面图 镜面后壳
- 构建数字高程模型的算法——不规则三角网(TIN, Triangulated Irregular Network)
- mysql 定时调用sp_使用shell脚本调用mysql数据库存储过程,并设置定时任务
- k-means+python︱scikit-learn中的KMeans聚类实现( + MiniBatchKMeans)
- c语言中判断c是否为小写字母,C语言判断英文字符大小写的方法
- 元真先生算命为什么很准
- Representation Learning 表示学习(简单笔记)