android中改变view位置的几种方法

Android View(一)——View的基础知识 目录一.View的基础知识1.什么是View2.View的位置参数3.MotionEvent4. TouchSlop5. VelocityTracker6. GestureDetector 一.View的基础知识 1.什么是View View是一种界面层的控件的一种抽象,它代表了一个控件,是Android中所有控件的基类。 2.View的位置参数 3.MotionEvent 在我们触摸屏幕的过程中,可以分为三种情况,分别是按下、滑动、弹起。Android中为我们封装好了一个MotionEvent类,使 阅读详情

1. 调用 layout方法

    public void layout(int l, int t, int r, int b) {
        int oldL = mLeft;
        int oldT = mTop;
        int oldB = mBottom;
        int oldR = mRight;
        boolean changed = setFrame(l, t, r, b);
        if (changed || (mPrivateFlags & LAYOUT_REQUIRED) == LAYOUT_REQUIRED) {
            if (ViewDebug.TRACE_HIERARCHY) {
                ViewDebug.trace(this, ViewDebug.HierarchyTraceType.ON_LAYOUT);
            }

            onLayout(changed, l, t, r, b);
            mPrivateFlags &= ~LAYOUT_REQUIRED;

            if (mOnLayoutChangeListeners != null) {
                ArrayList<OnLayoutChangeListener> listenersCopy =
                        (ArrayList<OnLayoutChangeListener>) mOnLayoutChangeListeners.clone();
                int numListeners = listenersCopy.size();
                for (int i = 0; i < numListeners; ++i) {
                    listenersCopy.get(i).onLayoutChange(this, l, t, r, b, oldL, oldT, oldR, oldB);
                }
            }
        }
        mPrivateFlags &= ~FORCE_LAYOUT;
    }

2.  设置MarginLayoutParams, 然后调用setLayoutParams()

    public void setLayoutParams(ViewGroup.LayoutParams params) {
        if (params == null) {
            throw new NullPointerException("Layout parameters cannot be null");
        }
        mLayoutParams = params;
        requestLayout();
    }

3. 外容器scrollTo 方法。改变view窗体位置。会改变所有的子View位置

    public void scrollTo(int x, int y) {
        if (mScrollX != x || mScrollY != y) {
            int oldX = mScrollX;
            int oldY = mScrollY;
            mScrollX = x;
            mScrollY = y;
            invalidateParentCaches();
            onScrollChanged(mScrollX, mScrollY, oldX, oldY);
            if (!awakenScrollBars()) {
                invalidate(true);
            }
        }
    }


安卓基础知识之View篇(一):View 必须要知道的基础知识 安卓基础知识系列旨在简明扼要地提供面试或工作中常用的基础知识,让对安卓还不太熟悉的小伙伴更快地入门。同时自己在工作中,也没法完全记住所有的基础细节,写这样的系列文章,可以让自己形成一个更完备的知识体系,同时给自己日后留个知识参考。 开始的开始 View 是除了安卓四大组件以外用的最多的控件,我们需要利用 Android 内置的 View 控件(TextView、LinearLayout等)完成业务需求,有时甚至需要自定义控件来满足特殊的业务需求。View 还负责与用户的交互(点击、滑动、长按等操作),掌. 阅读详情

相关推荐

Android 实现动态修改 View 位置

接着,我们修改布局参数中的位置信息,将要移动的 View 放置在指定的坐标点上。最后,我们调用 setLayoutParams 方法将修改后的布局参数应用到 View 上,从而实现动态改变 View 位置的效果。总结一下,要实现动态改变 View 位置的功能,我们需要通过获取布局参数并修改相应的位置信息来实现。这样,我们就能够根据坐标点动态地调整 View 的位置,达到我们想要的效果。接下来,在 Java 代码中获取到我们要操作的 View,并且获取它的布局参数。你可以根据自己的需求添加更多的功能和逻辑。

2301_79331328的博客 1270

Android View的三种移动方式浅谈

要使View在规定的时间中移动到指定的位置,我们会调用startScroll()方法,startScroll()是Scroller类中的方法,另外Scroller类中还有一个filing()方法也是很常用的,它主要是处理平滑的移动,一般营造滑动之后的惯性效果,使得View的移动更逼真。

hdxx2022的博客 621

Android 根据坐标点动态改变View的位置

在开发项目中,需要动态改变View的位置,其实只需要用api的 layout()方法即可,不断改变坐标值,通过onTouchEvent()来获取点的坐标点,然后计算出View的宽和高就可以了 代码如下: private RelativeLayout main_area;//需要移动的view private void initview(){ main_area=(RelativeLayout)findViewById(R.id.main_area); capture_img

安卓兼职framework和app工程师的博客 3004

Android 更改 View 在屏幕的坐标位置

