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編程開(kāi)發(fā)之TextView控件用法(2種方法)
- Android開(kāi)發(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)文章
使用PlatformView將?Android?控件view制作成Flutter插件
這篇文章主要為大家介紹了使用PlatformView將?Android?控件view制作成Flutter插件實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Android Studio 通過(guò)登錄功能介紹SQLite數(shù)據(jù)庫(kù)的使用流程
SQLite是一款輕型的數(shù)據(jù)庫(kù),是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。這篇文章主要介紹了Android Studio 通過(guò)登錄功能介紹SQLite數(shù)據(jù)庫(kù)的使用流程,需要的朋友可以參考下2018-09-09
Android實(shí)戰(zhàn)打飛機(jī)游戲之無(wú)限循環(huán)的背景圖(2)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)戰(zhàn)打飛機(jī)游戲之無(wú)限循環(huán)的背景圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07
android實(shí)現(xiàn)widget時(shí)鐘示例分享
這篇文章主要介紹了android實(shí)現(xiàn)widget時(shí)鐘示例,需要的朋友可以參考下2014-03-03
Android編程圖片操作類定義與用法示例【拍照,相冊(cè)選圖及裁剪】
這篇文章主要介紹了Android編程圖片操作類定義與用法,涉及Android拍照,相冊(cè)選圖及裁剪等圖片操作功能及權(quán)限控制相關(guān)操作技巧,需要的朋友可以參考下2018-02-02
Android開(kāi)發(fā)實(shí)現(xiàn)SubMenu選項(xiàng)菜單和子菜單示例
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)SubMenu選項(xiàng)菜單和子菜單,結(jié)合實(shí)例形式分析了Android開(kāi)發(fā)中SubMenu選項(xiàng)菜單和子菜單的功能、配置、布局等相關(guān)操作技巧,需要的朋友可以參考下2019-03-03
Android 事件觸發(fā)機(jī)制的深入學(xué)習(xí)
這篇文章主要介紹了 Android 事件觸發(fā)機(jī)制的深入學(xué)習(xí)的相關(guān)資料,需要的朋友可以參考下2017-06-06

