ViewFlipper与ViewPager的区分
- ViewFlipper轻量一些,而ViewPager的页卡则可适应更加复杂的对象。
ViewFlipper
一些常用方法:
- 1.setInAnimation()与setOutAnimation()设置View切入切出的动画。以直接传入Animation对象,也可以传入定义的Animation文件的resourceID。
如:flipper.setInAnimation(this,R.anim.left_in); - showNext(),showPrevious()显示下一个,上一个View。
- setFilpInterval(3000):设置View切换的时间间隔,参数为毫秒。 startFlipping():开始进行View的切换,会循环进行。 stopFlipping():停止View切换。
setAutoStart(boolen):设置是否自动开始。
public class MainActivity extends Activity {
private ViewFlipper flipper;
private float startX;
private int[]resId = {R.drawable.asdsa,R.drawable.asdsadsa,R.drawable.dasdsadas,R.drawable.dsadsad,R.drawable.sadsad};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
flipper = (ViewFlipper) findViewById(R.id.viewFlipper1);
//将图片置入flipper中
//图片填充至ImageView要用到的属性android:scaleType="centerCrop"
for(int i=0;i<resId.length;i++){
ImageView image = new ImageView(this);
image.setImageResource(resId[i]);
flipper.addView(image);
}
//设置切换间隔并启动
flipper.setFlipInterval(3000);
flipper.startFlipping();
}
@Override//重写触屏方法
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
{
startX = event.getX();
flipper.stopFlipping();
break;
}
case MotionEvent.ACTION_MOVE:
{
//Nothing to do
break;
}
case MotionEvent.ACTION_UP:
{
if(event.getX()-startX>100&&flipper.getDisplayedChild()==0)
Toast.makeText(getApplicationContext(), "first now", Toast.LENGTH_SHORT).show();
if(event.getX()-startX>100&&flipper.getDisplayedChild()!=0)
//viewFlipper设置动画 //viewFlipper.setInAnimation(AnimationUtils.loadAnimation(view.getContext(),
// R.anim.in_left_right));
//viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(view.getContext(),
// R.anim.out_left_right));
flipper.showPrevious();
if(startX-event.getX()>100&&flipper.getDisplayedChild()==(resId.length-1))
Toast.makeText(getApplicationContext(), "last now", Toast.LENGTH_SHORT).show();
if(startX-event.getX()>100&&flipper.getDisplayedChild()!=(resId.length-1))
flipper.showNext();
flipper.setFlipInterval(3000);
flipper.startFlipping();
break;
}
}
return super.onTouchEvent(event);
}
ViewPager
ViewPager默认加载三个页卡。切换时对暂不是用的页卡进行销毁,对即将使用到的页卡进行缓存。
public class MainActivity extends Activity {
private View v1,v2,v3;
private ViewPager viewPager;
private List<View> viewList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//将Layout对象转换为view对象
viewPager = (ViewPager)findViewById(R.id.viewpager);
LayoutInflater inflater = getLayoutInflater();
v1=inflater.inflate(R.layout.layout1, null);
v2=inflater.inflate(R.layout.layout2, null);
v3=inflater.inflate(R.layout.layout3, null);
//添加到viewList中
viewList = new ArrayList<View>();
viewList.add(v1);
viewList.add(v2);
viewList.add(v3);
PagerAdapter pagerAdapter = new PagerAdapter(){
public int getCount() {
// 返回viewList的大小
return viewList.size();
}
public boolean isViewFromObject(View arg0, Object arg1) {
// 这个方法一般就重写成这个样子
return arg0==arg1;
}
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewList.get(position));
}
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
}
};
viewPager.setAdapter(pagerAdapter);
}
}