下面是个小例子,给listView设置一个背景,通过感应listView的滑动,让背景也跟着一块动,但是背景动作幅度要比listview大

// Prepare the header view for our listheaderView = new View(this);//headerView是一个只有宽高,没有内容的空白viewheaderView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, TOP_HEIGHT));headerView.setBackgroundColor(Color.BLUE);mList.addHeaderView(headerView);//给listview设置一个headermList.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, strings));mList.setOnScrollListener(new OnScrollListener() {//listview的滑动监听器@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {}/** * Listen to the list scroll. This is where magic happens ;) */@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {// Calculate the ratio between the scroll amount and the list// header weight to determinate the top picture alphaLog.i("Alex", "listview的headerView getTop是"+headerView.getTop()+" bottom:"+headerView.getBottom()+" left"+headerView.getLeft()+" 高度"+headerView.getMeasuredHeight()+":"+headerView.getHeight());alpha = (float) -headerView.getTop() / (float) TOP_HEIGHT;//用头部view距离listview的顶部的距离,除以700,算出一个模糊程度,这样徐化程度就是拖拉距离的正比了// Apply a ceilif (alpha > 1) {alpha = 1;}// Apply on the ImageView if neededif (mSwitch.isChecked()) {mBlurredImage.setAlpha(alpha);}// Parallax effect : we apply half the scroll amount to our// three viewsmBlurredImage.setTop(headerView.getTop() * 2);//设置背景图片据屏幕顶部的距离mNormalImage.setTop(headerView.getTop() * 2);//设置背景图片据屏幕顶部的距离,这样的话就用模糊的背景把原图盖住了mBlurredImageHeader.handleScroll(headerView.getTop() / 2);}});}

其中最重要的就是View的setTop和getTop方法,这个方法可以看做得到此view距离屏幕顶端的距离,而且可以动态的设定,与动态设置这个view的marginTop差不多,同时也方便我们定位这个view在屏幕中的相对位置

同理还有getLeft()和getBottom()和getRight(),这样我们就可以动态的获取view的坐标和设置view的位置。


其中view还有getHeight()和getMeasuredHeight()方法,在本例中这两个方法的返回值相同,但是有些需要measure的空间返回值是不同的(会动态更改高度的控件)

更多相关文章

  1. android 平滑切换屏幕的几种方法总结
  2. android的TextView在设置ellipsize可能显示方框的问题
  3. Android(安卓)项目配置之 Version Name & Code
  4. android 动态设置读取文件的编码格式(charset)
  5. 笔记33--ListView和ScrollView点击事件的冲突
  6. 关于EditText的属性和常识
  7. android中 关于listitem 获得焦点时,改变其背景
  8. Android(安卓)横向列表GridView 实现横向滚动
  9. Android中Paint字体的使用

随机推荐

  1. 系出名门Android(1) - 在 Windows 下搭建
  2. (已解决)Android(安卓)Studio JVM报错解决
  3. Android(安卓)logcat log size -- Androi
  4. 【Android布局】在程序中设置android:gra
  5. android view 局部刷新
  6. android:gravity/android:layout_gravity
  7. ch022 Android(安卓)Handler
  8. Android之增强文本框(TextInputEditText)
  9. Android开发经典书籍下载——《Android(
  10. ch019 Android(安卓)surfaceView