当前位置:操作系统 > 安卓/Android >>

Android开源代码解读のOnScrollListener实现ListActivity滚屏首字母提示

OnScrollListener接口是定义在AbsListView中的,而AbsListView的直接子类有GridView和ListView,非直接子类有ExpandableListView。OnScrollListener的完整路径是frameworks\base\core\java\android\widget\AbsListView.java,代码如下:

[java]
 /**
  * Inte易做图ce definition for a callback to be invoked when the list or grid
  * has been scrolled.
  */
 public inte易做图ce OnScrollListener {
 
     /**
      * The view is not scrolling. Note navigating the list using the trackball counts as
      * being in the idle state since these transitions are not animated.
      */
     public static int SCROLL_STATE_IDLE = 0;
 
     /**
      * The user is scrolling using touch, and their finger is still on the screen
      */
     public static int SCROLL_STATE_TOUCH_SCROLL = 1;
 
     /**
      * The user had previously been scrolling using touch and had performed a fling. The
      * animation is now coasting to a stop
      */
     public static int SCROLL_STATE_FLING = 2;
 
     /**
      * Callback method to be invoked while the list view or grid view is being scrolled. If the
      * view is being scrolled, this method will be called before the next frame of the scroll is
      * rendered. In particular, it will be called before any calls to
      * {@link Adapter#getView(int, View, ViewGroup)}.
      *
      * @param view The view whose scroll state is being reported
      *
      * @param scrollState The current scroll state. One of {@link #SCROLL_STATE_IDLE},
      * {@link #SCROLL_STATE_TOUCH_SCROLL} or {@link #SCROLL_STATE_IDLE}.
      */
     public void onScrollStateChanged(AbsListView view, int scrollState);
 
     /**
      * Callback method to be invoked when the list or grid has been scrolled. This will be
      * called after the scroll has completed
      * @param view The view whose scroll state is being reported
      * @param firstVisibleItem the index of the first visible cell (ignore if
      *        visibleItemCount == 0)
      * @param visibleItemCount the number of visible cells
      * @param totalItemCount the number of items in the list adaptor
      */
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
             int totalItemCount);
 }
 /**
  * Inte易做图ce definition for a callback to be invoked when the list or grid
  * has been scrolled.
  */
 public inte易做图ce OnScrollListener {
 
    /**
      * The view is not scrolling. Note navigating the list using the trackball counts as
      * being in the idle state since these transitions are not animated.
      */
     public static int SCROLL_STATE_IDLE = 0;
 
    /**
      * The user is scrolling using touch, and their finger is still on the screen
      */
     public static int SCROLL_STATE_TOUCH_SCROLL = 1;
 
    /**
      * The user had previously been scrolling using touch and had performed a fling. The
      * animation is now coasting to a stop
      */
     public static int SCROLL_STATE_FLING = 2;
 
    /**
      * Callback method to be invoked while the list view or grid view is being scrolled. If the
      * view is being scrolled, this method will be called before the next frame of the scroll is
      * rendered. In particular, it will be called before any calls to
      * {@link Adapter#getView(int, View, ViewGroup)}.
      *
      * @param view The view whose scroll state is being reported
      *
      * @param scrollState The current scroll state. One of {@link #SCROLL_STATE_IDLE},
      * {@link #SCROLL_STATE_TOUCH_SCROLL} or {@link #SCROLL_STATE_IDLE}.
      */
     public void onScrollStateChanged(AbsListView view, int scrollState);
 
    /**
      * Callback method to be invoked when the list or grid has been scrolled. This will be
      * called after the scroll has completed
      * @param view The view whose scroll state is being reported
      * @param firstVisibleItem the index of the first visible cell (ignore if
      *        visibleItemCount == 0)
      * @param visibleItemCount the number of visible cells
      * @param totalItemCount the number of items in the list adaptor
      */
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
             int totalItemCount);
 }该接口定义了三种滚动状态和两个回调函数,下面的代码使用onScroll来实现滚屏时提示内容首字母功能,当然,重点在例子的实现分析上面,并不局限于onScroll的使用。直接先看MainActivity的实现吧:(代码来自APIDemos,有修改)
 
 
[java]
 package hust.iprai.asce1885;
 
 import android.app.ListActivity;
 import android.content.Context;
 import android.graphics.PixelFormat;
 import android.os.Bundle;
 import android.os.Handler;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.WindowManager;
 import android.view.ViewGroup.LayoutParams;
 import android.widget.AbsListView;
 import android.widget.AbsListView.OnScrollListener;
 import android.widget.ArrayAdapter;
 import android.widget.TextView;
 
 /**
  * 直接继承ListActivity,免去了ListView的继承,同时实现OnScrollListener接口
  *
  */
 public class MainActivity extends ListActivity implements OnScrollListener {
     
     private final class Rem

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,