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.java
package 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); |
} |
} |
< RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" |
xmlns:tools = "http://schemas.android.com/tools" |
android:layout_width = "match_parent" |
android:layout_height = "match_parent" > |
< com.demo.MyGallery |
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" /> |
</ RelativeLayout > |
初级程序员
by: 小蘑菇 发表于:2013-05-05 23:53:29 顶(0) | 踩(0) 回复
收藏,备用
回复评论