ViewFlipper

本文详细介绍了ViewFlipper控件的基本用法及其XML属性设置。通过实例展示了如何使用ViewFlipper来实现自动切换不同视图的效果,并给出了具体的代码实现。
ViewFlipper是一个用来展示view的控件,
逻辑上它有一些child view,同一时间只显示一个, 可以自动切换。
效果上比如child view是ImageView,那么它每隔一段时间可以自动换图,显示下一个ImageView。

xml属性
android:autoStart 布尔值,true为自动切换,默认false
android:flipInterval 整数值,单位毫秒, 自动切换间隔时间。

主要的函数
public void addView (View child, int index, ViewGroup.LayoutParams params)  添加child view
public boolean isAutoStart ()
public boolean isFlipping ()
public void setAutoStart (boolean autoStart)
public void setFlipInterval (int milliseconds)
public void startFlipping ()
public void stopFlipping ()

public void showNext()

public void showPrevious()


看代码 最清楚了

package com.example.howtouseviewflipper;

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.ViewFlipper;

public class MainActivity extends Activity {

	private ViewFlipper vf;
	private Button btn;
	private String list1[] = {"list1", "1", "2", "3", "4", "5", "6", "7"};
	private String list2[] = {"list2", "lion", "tiger", "monkey", "rabbit", "cat", "dog", "snake", "frog"};
	private String list3[] = {"list3", "red", "yellow", "blue", "green", "purple", "orange", "white", "black", "grey"};
	private GestureDetector gd;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		vf = (ViewFlipper) findViewById(R.id.viewflipper);
		
		ListView lv1 = new ListView(this);
		ArrayAdapter aa1 = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list1);
		lv1.setAdapter(aa1);
		ListView lv2 = new ListView(this);
		ArrayAdapter aa2 = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list2);
		lv2.setAdapter(aa2);
		ListView lv3 = new ListView(this);
		ArrayAdapter aa3 = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list3);
		lv3.setAdapter(aa3);
		View.OnTouchListener vot = new View.OnTouchListener() {
			
			@Override
			public boolean onTouch(View arg0, MotionEvent arg1) {
				// TODO Auto-generated method stub
				return gd.onTouchEvent(arg1);
			}
		};
		AdapterView.OnItemClickListener aaso = new AdapterView.OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView arg0, View arg1, int arg2,
					long arg3) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "OnItemClick "+ arg2, Toast.LENGTH_SHORT).show();
			}
			
		};
		lv1.setOnTouchListener(vot);
		lv2.setOnTouchListener(vot);
		lv3.setOnTouchListener(vot);
		lv1.setOnItemClickListener(aaso);
		lv2.setOnItemClickListener(aaso);
		lv3.setOnItemClickListener(aaso);
		vf.addView(lv1, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
		vf.addView(lv2, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
		vf.addView(lv3, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
//		for(int i = 0; i< list2.length; i++) {
//			TextView tv = new TextView(this);
//			tv.setText(list2[i]);
//			vf.addView(tv, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
//		}
		gd = new GestureDetector(this, new GestureDetector.OnGestureListener() {
			
			@Override
			public boolean onSingleTapUp(MotionEvent arg0) {
				// TODO Auto-generated method stub
				return false;
			}
			
			@Override
			public void onShowPress(MotionEvent arg0) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,
					float arg3) {
				// TODO Auto-generated method stub
				return false;
			}
			
			@Override
			public void onLongPress(MotionEvent arg0) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2,
					float arg3) {
				// TODO Auto-generated method stub
				if(arg1.getX() - arg0.getX() > 120) {
					vf.showPrevious();
					return true;
				}
				if(arg1.getX() - arg0.getX() < -120) {
					vf.showNext();
					return true;
				}
				return false;
			}
			
			@Override
			public boolean onDown(MotionEvent arg0) {
				// TODO Auto-generated method stub
				return false;
			}
		});
		
		btn = (Button)findViewById(R.id.btn);
		btn.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				if(vf.isFlipping()){
					vf.stopFlipping();
					btn.setText(R.string.start);
				}else {
					vf.startFlipping();
					btn.setText(R.string.stop);
				}
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

//  当ViewFlipper中的view是TextView时,在这个地方用GestureDetector是好用的,但是如果是ListView,就不行了
//	@Override
//	public boolean onTouchEvent(MotionEvent event) {
//		// TODO Auto-generated method stub
//		return gd.onTouchEvent(event);
//	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值