第一步:新建Android工程ViewFlipperDemo:


第二步:新建AdverView.java代码如下:

package com.tutor.viewflipper;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.util.AttributeSet;import android.view.Gravity;import android.view.MotionEvent;import android.view.animation.Animation;import android.view.animation.TranslateAnimation;import android.widget.FrameLayout;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ViewFlipper;/** * @author frankiewei. * 广告推荐插件,可以自定义img个数. */public class AdvserView extends FrameLayout {/** * 当前索引值.默认第一张图片被选中. */private int mCurrentIndex = 0;/** * 上下文. */private Context mContext;/** * 点击屏幕的X左边值. */private float startX;/** * 设备的宽度. */private int mDisplayWidth;/** * 从左到右进入的动画. */private Animation mLeft2RightInAnimation;/** * 从左到右出去动画. */private Animation mLeft2RightOutAnimation;/** * 从右到左进入动画. */private Animation mRight2LeftInAnimation;/** * 从右到左出去动画. */private Animation mRight2LeftOutAnimation;/** * 动画播放时间. */private long duration = 1000;/** * ViewFlipper控件,继承FrameLayout,图片的容器. */private ViewFlipper mViewFlipper;/** * 下面动态生成点点tip的容器. */private LinearLayout mTipLinearLayout;/** * 正常点点的Bitmap. */private Bitmap mPointNorBitmap;/** * 被选中的点点的Bitmap. */private Bitmap mPointSelBitmap;/** * 这里是要显示的广告图片的资源ID,可以自定义个数. */private int[] imgResIds = {R.drawable.test1,R.drawable.test2,R.drawable.test3,R.drawable.test4,R.drawable.test5};public AdvserView(Context context) {super(context);setupViews();}public AdvserView(Context context,AttributeSet attr) {super(context,attr);setupViews();}private void setupViews(){mContext = getContext();mDisplayWidth = getResources().getDisplayMetrics().widthPixels;mViewFlipper = new ViewFlipper(mContext);mTipLinearLayout = new LinearLayout(mContext);mPointNorBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.point_normal);mPointSelBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.point_selected);//将广告图片加入ViewFlipper.for(int i = 0; i < imgResIds.length; i++){ImageView imageView = new ImageView(mContext);imageView.setImageResource(imgResIds[i]);mViewFlipper.addView(imageView);}//将点点动态加入Linerlayout.for(int j = 0; j < imgResIds.length; j++){ImageView imageview = new ImageView(mContext);if(j == 0){imageview.setImageBitmap(mPointSelBitmap);}else{imageview.setImageBitmap(mPointNorBitmap);}mTipLinearLayout.addView(imageview);}addView(mViewFlipper);addView(mTipLinearLayout);mTipLinearLayout.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL);//初始化动画.mLeft2RightInAnimation = new TranslateAnimation(-mDisplayWidth, 0, 0, 0);mLeft2RightInAnimation.setDuration(duration);mLeft2RightOutAnimation = new TranslateAnimation(0, mDisplayWidth, 0, 0);mLeft2RightOutAnimation.setDuration(duration);mRight2LeftInAnimation = new TranslateAnimation(mDisplayWidth, 0, 0, 0);mRight2LeftInAnimation.setDuration(duration);mRight2LeftOutAnimation = new TranslateAnimation(0, -mDisplayWidth, 0, 0);mRight2LeftOutAnimation.setDuration(duration);}@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:startX = event.getX();break;case MotionEvent.ACTION_UP:ImageView lastSelImageView  = (ImageView)mTipLinearLayout.getChildAt(mCurrentIndex);//判断左右滑动切换图片.if(event.getX() > startX){mViewFlipper.setInAnimation(mLeft2RightInAnimation);mViewFlipper.setOutAnimation(mLeft2RightOutAnimation);mViewFlipper.showNext();mCurrentIndex++;if(mCurrentIndex > imgResIds.length -1){mCurrentIndex = 0;}}else if(event.getX() < startX){mViewFlipper.setInAnimation(mRight2LeftInAnimation);mViewFlipper.setOutAnimation(mRight2LeftOutAnimation);mViewFlipper.showPrevious();mCurrentIndex--;if(mCurrentIndex < 0){mCurrentIndex = imgResIds.length -1;}}ImageView imageview = (ImageView)mTipLinearLayout.getChildAt(mCurrentIndex);imageview.setImageBitmap(mPointSelBitmap);lastSelImageView.setImageBitmap(mPointNorBitmap);break;default:break;}
return true;}}
第三步:修改ViewFlipperDemoActivity.java代码如下:

package com.tutor.viewflipper;import android.app.Activity;import android.os.Bundle;public class ViewFlipperDemoActivity extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(new AdvserView(this));    }}
第四步:运行效果如下:



更多相关文章

  1. Android(安卓)获得屏幕分辨率
  2. Android(安卓)中自定义View的应用
  3. Android(安卓)file transfer/Upload
  4. Android(安卓)Universal Image Loader 源码分析
  5. Android(安卓)仿3g体育门户客户端赛事图标浮出效果
  6. Android(安卓)SQLiteOpenHelper(手机数据库)
  7. Android(安卓)视图动画(View Animation) 使用详解
  8. android button 自定义
  9. Android高手进阶教程(二十五)之---Android(安卓)中的AIDL!!!

随机推荐

  1. JavaScript中当前脚本的URL
  2. javascript ArrayBuffer,它的用途是什么?
  3. javascript: 如何编写适合FireFox的对话
  4. 关于如何更好的监听元素属性的变化(转)
  5. JS正则表达式中有哪些特殊字符,这些特殊
  6. 使用jQuery排序,删除和追加元素在IE中不起
  7. js实现字符全排列算法
  8. [JavaScript] 将字符串数组转化为整型数
  9. 创建线程时设置CPU关联
  10. JavaScript 中 Object ,Prototype 相关的