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-07
Android實(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-03
Android開發(fā)之TextView控件用法實(shí)例總結(jié)
這篇文章主要介紹了Android開發(fā)之TextView控件用法,結(jié)合實(shí)例形式總結(jié)分析了TextView控件常用的屬性設(shè)置及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-02-02
Android時(shí)分秒計(jì)時(shí)器的兩種實(shí)現(xiàn)方法
這篇文章主要介紹了Android時(shí)分秒計(jì)時(shí)器的兩種實(shí)現(xiàn)方法,分別是Chronometer控件和handler+timer+timerTask方式,非常不錯(cuò),感興趣的朋友一起看下吧2016-08-08
Android NDK開發(fā)(C語言基本數(shù)據(jù)類型)
這篇文章主要介紹了Android NDK開發(fā)中,C語言基本數(shù)據(jù)類型,主要以C語言包含的數(shù)據(jù)類型及基本類型展開相關(guān)資料,需要的朋友可以參考一下2021-12-12

