ViewFlipper 之 幻灯片
[功能]
类似于幻灯片的效果 其实在开始之前 也比较矛盾 用 ImageSwitcher 还是 ViewFlipper 最后还是决定用后者 不是难易问题 而是考虑通用性 ImageSwitcher 只能显示 Image 而 ViewFlipper 只要是View 就可以显示 无论是 ImageView TextView 甚至 Button ....
既然是幻灯片 就要有如下功能:
1. 点击图片 显示下一张
2. 过一段时间 也显示下一张
[代码 步骤]
1. 构建界面: main.xml 只要一个 ViewFlipper
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ViewFlipper android:id="@+id/flipper" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" > </ViewFlipper> </LinearLayout>
2. 添加Image 至 ViewFlipper
vflipper = (ViewFlipper) findViewById(R.id.flipper);
vflipper.addView(addImageById(R.drawable.mb5u10_mb5ucom));
vflipper.addView(addImageById(R.drawable.mb5u14_mb5ucom));
vflipper.addView(addImageById(R.drawable.mb5u12_mb5ucom));
public View addImageById(int i){
ImageView iv = new ImageView(this);
iv.setImageResource(i);
return iv;
}
3. 注册 onTouch() 监听器 使之显示下一张
vflipper.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
vflipper.showNext();
return false;
}
});
4. 开辟一个Thread 过一段时间 通知 刷新Image
UpdateMonitor um = new UpdateMonitor(10);
Thread monitor = new Thread(um);
monitor.start();
public void loop(long i){
long j = i;
while(i>0){
i = i-1;
}
}
public class UpdateMonitor implements Runnable {
int time;
public UpdateMonitor(int i){
time = i;
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
loop(time);
message.sendEmptyMessage(0);
}
}
}
private Handler message = new Handler(){
public void handleMessage(Message msg) {
vflipper.showNext();
}
};
5. 因为我不知道在Thread 里 定时 的函数 sleep()似乎不行 只能采用下面的蹩脚办法
public void loop(long i){
long j = i;
while(i>0){
i = i-1;
}
}
写道
有哪位知道的 忘告知 不胜感谢!
6. emulatot 运行截图:
done!