Android ApiDemos示例解析(176):Views->Lists->9. Array (Overlay)

以在屏幕上顯示當前顯示列表項的首字母以便於用戶在列表中搜索。

本例是通過在屏幕中央顯示一個文本框來實現的,通過WindowManager 為ListActivity缺省的窗口動態添加這個TextView.和大都數Android服務一樣,WindowManager也是通過getSystemService來獲取服務對象:

[java] 
mWindowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE); 

mWindowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);

為ListView 添加Scroll 事件處理:

 

[java] 
getListView().setOnScrollListener(this); 
 
public void onScroll(AbsListView view, int firstVisibleItem, 
 int visibleItemCount, int totalItemCount) { 
 int lastItem = firstVisibleItem + visibleItemCount – 1; 
 if (mReady) { 
 char firstLetter = mStrings[firstVisibleItem].charAt(0); 
 
 if (!mShowing && firstLetter != mPrevLetter) { 
 
 mShowing = true; 
 mDialogText.setVisibility(View.VISIBLE); 
 
 
 } 
 mDialogText.setText(((Character)firstLetter).toString()); 
 mHandler.removeCallbacks(mRemoveWindow); 
 mHandler.postDelayed(mRemoveWindow, 3000); 
 mPrevLetter = firstLetter; 
 } 

getListView().setOnScrollListener(this);

public void onScroll(AbsListView view, int firstVisibleItem,
 int visibleItemCount, int totalItemCount) {
 int lastItem = firstVisibleItem + visibleItemCount – 1;
 if (mReady) {
 char firstLetter = mStrings[firstVisibleItem].charAt(0);

 if (!mShowing && firstLetter != mPrevLetter) {

 mShowing = true;
 mDialogText.setVisibility(View.VISIBLE);

 }
 mDialogText.setText(((Character)firstLetter).toString());
 mHandler.removeCallbacks(mRemoveWindow);
 mHandler.postDelayed(mRemoveWindow, 3000);
 mPrevLetter = firstLetter;
 }
}

 

通過mHandler 在UI線程中發送消息,Android 系統Handler用法簡介。

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *