动态切换view视图viewflipper组件用法
个人理解viewflipper,他其实就是切换view视图很方便而已,在做广告的时候有利用的价值,它可以自己来进行图片的每隔多长时间来进行切换
Viewflipper是一个组件,可以在transitions中找到
ViewFlipper可以添加任意view对象,包括图片,文本,按钮,listview等
示例代码:
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 stub
switch(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"
/>
<Button
android: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);
}