Android 更改 View 在屏幕的坐标位置 在Android开发中,有时我们需要动态地改变UI元素(View)的坐标位置,以提供更好的用户体验。本文将详细介绍如何实现这一点,并提供必要的代码示例和解释。我们将通过以下几个步骤来实现这一目标。 流程步骤 以下是更改View坐标位置的基本步骤: 步骤 描述 ...

weixin_40358887的博客 595

MIT6.824-lab2D-2022(日志压缩详细讲解)

从paper中去讲解,并实现关于lab2D的代码。

幸平的博客 6034

使用VS Code创建第一个Flutter工程

你可以使用任意文本编辑器结合命令行工具来开发Flutter应用。然而,我们推荐使用本文介绍的编辑器插件以获取更好的开发体验。这些插件提供了代码补全、代码高亮、widget辅助编辑等功能,以及为项目的运行和调试提供支持。推荐的开发工具有VS Code、Android Studio、IntelliJ。本文将重点介绍如何使用VS Code进行Flutter应用开发。

2501_91373349的博客 2126

Android ConstrainLayout布局中View位置的介绍与使用

ConstrainLayout是一款布局View,再Design库中,现已被大家广泛接受并使用。ConstrainLayout的布局采用的方式和其他都不同,他的对其方式是类似RelativeLayout,但是和RelativeLayout有明显的区别。 在布局渲染的时候,ConstrainLayout的子View是通过在一个容器中找到自己的位置,通过位置和对其方式来固定,所以在布局优化中,尝尝被提起到。

1041

【腹腔镜数据集】Cholec80+CholecSeg8k2020+Endoscapes2024

计算机辅助手术的发展旨在提高手术的正确性和安全性。然而,研究人员和工程师却面临着开发和训练更好算法所需的注释数据有限的问题。因此,同步定位与建图(SLAM)等基础算法的发展受到限制。基于Cholec80数据集,从Cholec80中的17个视频片段中提取了8,080个腹腔镜胆囊切除术图像帧,对图像进行注释并向公众发布。该数据集名为 CholecSeg8K。这些图像中的每一个都以十三个类别的像素级注释,这些类别通常在腹腔镜胆囊切除术中发现。

Toky_min的博客 2017

关于Android View的三种移动方式

要使View在规定的时间中移动到指定的位置,我们会调用startScroll()方法,startScroll()是Scroller类中的方法,另外Scroller类中还有一个filing()方法也是很常用的,它主要是处理平滑的移动,一般营造滑动之后的惯性效果,使得View的移动更逼真。...

xiaoweids的博客 1408

231003-四步MacOS-iPadOS设置无线竖屏随航SideCar

新建虚拟屏幕参考文献。

专注机器学习之路 7484

任务混部最少服务器数量计算问题

这里的并行度指的是该任务运行时会占用的服务器数量。要注意的是,一个服务器在每个时刻可以被任意任务使用,但同一时刻最多只能被一个任务占用,并且任务运行结束后会立即释放服务器(结束时刻不占用)。最后,我们从字典中找出服务器数量的最大值,这个最大值就是完成这批任务混部最少需要的服务器数量。对于每个任务,我们会遍历其对应的时间区间,将该任务的并行度累加到对应时刻的服务器数量上。任务混部的目标是让这批任务由同一批服务器承载运行,你需要计算完成这批任务混部最少需要多少服务器,以此来最大化控制资源成本。

m0_62153576的博客 104

Android,动态改变View大小和位置

动态改变view大小 view的LayoutParams的初始值为null,先set后才能get 对于直接new出来的view,setLayoutParams后,getLayoutParams才不为null 在xml布局中引用view,设置layout_width和layout_height,实质上是setLayoutParams 如果new出来的view,还没有加入到布局容器中,view的LayoutParams类型可以设置为ViewGroup.LayoutParams view加入到父.

不止于代码 1万+

YOLOv11 快速入门指南 | 10分钟吃透网络结构与新特性

