采用ViewFlipper加载与 显示图片
但是不能一次性加载很多图片,这边只加载10张图片
public class AndroidText extends Activity{
private int imageCount;private Bitmap bitmap;
private int imageSource[]={R.drawable.botton_chart ,R.drawable.btn_normal,R.drawable.xiaohei};
private ViewFlipper flipper;
private String TAG="AndroidText";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
flipper=new ViewFlipper(this);
flipper.setBackgroundColor(Color.BLACK);
flipper.setFlipInterval(1000); //设置时间
imageCount=imageSource.length;
addViewToFlipper();
setContentView(flipper);
flipper.startFlipping();
}
public void addViewToFlipper(){
for (int i = 0; i < 10; i++) {
String path = PicDisp.lstFilePath.get(i);
bitmap = BitmapFactory.decodeFile(path);
flipper.addView(addMyView(bitmap));
}
}
/**
* 初始化要播放的图片资源
*/
public View addMyView(Bitmap mBitmap){
ImageView imageView=new ImageView(this);
LinearLayout lin=new LinearLayout(this);
lin.setBackgroundResource(R.drawable.abcd);
LinearLayout.LayoutParams params=new LayoutParams
(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT );
lin.setOrientation(LinearLayout.VERTICAL);
// Drawable draw;
// draw=this.getResources().getDrawable(id);
// imageView.setBackgroundDrawable(draw);
imageView.setImageBitmap(mBitmap);
imageView.setLayoutParams(params);
lin.setGravity(Gravity.CENTER);
lin.addView(imageView);
return lin;
}
//imageCount=imageSource.length-25,之所以要减去25是因为flipper一次不能装载过多图片,不然会抛出内存溢出异常,后面将解决如何将这30张图片都用幻灯片显示出来。
/*public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_AOTOPLAY:
if (!mKeepFlipping) {
item.setTitle("停止播放");
startFlipping();
}
else{
item.setTitle("自动播放");
stopFlipping();
}
break;
case MENU_EXIT:
flipper.removeAllViews();
this.finish();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}*/
//上面为播放和停止播放按钮,调用了重写的startFlipping()和stopFlipping()方法,之所以要重写是因为后面将为flipper显示图片自动加载剩余的资源文件:
/**
* 自动加载资源
*/
/* public void addViewExtra(){
if (!((imageCount+addCount)==30)) {
flipper.addView(addMyView(imageSource[imageCount+addCount],imageCount+addCount));
addCount++;
setContentView(flipper);
}
}
*//**
* 自动卸载资源
*//*
public void reduceViewExtra(){
if (!((imageCount+addCount)==30)) {
flipper.removeViewAt(0);
setContentView(flipper);
}
}*/
}
由于的采用gallery的显示方法,故采用定时器的形式显示图片
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
numPIC=0;
play.setText("暂停");
if(timerPIC==null){
timerPIC = new Timer();
timerPIC.schedule(new TimerTask() {
@Override
public void run() {
if(numPIC==199)
numPIC=0;
else if(numPIC%2==0){
handler.post(runnableTime);
}
numPIC++;
}
},1,1000);
}
else{
play.setText("播放");
timerPIC.cancel();
timerPIC=null;
}
}
});
//构建Runnable对象,在runnable中更新界面
Runnable runnableTime=new Runnable(){
@Override
public void run() {
if(PicDisp.lstFilePath.size()>positionPic)
//更新界面
gallery.setSelection(positionPic++); //定位某个图片
}
};