Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Developers:使ListView滑動流暢

Android Developers:使ListView滑動流暢

編輯:關於Android編程

流暢滑動ListView的關鍵是保持應用程序的主線程(UI線程)從免於繁重處理。確保你的任何硬盤訪問,網絡訪問或者SQL訪問在一個單獨的線程中。為了測試你的應用個程序的狀態,你能啟動StrictMode。    使用後台線程  ——————————————————————————————————————————————————————————————  使用一個後台線程(“工作線程”),從主線程中移除,所以它能專注於繪制UI。在許多情況下,使用AsyTask提供的簡單方式,在主線程之外來執行你的工作。AsyncTask自動隊列保存所有execute()請求,並連續的執行它們。這個行為對於一個進程是全局的,並且意味著你不需要擔心創建你自己的線程池。    在下面的這個示例代碼中,AsyncTask是被用於在後台線程中下載圖片,然後一旦完成將它們顯示到UI中。當它們在下載的時候,它也在圖片的位置顯示了一個進度條。  [java] // Using an AsyncTask to load the slow images in a background thread    new AsyncTask<ViewHolder, Void, Bitmap>() {        private ViewHolder v;        @Override        protected Bitmap doInBackground(ViewHolder... params) {            v = params[0];            return mFakeImageLoader.getImage();        }        @Override        protected void onPostExecute(Bitmap result) {            super.onPostExecute(result);            if (v.position == position) {                // If this item hasn't been recycled already, hide the                // progress and set and show the image                v.progress.setVisibility(View.GONE);                v.icon.setVisibility(View.VISIBLE);                v.icon.setImageBitmap(result);            }        }    }.execute(holder);<span style="font-family:Arial,sans-serif; font-size:10pt; background-color:transparent; color:windowtext"> </span>   從Android3.0開始(API level11),在AsyncTask中有一個額外的功能,這麼你能啟用它來運行在多處理器核心中。替代調用execute()方法,你能調用executeOnExecutor()方法,然後基於可用的核數,多個請求能在同一時間上運行。    在View Holder中保存視圖  —————————————————————————————————————————————————————————————— 當滑動ListView的時候,你的代碼應該會經常調用findViewById()方法,它會減緩性能。即使Adapter返回一個在填充視圖循環使用,你一直需要尋找這個元素並更新他們。一種不錯的使用findViewById()方法的方式,是使用“view holder”設計模型。    ViewHolder對象存放了布局標記區域的視圖組件,所以你能立刻訪問它們,不需要重復的尋找它們。首先,你需要創建一個類來保存你需要的視圖組。例如:  [java]  static class ViewHolder {      TextView text;      TextView timestamp;      ImageView icon;      ProgressBar progress;      int position;    }    然後填充這個ViewHolder,並在這個布局中保存它。  [java] ViewHolder holder = new ViewHolder();    holder.icon = (ImageView) convertView.findViewById(R.id.listitem_image);    holder.text = (TextView) convertView.findViewById(R.id.listitem_text);    holder.timestamp = (TextView) convertView.findViewById(R.id.listitem_timestamp);    holder.progress = (ProgressBar) convertView.findViewById(R.id.progress_spinner);    convertView.setTag(holder);    現在你能快速訪問每個視圖,不需要查找,節省寶貴的處理器時間。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved