大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用ViewFlipper与GestureDetector来实现图片的左右滑动效果。
创新互联是网站建设专家,致力于互联网品牌建设与网络营销,专业领域包括成都做网站、网站建设、电商网站制作开发、微信平台小程序开发、微信营销、系统平台开发,与其他网站设计及系统开发公司不同,我们的整合解决方案结合了恒基网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,且不断评估并优化我们的方案,为客户提供全方位的互联网品牌整合方案!
首先在布局xml中添加ViewFlipper控件:
在Activity中实现GestureDetector的OnGestureListener监听:
mGesture = new GestureDetector(this, this);
public boolean onDown(MotionEvent e) { return false; } public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } public void onLongPress(MotionEvent e) { } public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } public void onShowPress(MotionEvent e) { } public boolean onSingleTapUp(MotionEvent e) { return false; }
为ViewFilpper加入View,如图片、文字等:
mFilpper = (ViewFlipper) findViewById(R.id.flipper); mFilpper.addView(addImageView(R.drawable.chrysanthemum)); mFilpper.addView(addImageView(R.drawable.desert)); mFilpper.addView(addImageView(R.drawable.ic_launcher)); mFilpper.addView(addImageView(R.drawable.koala)); mFilpper.addView(addImageView(R.drawable.penguins)); mFilpper.addView(addImageView(R.drawable.lighthouse)); mFilpper.addView(addText("你好"));
public ImageView addImageView(int resId) { ImageView p_w_picpath = new ImageView(this); p_w_picpath.setImageResource(resId); return p_w_picpath; } private View addText(String string) { TextView textView = new TextView(this); textView.setText(string); return textView; }
在onFling()中编写滑动效果:
@Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.e("onFling", "onFling"); if (e1.getX() - e2.getX() > 120) { mFilpper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_in)); mFilpper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out)); mFilpper.showPrevious(); } else if (e2.getX() - e1.getX() > 120) { mFilpper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.rigth_in)); mFilpper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.right_out)); mFilpper.showNext(); } return false; }
其中的left_in.xml如下:
left_out.xml:
right_in.xml:
right_out.xml:
最后还要重写onTouchEvent()方法在其中调用GestureDetector的onTouchEvent()方法:
@Override public boolean onTouchEvent(MotionEvent event) { Log.e("onTouchEvent", "onTouchEvent"); return mGesture.onTouchEvent(event); }