我的理解viewflipper,他其實就是切換view視圖很方便而已,在作廣告的時候有利用的價值,它能夠本身來進行圖片的每隔多長時間來進行切換android
Viewflipper是一個組件,能夠在transitions中找到ide
我照着網頁上面的步驟作了以下的操做,是能夠實現的測試
Main.xmlthis
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"spa
xmlns:tools="http://schemas.android.com/tools"xml
android:layout_width="match_parent"事件
android:layout_height="match_parent" >圖片
<ViewFlipperip
android:id="@+id/viewFlipper1"utf-8
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:inAnimation="@anim/push_in"
android:outAnimation="@anim/push_out"
android:persistentDrawingCache="animation" >
<LinearLayout
android:id="@+id/lin1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="next1" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/content" />
</LinearLayout>
<LinearLayout
android:id="@+id/lin2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="next2" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/content" />
</LinearLayout>
<LinearLayout
android:id="@+id/lin3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="next3" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/content" />
</LinearLayout>
</ViewFlipper>
</RelativeLayout>
Push_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="500"/>
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="500" />
</set>
Push_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="500"/>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="500" />
</set>
ViewFlipperActivity
public class ViewFlipperActivity extends Activity implements OnClickListener,OnGestureListener{
private ViewFlipper vf;
private Button btn1,btn2,btn3;
private GestureDetector gd;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gd=new GestureDetector(this);
vf=(ViewFlipper)findViewById(R.id.viewFlipper1);
vf.setFlipInterval(1000);//每一個view切換的時間是200微秒
vf.startFlipping();//開始不停地循環的顯示
btn1=(Button)findViewById(R.id.button1);
btn2=(Button)findViewById(R.id.button2);
btn3=(Button)findViewById(R.id.button3);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
if (vf.isFlipping()) {
vf.stopFlipping();//中止自動切換
}
switch (v.getId()) {
case R.id.button1:
vf.showNext();
break;
case R.id.button2:
vf.showNext();
break;
case R.id.button3:
vf.showNext();
break;
default:
break;
}
}
//這一步是必不可少的,主要就是要他的返回值的,由於我進過測試若是不用觸摸事件的返回值,那麼個人手勢的onfling()就不會被調用
@Override
public boolean onTouchEvent(MotionEvent event) {
return gd.onTouchEvent(event);//要的就是這個返回值
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e1.getX()>e2.getX()) {
Toast.makeText(ViewFlipperActivity.this, "你是向←滑動的", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(ViewFlipperActivity.this, "你是向→滑動的", Toast.LENGTH_SHORT).show();
}
return false;
}
}