android的ScrollView的简单使用

最近在做一个android电视项目,项目组有个需求,使用ScorllView包含一个TextView,然后根据TextView的内容动态的进行计算页数。由于是android电视,所以并没有像在手机上可以通过手势进行滑动,所以,只能通过按手机遥控板上的按键进行上下滑动。

  • 前言
  • ScrollView测量模式
  • ScrollView的滑动原理
  • ScrollView的应用
  • *总结

目录

[TOC]来生成目录:

  • android的ScrollView的简单使用
    • 目录
    • 前言
    • ScrollView测量模式
    • ScrollView的滑动原理
      • API介绍
      • ScrollView滑动坐标系
    • ScrollView的应用
      • 计算滑动的总页数
      • 一边滑动一边计算第几页
    • 总结

前言

一直想着有时间来写一篇博客,现在终于下定决心了,决定好好的把这件事给做下去。好了不多说了,开始进入正题。ScrollView最近一直在使用,所以在这儿做个总结。

ScrollView测量模式

ViewGroup的测量模式
EXACTLY(精确模式):表示子View设置了精确的值,一般当childView设置其宽、高为某一个精确值、或者说match_parent时,ViewGroup就会将其设置为EXACTLY;

AT_MOST(最大模式):表示子View被限制在一个最大值内,一般当子View设置其宽、高为wrap_content时,ViewGroup会将其设置为AT_MOST,即最大模式;

UNSPECIFIED:表示子布局想要多大就多大,一般出现在AadapterView的item的heightMode中、ScrollView的childView的heightMode中;此种模式比较少见。【所以这篇博客就专门针对ScrollView介绍】

ViewGroup的测量模式就是UNSPECIFIED,也就是说childView想多大就多大。
举个例子:

 <ScrollView           android:layout_width="200dp"            android:layout_height="200dp">            <TextView                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:textColor="@color/colorPrimary"                android:textSize="@dimen/ac_scroll_textsize"                android:text="@string/test_scrollview"/>  ScrollView>

在这个例子中TextView的高度是wrap_content,由于ScrollView的测量模式是UNSPECIFIED,所以就会导致当TextView的文字过多时,高度超过ScrollView,而且在屏幕中只会显示ScrollView高度的TextView,剩余的就只需通过滑动查看。

ScrollView的滑动原理

android中有一个监听ScrollView滑动的方法,该方法是:setOnScrollChangeListener(但是这个方法是API>23才能使用,所以如果需要兼容23一下的,需要自己继承ScrollView,来处理了.这里就不再做讨论)。这个方法会回调onScrollChanged方法。这里要给大家说的就是onScrollChange的API。

@Override    protected void onScrollChanged(int l, int t, int oldl, int oldt) {        super.onScrollChanged(l, t, oldl, oldt);        if (changeListener!=null){            changeListener.onScrollChange(this,l,t,oldl,oldt);        }    }

API介绍:

l:滑动之后的x的坐标。
t:滑动之后的y的坐标。
oldl:滑动之前的x坐标。
oldt:滑动之前的y坐标。
咋一看好像说得挺有道理,我就打印Log信息测试了一下(这里以Y方向滑动为例),发现当我们向下滑动的时候,t的值会越来越小,反之,当我们向上滑动的时候t的值会越来越小。,这个就和对坐标系的理解有关系了。不多说了,直接上图。

ScrollView滑动坐标系

android的ScrollView的简单使用_第1张图片

描述:以ScrollView的左上角为坐标原点,从左向右为X轴的正方向,从上往下为Y轴的正方向建立坐标系,当ScrollView上滑的时候(也就是我们实际中看到的滑动)其实是手机(移动的相机)向下滑的时候,所以Y的值会越来越大。相反也会一样。理解了这个以后就知道一切了!

ScrollView的应用

计算滑动的总页数

这个比较简单,总页数=(ScrollView高度-ChildView高度)/ScrollView高度,如果有余数结果就再加一,相信大家在代码中获取View的高度应该没有问题,所以这里就不再介绍。

一边滑动一边计算第几页

这个问题其实也不复杂,这里以手指向上滑动为例子,向上滑动也就是相当于手机(移动相机)向下移动,Y的值会越来越大。
第一步:确定滑动的区间:【0,ChildView高度-ScrollView高度】
第二步:根据距离计算页数,【0,ScrollView高度】时候是第一页,显示1/总的页数,【ScrollView高度,2*ScrollView高度】时候是2/中页数,。。。。。,然后就根据这个就可以发现规律了。
如果当前滑动的距离t(api中的t)=0,那么当前页数应该是1;
其他情况:t>0时候,当前页数=2+当前滑动的距离t(api中的t)/ScrollView高度;
这个剩下的就是数学问题了,哈哈!

总结

综上所述,ScrollView的简单介绍就搞定了,希望能对你们有帮助,同时有错误的请指正谢谢!

更多相关文章

  1. Android activity启动模式理解
  2. android usb Host模式下与usb Hid 设备的通信
  3. android位图颜色模式的问题
  4. 视图模式:Android ViewPager & WP Pivot
  5. edittext 随文字换行 而高度增加
  6. Android获取状态栏高度的方法
  7. Android - Activity - 启动模式
  8. android如何设置全屏模式
  9. Android开发9——Activity的启动模式

随机推荐

  1. android 2.2 迁移 android 4.0 theme sty
  2. (android)如何破解多盟广告sdk (一)
  3. Android MVP应用
  4. 【进阶】从linux到android,进程的方方面面
  5. Android 多媒体综述
  6. Android 如何建立你的菜单
  7. 【Android 修炼手册】常用技术篇 -- 聊聊
  8. QQ邮箱Android客户端产品体验报告
  9. android学习---通过android帮助学习TextV
  10. android dumpsys debug tools