android實(shí)現(xiàn)自動(dòng)滾動(dòng)的Gallary控件效果
本文實(shí)例講述了android實(shí)現(xiàn)自動(dòng)滾動(dòng)的Gallary控件。分享給大家供大家參考。具體如下:
import java.util.Timer; import java.util.TimerTask; import android.content.Context; import android.os.Handler; import android.util.AttributeSet; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; import android.widget.Gallery; public class HomeGallery extends Gallery { /** * 這里的數(shù)值,限制了每次滾動(dòng)的最大長(zhǎng)度,圖片寬度為480PX。這里設(shè)置600效果好一些。 這個(gè)值越大,滾動(dòng)的長(zhǎng)度就越大。 * 也就是會(huì)出現(xiàn)一次滾動(dòng)跨多個(gè)Image。這里限制長(zhǎng)度后,每次滾動(dòng)只能跨一個(gè)Image */ private static final int timerAnimation = 1; private static final int time = 2000; private final Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case timerAnimation: int position = getSelectedItemPosition(); Log.i("msg", "position:"+position); if (position >= (getCount() - 1)) { onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, null); } else { onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null); } break; default: break; } }; }; private final Timer timer = new Timer(); private final TimerTask task = new TimerTask() { public void run() { mHandler.sendEmptyMessage(timerAnimation); } }; public HomeGallery(Context paramContext) { super(paramContext); timer.schedule(task, time, time); } public HomeGallery(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); timer.schedule(task, time, time); } public HomeGallery(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); timer.schedule(task, time, time); } private boolean isScrollingLeft(MotionEvent paramMotionEvent1, MotionEvent paramMotionEvent2) { float f2 = paramMotionEvent2.getX(); float f1 = paramMotionEvent1.getX(); if (f2 > f1) return true; return false; } public boolean onFling(MotionEvent paramMotionEvent1, MotionEvent paramMotionEvent2, float paramFloat1, float paramFloat2) { int keyCode; if (isScrollingLeft(paramMotionEvent1, paramMotionEvent2)) { keyCode = KeyEvent.KEYCODE_DPAD_LEFT; } else { keyCode = KeyEvent.KEYCODE_DPAD_RIGHT; } onKeyDown(keyCode, null); return true; } public void destroy() { timer.cancel(); } }
希望本文所述對(duì)大家的Android程序設(shè)計(jì)有所幫助。
- Android編程獲取屏幕寬高與獲取控件寬高的方法
- Android在OnCreate中獲取控件的寬度和高度的實(shí)現(xiàn)代碼
- Android中shape定義控件的使用
- Android編程開發(fā)之TextView控件用法(2種方法)
- Android開發(fā)之多線程中實(shí)現(xiàn)利用自定義控件繪制小球并完成小球自動(dòng)下落功能實(shí)例
- Android編程布局控件之AbsoluteLayout用法實(shí)例分析
- Android編程之Button控件用法實(shí)例分析
- 使用Android自定義控件實(shí)現(xiàn)滑動(dòng)解鎖九宮格
- Android控件動(dòng)態(tài)用法實(shí)例分析
- Android中Spinner控件之鍵值對(duì)用法實(shí)例分析
- Android編程獲取控件寬和高的方法總結(jié)分析
相關(guān)文章
Android實(shí)現(xiàn)短信驗(yàn)證功能的代碼
這篇文章主要介紹了Android實(shí)現(xiàn)短信驗(yàn)證功能的代碼的相關(guān)資料,需要的朋友可以參考下2016-07-07Android實(shí)現(xiàn)消息總線的幾種方式詳解
關(guān)于Android消息傳遞方式比較多,一般的系統(tǒng)原生實(shí)現(xiàn)方式比如Handler?、自定義廣播、接口回調(diào),以及三方工具?EventBus?、RxBus?等,下面這篇文章主要給大家介紹了關(guān)于Android實(shí)現(xiàn)消息總線的幾種方式,需要的朋友可以參考下2022-06-06詳解Android開發(fā)數(shù)據(jù)持久化之文件存儲(chǔ)(附源碼)
本篇文章主要介紹了詳解Android開發(fā)數(shù)據(jù)持久化之文件存儲(chǔ)(附源碼),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Android開發(fā)之TextView控件用法實(shí)例總結(jié)
這篇文章主要介紹了Android開發(fā)之TextView控件用法,結(jié)合實(shí)例形式總結(jié)分析了TextView控件常用的屬性設(shè)置及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-02-02Android時(shí)分秒計(jì)時(shí)器的兩種實(shí)現(xiàn)方法
這篇文章主要介紹了Android時(shí)分秒計(jì)時(shí)器的兩種實(shí)現(xiàn)方法,分別是Chronometer控件和handler+timer+timerTask方式,非常不錯(cuò),感興趣的朋友一起看下吧2016-08-08Android NDK開發(fā)(C語言基本數(shù)據(jù)類型)
這篇文章主要介紹了Android NDK開發(fā)中,C語言基本數(shù)據(jù)類型,主要以C語言包含的數(shù)據(jù)類型及基本類型展開相關(guān)資料,需要的朋友可以參考一下2021-12-12