学习了一下android中的Gallery + ImageSwitcher,在网上找了点资料,做了个简单的电子相册。
并实现了自动播放效果,通过双击的手势来开启关闭自动播放。上图才是王道。
主要实现代码
package com.eebbk.elealbum.activity;
import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;
public class MainActivity extends Activity implements ViewFactory, OnItemSelectedListener, Runnable
{
//自动播放的标志位
private boolean isPlay = false;
//自动播放更新消息
private final static int UPDATE = 1;
//当前播放索引值
private int cur_index = 0;
// GestureDetector为手势识别类
private GestureDetector mGestureDetector;
private Gallery gallery = null;
private ImageSwitcher imageSwitcher = null;
private int[] imageIds =new int[]{
R.drawable.pic1 , R.drawable.pic2,
R.drawable.pic3 , R.drawable.pic4,
R.drawable.pic5 , R.drawable.pic6,
R.drawable.pic7 , R.drawable.pic8,
};
private Handler handler = new Handler( )
{
@Override
public void handleMessage( Message msg )
{
// TODO Auto-generated method stub
if ( msg.what == UPDATE )
{
gallery.setSelection( msg.arg1 );
}
super.handleMessage( msg );
}
};
/** Called when the activity is first created. */
@Override
public void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
//设置无标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView( R.layout.main );
init( );
}
private void init( )
{
mGestureDetector = new GestureDetector( new MySimpleGesture( ));
gallery = ( Gallery ) findViewById( R.id.gallery_id );
gallery.setAdapter(new ImageAdaper( this ));
gallery.setOnItemSelectedListener(this);
imageSwitcher = ( ImageSwitcher ) findViewById( R.id.imageSwitcher_id );
imageSwitcher.setFactory( this );
//设置淡入淡出切换效果
imageSwitcher.setInAnimation( AnimationUtils.loadAnimation( this, android.R.anim.fade_in ) );
imageSwitcher.setOutAnimation( AnimationUtils.loadAnimation( this, android.R.anim.fade_out ) );
}
@Override
public boolean onTouchEvent( MotionEvent event )
{
// TODO Auto-generated method stub
mGestureDetector.onTouchEvent( event );
return super.onTouchEvent( event );
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
isPlay = false;
}
return super.onKeyDown(keyCode, event);
}
/* (non-Javadoc)
* @see android.widget.ViewSwitcher.ViewFactory#makeView()
*/
@Override
public Vi