2024 年 9 月 30 日,Ultralytics 发布了 YOLOv11,这是继 YOLOv8、v9、v10 之后的最新一代实时目标检测模型。 与前几代相比,YOLOv11 在保持“单阶段、实时、端到端”三大基因的同时,带来了两大核心升级:一句话总结:YOLOv11 = 更快 + 更准 + 更少参数。 2.2 微观单元:C3k2 与 C2PSA 2.2.1 C3k2 模块 作用:替换 YOLOv8 的 C2f,做跨阶段局部特征融合。 核心代码(ultralytics/nn/modules/block

shrgegrb的博客 1407

Android自定义View之View的位置参数

最近在学习自定义View,总是被View的显示的位置搞的一头雾水。对于一个View的位置,我比较迷惑: View在显示在哪个位置? View的宽和高的定义? 什么是ViewView是Android中所有控件的基类,不管是Button或者TextView,还是LinearLayout或者ViewGroup,都继承于View。所以说,View是用户界面最基本的控件,用于创建交互式UI组件。ViewGro

行云间 7555

【HAL库】STM32CubeMX开发----STM32F407----ETH+LWIP----TCPclient客户端

STM32F407开发板 为TCPclient客户端,PC端 为TCPserver服务端,相互之间的发送和接收实验。

MQ0522的博客 3046

Autosar配置——导入DBC后配置SecOC同步报文和同步请求报文

在Autosar中,安全性是一个重要的考虑因素,而SecOC(Secure On-Board Communication)是一种用于保护通信数据完整性和安全性的安全机制。在上述示例中,我们配置了同步报文和同步请求报文的属性。接下来,我们需要在Autosar中配置同步报文和同步请求报文。同步报文用于在通信双方之间同步SecOC状态,而同步请求报文用于请求SecOC的状态信息。通过以上配置,我们成功地导入了DBC文件,并在Autosar系统中配置了SecOC同步报文和同步请求报文。希望以上信息对您有所帮助!

CyberSphinx的博客 649

将 View动态改变后的位置 设置为 初始位置

利用缓存来存,读取动态改变后的X,YsetX()和setY()来设置初始位置。效果代码:import android.annotation.SuppressLint; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Color; import andr...

楚的博客 1947

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

浅涉-----改变view位置的几种方式

为更好说明 代码动态改变view的方式,此处以一个随手指滑动而变化的自定义view的讲解为例 随手指而动,少不了对 onTouchEvent 方法的处理,基本思路为3步: 1.手指摁下的时候,记录当前x,y坐标 2.手指移动后未抬起的时候,获取当前手指处的x,y坐标,算出位移差,给view重新设置位置 3.手指抬起的时候,将当前x,y坐标记录下来 首先自定义 View @

神罗天征 2435

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ScrollTo,ScrollBy是如何改变子View位置的

我们知道ScrollTo(int x,int y)、ScrollY(int x,int y)不会改变View本身的位置,但是可以改变子View和本身内容(onDraw中绘制的东西)的位置,口说无凭,下面用一个例子来说明 MyView.java public class MyView extends ViewGroup { Paint paint; public MyView

gu_solo的博客 1541

Android刘海屏适配及view被摄像头遮挡动态改变位置

Android刘海屏适配 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽

weixin_43888401的博客 6229

安卓View理解总结

安卓View理解总结 参考 link.网站写的一篇博客; 一.视图坐标系. View是Android所有控件的基类,同时ViewGroup也是继承自View,下面这张图可以直观了解。 1.Android坐标系. Android中有两种坐标系,分别为Android坐标系和视图坐标系,首先我们先来看看Android坐标系。 在Android中,将屏幕的左上角的顶点作为Android坐标系的原点,这个...

gzy19805026167的博客 2562

android动态添加控件在指定位置,Android 如何动态添加 View 并显示在指定位置。

引子最近,在做产品的需求的时候,遇到 PM 要求在某个按钮上添加一个新手引导动画,引导用户去点击。作为 RD,我哗啦啦的就写好相关逻辑了。自测完成后,提测,PM Review 效果。看完后,PM 提了个问题,这个动画效果范围能不能再大一点?PM 解释到按钮本身大小不是很大,会导致引导效果不够明显,也会导致用户的点击欲望不够。我想了想,似乎很有道理啊,但是这个能做到吗?答案是当然可以呢。如果单纯从现...

weixin_42502382的博客 2359

android 动态改变view,Android 动态添加 View 并显示在指定位置

原始代码:protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}决定放置的位置:public void setX(float x) {setTranslationX(x - mLeft);}publi...

weixin_35401836的博客 1419

Android中动态改变布局中控件的位置

一、 以控件在RelativeLayout中为例,其他布局中也是一样的,可以通过修改控件的magin属性来改变控件的位置。 // 需要注意的是,此时构造参数中的两个属性为控件的宽和高(px),而不是父布局的宽和高。 RelativeLayout.LayoutParams layoutparams = new RelativeLayout.LayoutParams(100,100); layoutp...

LrvingTc的博客 5724

实现一个View的位置改变

一、新建一个R.layout.activity_main布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android

wq892373445的博客 511

安卓View — View (一)

目录Android —— View (一)一、 View的基础知识1.什么是View2.View的位置参数3.MotionEvent4.TouchSlop5.VelocityTracker6.GestureDetector二、View的滑动1.scrollTo/scrollBy2.使用动画View动画属性动画3.改变布局参数4.滑动方式对比5.跟随手指滑动的View编写三.弹性滑动1. Scrol...

睡客的博客 1839
上一篇: android 中view 的scroll系列方法的理解
下一篇: android 调用手机已安装的音乐播放器 的列表播放音乐
javalive09
博客等级 码龄16年 43粉丝 281原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值