viewflipper可以添加任意view對象,包括圖檔,文本,按鈕,listview等。
示例代碼:
view plaincopy to clipboardprint?
import android.app.activity;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.view.viewgroup.layoutparams;
import android.view.animation.animationutils;
import android.widget.button;
import android.widget.imageview;
import android.widget.textview;
import android.widget.viewflipper;
public class viewflippertest extends activity {
private button previous, next;
private viewflipper flipper;
/** called when the activity is first created. */
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
initiaview();
flipper.addview(addbuttonbytext("start"),
new layoutparams(layoutparams.fill_parent, layoutparams.wrap_content));
flipper.addview(addtextbytext("gutouwang"));
flipper.addview(addimagebyid(r.drawable.food_gutouwang));
flipper.addview(addtextbytext("fushan liaoli"));
flipper.addview(addimagebyid(r.drawable.food_foshanliaoli));
flipper.addview(addbuttonbytext("end"),
}
/**
* initialize view
*/
private void initiaview(){
previous = (button) findviewbyid(r.id.btnprevious);
next = (button) findviewbyid(r.id.btnnext);
flipper = (viewflipper) findviewbyid(r.id.flipper);
flipper.setinanimation(animationutils.loadanimation(this,
android.r.anim.fade_in));
flipper.setoutanimation(animationutils.loadanimation(this,
android.r.anim.fade_out));
previous.setonclicklistener(listener);
next.setonclicklistener(listener);
private onclicklistener listener = new onclicklistener(){
public void onclick(view v) {
// todo auto-generated method stub
switch(v.getid()){
case r.id.btnprevious:
flipper.showprevious();
break;
case r.id.btnnext:
flipper.shownext();
}
}
};
public view addtextbytext(string text){
textview tv = new textview(this);
tv.settext(text);
tv.setgravity(1);
return tv;
public view addimagebyid(int id){
imageview iv = new imageview(this);
iv.setimageresource(id);
return iv;
public view addbuttonbytext(string text){
button btn = new button(this);
btn.settext(text);
return btn;
}
import android.app.activity;import android.os.bundle;import android.view.view;import android.view.view.onclicklistener;import android.view.viewgroup.layoutparams;import android.view.animation.animationutils;import android.widget.button;import android.widget.imageview;import android.widget.textview;import android.widget.viewflipper;public class viewflippertest extends activity { private button previous, next; private viewflipper flipper; /** called when the activity is first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); initiaview(); flipper.addview(addbuttonbytext("start"), new layoutparams(layoutparams.fill_parent, layoutparams.wrap_content)); flipper.addview(addtextbytext("gutouwang")); flipper.addview(addimagebyid(r.drawable.food_gutouwang)); flipper.addview(addtextbytext("fushan liaoli")); flipper.addview(addimagebyid(r.drawable.food_foshanliaoli)); flipper.addview(addbuttonbytext("end"), new layoutparams(layoutparams.fill_parent, layoutparams.wrap_content)); } /** * initialize view */ private void initiaview(){ previous = (button) findviewbyid(r.id.btnprevious); next = (button) findviewbyid(r.id.btnnext); flipper = (viewflipper) findviewbyid(r.id.flipper); flipper.setinanimation(animationutils.loadanimation(this, android.r.anim.fade_in)); flipper.setoutanimation(animationutils.loadanimation(this, android.r.anim.fade_out)); previous.setonclicklistener(listener); next.setonclicklistener(listener); } private onclicklistener listener = new onclicklistener(){public void onclick(view v) {// todo auto-generated method stubswitch(v.getid()){case r.id.btnprevious:flipper.showprevious();break;case r.id.btnnext:flipper.shownext();break;}} }; public view addtextbytext(string text){ textview tv = new textview(this); tv.settext(text); tv.setgravity(1); return tv; } public view addimagebyid(int id){imageview iv = new imageview(this);iv.setimageresource(id);return iv; } public view addbuttonbytext(string text){button btn = new button(this);btn.settext(text);return btn; }}
main.xml
<?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"
>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
>
<button
android:id="@+id/btnprevious"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginright="5dip"
android:text="previous"
/>
android:id="@+id/btnnext"
android:layout_marginleft="5dip"
android:text="next"
</linearlayout>
<viewflipper
android:id="@+id/flipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
</viewflipper>
</linearlayout>
<?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" ><linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" ><buttonandroid:id="@+id/btnprevious" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginright="5dip" android:text="previous" /> <buttonandroid:id="@+id/btnnext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginleft="5dip" android:text="next" /> </linearlayout><viewflipper android:id="@+id/flipper" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" ></viewflipper></linearlayout>
增加以下處理可以解決觸摸button,listview等view上滑動的問題
@override
public boolean dispatchtouchevent(motionevent ev){
this.detector.ontouchevent(ev);//在這裡先處理下你的手勢左右滑動事件
return super.dispatchtouchevent(ev);
}
@overridepublic boolean dispatchtouchevent(motionevent ev){ this.detector.ontouchevent(ev);//在這裡先處理下你的手勢左右滑動事件return super.dispatchtouchevent(ev);}
參考位址:
http://topic.csdn.net/u/20101229/10/9bd48452-08a4-4e82-b92c-2c6fd7c95756.html