編輯:關於Android編程
今天閒來無事,
就測試了一下listview加載圖片優化的功能,
在我們使用新浪微博的時候,細心的同學一定發現了,在滑動的過程中,圖片是沒有被加載的,
而是在滑動停止時,才加載圖片了。
我們今天就做一個這樣的效果吧。
我們先考慮兩個問題:
1、在滑動停止的時候,如何獲得需要加載的圖片控件?
2、因為listiew在初始化完成的時候,OnScrollListener的onScrollStateChanged與onScroll並未被觸發,如何初始化第一頁的圖片?
package com.test.list; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; public class TestAndroidListActivity extends Activity { private int start_index, end_index; // 判斷是否是初始化 private boolean isInit = false; private ListView list; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.initList(); } private BaseAdapter adapter = new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View v; if (convertView == null) { v = getLayoutInflater().inflate(R.layout.list_item, null); v.setTag(v); } else { v = (View) convertView.getTag(); ImageView iv = (ImageView) v.findViewById(R.id.img); iv.setImageResource(R.drawable.ic_launcher); } ImageView iv = (ImageView) v.findViewById(R.id.img); // 給圖片控件設置上對應的位置編號 iv.setTag(position); if (!isInit) { iv.setImageResource(R.drawable.update_log); } return v; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public int getCount() { // TODO Auto-generated method stub return 140; } }; private void initList() { // TODO Auto-generated method stub list = (ListView) this.findViewById(R.id.list); list.setAdapter(adapter); list.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub isInit = true; switch (scrollState) { case OnScrollListener.SCROLL_STATE_IDLE:// 滑動停止 for (; start_index < end_index; start_index++) { ImageView img = (ImageView) list.findViewWithTag(start_index); img.setImageResource(R.drawable.update_log); } break; default: break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub // 設置當前屏幕顯示的起始index和結束index start_index = firstVisibleItem; end_index = firstVisibleItem + visibleItemCount; } }); } }
其實很簡單,大家可以研究研究,舉一反三哈!
以前做項目大多用的radiobutton,今天用tablayout來做一個tab切換頁面的的效果.實現的效果就是類似QQ.微信的頁面間(也就是Fragment間)的切換.
熟悉Android的朋友們都知道,不管是微博客戶端還是新聞客戶端,都離不開列表組件,可以說列表組件是Android數據展現方面最重要的組件,我們今天就要講一講
Fragment是Android API中的一個類,它代表Activity中的一部分界面;你可以在一個Activity界面中使用多個Fragment,或者在多個Activ
ListView雖然使用廣泛,但系統原生的ListView顯然是不能滿足用戶在審美、功能上不斷提高的需求。不過也不要緊,Android完全可以定制化,讓我們非常方便地對原