ViewFlipper 之 幻灯片

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 运行截图:

 ViewFlipper 之 幻灯片

 

done!

你可能感兴趣的:(thread,android,xml,J#)