android gallery自动播放,Gallery 图片循环自动播放 无惯性(一次滑动一张图)

CycleImageActivity.java

package com.demo;

import java.util.Timer;

import java.util.TimerTask;

import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.Gallery;

import android.widget.ImageView;

/**

* gallery 图片循环播放,自动播放,无惯性(一次滑动一张图)

*

* @author Feng

*

*/

public class CycleImageActivity extends Activity {

public static int[] picture = { R.drawable.gallery1, R.drawable.gallery2,

R.drawable.gallery3, R.drawable.gallery4 };

private MyGallery pictureGallery = null;

private int index = 0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

this.pictureGallery = (MyGallery) findViewById(R.id.mygallery);

ImageAdapter adapter = new ImageAdapter(this);

this.pictureGallery.setAdapter(adapter);

Timer timer = new Timer();

timer.schedule(task, 7000, 7000);

}

/**

* 定时器,实现自动播放

*/

private TimerTask task = new TimerTask() {

@Override

public void run() {

Message message = new Message();

message.what = 2;

index = pictureGallery.getSelectedItemPosition();

index++;

handler.sendMessage(message);

}

};

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

switch (msg.what) {

case 2:

pictureGallery.setSelection(index);

break;

default:

break;

}

}

};

/**

* 自定义图片显示适配器

*

*/

class ImageAdapter extends BaseAdapter {

private Context context;

public ImageAdapter(Context context) {

this.context = context;

}

public int getCount() {

return Integer.MAX_VALUE;

}

public Object getItem(int position) {

return position;

}

public long getItemId(int position) {

return position;

}

public View getView(int position, View convertView, ViewGroup parent) {

ImageView imageView = new ImageView(context);

imageView.setImageResource(picture[position % picture.length]);

imageView.setScaleType(ImageView.ScaleType.FIT_XY);

imageView.setLayoutParams(new Gallery.LayoutParams(

Gallery.LayoutParams.FILL_PARENT,

Gallery.LayoutParams.FILL_PARENT));

return imageView;

}

}

}

MyGallery.javapackage com.demo;

import android.content.Context;

import android.util.AttributeSet;

import android.view.KeyEvent;

import android.view.MotionEvent;

import android.widget.Gallery;

/**

* 自定义画廊,实现一次只滑动一张图片,无惯性

*

* @author Feng

*

*/

class MyGallery extends Gallery {

public MyGallery(Context context, AttributeSet attrs) {

super(context, attrs);

// TODO Auto-generated constructor stub

}

public MyGallery(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

public void setImageActivity(CycleImageActivity context) {

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,

float velocityY) {

int kEvent;

if (isScrollingLeft(e1, e2)) {

kEvent = KeyEvent.KEYCODE_DPAD_LEFT;

} else {

kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;

}

onKeyDown(kEvent, null);

if (this.getSelectedItemPosition() == 0) {// 实现后退功能

this.setSelection(CycleImageActivity.picture.length);

}

return false;

}

private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2) {

return e2.getX() > e1.getX();

}

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,

float distanceY) {

// TODO Auto-generated method stub

return super.onScroll(e1, e2, distanceX, distanceY);

}

}

activity_main.xml

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/mygallery"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentRight="true"

android:layout_alignParentTop="true"

android:spacing="30dp"

android:unselectedAlpha="1" />

7072e92e05a5a1a076cc27ee1a9a09d6.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值