欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android实现自动滚动的Gallary控件效果

程序员文章站 2023-11-12 09:49:10
本文实例讲述了android实现自动滚动的gallary控件。分享给大家供大家参考。具体如下: import java.util.timer; import j...

本文实例讲述了android实现自动滚动的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
{
  /**
   * 这里的数值,限制了每次滚动的最大长度,图片宽度为480px。这里设置600效果好一些。 这个值越大,滚动的长度就越大。
   * 也就是会出现一次滚动跨多个image。这里限制长度后,每次滚动只能跨一个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();
  }
}

希望本文所述对大家的android程序设计有所帮助。