編輯:Android開發教程
大家好,記得上次我帶著大家一起實現了一個類似與淘寶客戶端中帶有的圖片滾動播放器的效果,但是在 做完了之後,發現忘了加入圖片自動播放的功能(或許是我有意忘記加的.....),結果圖片只能通過手指滑動 來播放。於是今天我將再次帶領大家,添加上之前遺漏的功能,讓我們的圖片播放器更加完善。
這次 的程序開發將完全基於上一次的代碼,如果有朋友還未看過上篇文章,請先閱讀 Android實現圖片滾動控件 ,含頁簽功能,讓你的應用像淘寶一樣炫起來 。
既然是要加入自動播放的功能,那麼就有一個非常 重要的問題需要考慮。如果當前已經滾動到了最後一張圖片,應該怎麼辦?由於我們目前的實現方案是,所 有的圖片都按照布局文件裡面定義的順序橫向排列,然後通過偏移第一個圖片的leftMargin,來決定顯示哪 一張圖片。因此當圖片滾動在最後一張時,我們可以讓程序迅速地回滾到第一張圖片,然後從頭開始滾動。 這種效果和淘寶客戶端是有一定差異的(淘寶並沒有回滾機制,而是很自然地由最後一張圖片滾動到第一張圖 片),我也研究過淘寶圖片滾動器的實現方法,並不難實現。但是由於我們是基於上次的代碼進行開發的,方 案上無法實現和淘寶客戶端一樣的效果,因此這裡也就不追求和它完全一致了,各有風格也挺好的。
好了,現在開始實現功能,首先是打開SlidingSwitcherView,在裡面加入一個新的AsyncTask,專門用於回 滾到第一張圖片:
class ScrollToFirstItemTask extends AsyncTask<Integer, Integer, Integer> { @Override protected Integer doInBackground(Integer... speed) { int leftMargin = firstItemParams.leftMargin; while (true) { leftMargin = leftMargin + speed[0]; // 當leftMargin大於0時,說明已經滾動到了第一個元素,跳出循環 if (leftMargin > 0) { leftMargin = 0; break; } publishProgress(leftMargin); sleep(20); } return leftMargin; } @Override protected void onProgressUpdate(Integer... leftMargin) { firstItemParams.leftMargin = leftMargin[0]; firstItem.setLayoutParams(firstItemParams); } @Override protected void onPostExecute(Integer leftMargin) { firstItemParams.leftMargin = leftMargin; firstItem.setLayoutParams(firstItemParams); } }
然後在SlidingSwitcherView裡面加入一個新的方法:
/** * 滾動到第一個元素。 */ public void scrollToFirstItem() { new ScrollToFirstItemTask().execute(20 * itemsCount); }
這個方法非常簡單,就是啟動了我們新增的ScrollToFirstItemTask,滾動速度設定為20 * itemsCount,這樣當我們需要滾動的圖片數量越多,回滾速度就會越快。定義好這個方法後,只要在任意地 方調用scrollToFirstItem這個方法,就可以立刻從當前圖片回滾到第一張圖片了。
查看本欄目更多精彩內容:http://www.bianceng.cn/OS/extra/
記得我之前參與開發過一個華為的項目,要求程序可以支持好幾種終端設備,其中就包括Android手機和 Android Pad。然後為了節省人力,公司無節操地讓Android
android如何使用BroadcastReceiver後台實現來電通話記錄的監聽並存取到sqllite數據庫通過Contentprovilder實現接口Broadcas
ScrollView是一種特殊的FrameLayout,使用ScrollView可以使用戶能夠滾動一個包含views的列表,這樣 做的話,就可以利用比物理顯示區域更大的空
本篇文章試圖解決這樣一個問題:如何在Android模擬器上訪問本地的Web應用? 例如,在你的開發機器上 啟動一個Tomcat服務,接著打開電腦上的浏覽器,默認情況下輸入