android获得当前view在屏幕中坐标的方法
本文实例讲述了android获得当前view在屏幕中坐标的方法。分享给大家供大家参考。具体如下:
final int[] location = new int[2]; view.getLocationOnScreen(location);
这样就可以得到该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是说包括了通知栏的高度)
//获取在当前屏幕内的绝对坐标 location[0] x坐标 location[1] y坐标
应用 ,我们可以用来记录上一次listview滚动到了那里
首先我们需要一个记录当前滚动位置的全局变量:
private float OldListY = -1;
然后在 listView 的 onItemClick() 或 onItemLongClick() 事件中获取 OldListY:
lstView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { int Pos[] = { -1, -1 }; //保存当前坐标的数组 arg1.getLocationOnScreen(Pos); //获取选中的 Item 在屏幕中的位置,以左上角为原点 (0, 0) OldListY = (float) Pos[1]; //我们只取 Y 坐标就行了 } });
最后要做的就是在 setAdapter() 后恢复先前的位置:
... lstView.setAdapter(adapter); // 重新绑定Adapter lstView.setSelectionFromTop(index, (int) OldListY); // 恢复刚才的位置
希望本文所述对大家的Android程序设计有所帮助。
相关推荐
-
Android获取屏幕或View宽度和高度的方法
本文实例讲述了Android获取屏幕或View宽度和高度的方法.分享给大家供大家参考,具体如下: 在Activity中获取屏幕的高度和宽度 Display display=getWindowManager().getDefaultDisplay(); int width=display.getWidth(); int height=display.getHeight(); 在重写ViewGroup中获取屏幕的有效宽度和高度在OnMesure方法中 protected void onMeasure
-
Android中将View的内容保存为图像的简单实例
原理:创建一个新的Bitmap,然后再根据它来创建一个Canvas,最后调用View的draw方法将View画到Canvas上,这样得到的Bitmap就是我们想要的.代码: 复制代码 代码如下: public Bitmap createViewBitmap(View v) { Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
-
Android View源码解读 DecorView与ViewRootImpl浅谈
前言 对于Android开发者来说,View无疑是开发中经常接触的,包括它的事件分发机制.测量.布局.绘制流程等,如果要自定义一个View,那么应该对以上流程有所了解.研究.本系列文章将会为大家带来View的工作流程详细解析.在深入接触View的测量.布局.绘制这三个流程之前,我们从Activity入手,看看从Activity创建后到View的正式工作之前,所要经历的步骤.以下源码均取自Android API 21. 从setContentView说起 一般地,我们在Activity中,会在on
-
Android View移动的六种方法小结
在android开发中,经常会遇到一个view需要它能够支持滑动的需求.下面通过本篇文章给大家介绍android view移动的六种方法. layout() 如果你将滑动后的目标位置的坐标传递给layout(),这样子就会把view的位置给重新布置了一下,在视觉上就是view的一个滑动的效果. public class DragView extends View{ private int lastX; private int lastY; public DragView(Context cont
-
android开发教程之view组件添加边框示例
给TextureView添加边框(专业名词为描边),有三种解决方案: 1.设置一个9 patch 的,右边框,中间是空的PNG. 2.自定义一个View,用Canvas画个边框. 3.用Android提供的ShapeDrawable来定义一个边框. 个人比较建议采用第三种方式,原因是因为第三种只要写XML,速度快,占用资源小,代码编写量也少,便于维护. 使用方法如下: 1.定义一个background.xml文件. 复制代码 代码如下: <?xml version="1.0" e
-
Android动态添加View的问题解决方法
后台代码 复制代码 代码如下: private void ChangeView() { ly.removeAllViews(); LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.grid,null); GridView gridview
-
4种Android获取View宽高的方式
有时我们会有基于这样的需求,当Activity创建时,需要获取某个View的宽高,然后进行相应的操作,但是我们在onCreate,onStart中获取View的大小,获取到的值都是0,只是由于View的绘制工程还未完成,和在onCreate中弹出Dialog或者PopupWindow会报一个Activity not running原理类似. 接下来就为大家介绍几种获取View宽高的方法: 第一种方式:重写Activity中的onWindowFocusChanged,当Activity获取到焦点的
-
Android获取view高度的三种方式
本文为大家分享了Android获取view高度的方法,供大家参考,具体内容如下 getMeasuredHeight()与getHeight的区别 实际上在当屏幕可以包裹内容的时候,他们的值相等, 只有当view超出屏幕后,才能看出他们的区别: getMeasuredHeight()是实际View的大小,与屏幕无关, 而getHeight的大小此时则是屏幕的大小. 当超出屏幕后,getMeasuredHeight()等于getHeight()加上屏幕之外没有显示的大小 具体方法 我们知道在oncr
-
Android下拉刷新上拉加载控件(适用于所有View)
前面写过一篇关于下拉刷新控件的文章下拉刷新控件终结者:PullToRefreshLayout,后来看到好多人还有上拉加载更多的需求,于是就在前面下拉刷新控件的基础上进行了改进,加了上拉加载的功能.不仅如此,我已经把它改成了对所有View都通用!可以随心所欲使用这两个功能~~ 我做了一个大集合的demo,实现了ListView.GridView.ExpandableListView.ScrollView.WebView.ImageView.TextView的下拉刷新和上拉加载.后面会提供demo的
-
Android加载View中Background详解
对大多数Android的开发者来说,最经常的操作莫过于对界面进行布局,View中背景图片的加载是最经常做的.但是我们很少关注这个过程,这篇文章主要解析view中背景图片加载的流程.了解view中背景图片的加载(资源的加载)可以让我们对资源加载的过程进行一些优化,另外当需要进行整个应用的换肤时,也可以更得心应手. View图片的加载,我们最常见的就是通过在XML文件当中进行drawable的设置,然后让Android系统帮我们完成,或者手动写代码加载成Bitmap,然后加载到View上.这篇文章主
随机推荐
- js+json用表格实现简单网站左侧导航
- 为你总结一些php系统类函数
- 指定网页的doctype解决CSS Hacking方法总结
- 创业者成功的秘诀分析
- Python计算三维矢量幅度的方法
- C语言关键字大全(共32个)
- jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
- JavaScript框架是什么?怎样才能叫做框架?
- js中最容易被忽视的事件问题大总结
- php中使用$_REQUEST需要注意的一个问题
- spring使用RedisTemplate的操作类访问Redis
- Java函数式编程(六):Optional
- Android编程之图片相关代码集锦
- Spring 实现数据库读写分离的示例
- Python实现按学生年龄排序的实际问题详解
- C#检测pc光驱里是否插入了光盘的方法
- Java编程实现打地鼠文字游戏实例代码
- Python中is和==的区别详解
- 微信小程序自定义组件实现环形进度条
- 代码详解Java猴子选王问题(约瑟夫环)