微信小程序自定义轮播Android自定义轮播广告

Android自定义轮播广告,adroid轮播广告是很多A应用中不可缺少的。我这边介绍的自定义控件主要是通过ViewPager来实现轮播广告,实现的功能主要是亮点:1是广告的间隔切换2是点击广告的事件实现。具体的代码我已经放入百度云盘,请大家下载使用!云盘地址:htt://a.aidu.com//1t4joy
android轮播广告是很多App应用中不可缺少的。我这边介绍的自定义控件主要是通过ViewPager来实现轮播广告,实现的功能主要是亮点:1是广告的间隔切换2是点击广告的事件实现。具体的代码我已经放入百度云盘,请大家下载使用!云盘地址:http://pan.baidu.com/s/1t4joy步骤阅读工具/原料AndroidEclipse自定义控件项目1首先我们来看看项目的结构,主要的代码是自定义控件Banner和BannerViewPagerAdapter。自定义控件的属性放在attrs.xml中步骤阅读2项目的attrs.xml,各个属性的含义我在控件中有说明                                                步骤阅读END主要代码1publicclassBannerextendsLinearLayoutimplementsRunnable{ privateViewPagerviewPager; privateLinearLayoutviewDots; privateListviews; //存放所有的点 privateImageView[]dotsImageViews; //当前选中点的ImageView privateImageViewtempImageView; //当前选中位置 privateintindex=0; //当前是否滚动 privatebooleanisContinue=true; //Banner点击事件 privateOnSingleTouchListenermListener; /**触摸时按下的点**/ privatePointFdownP=newPointF();  /**触摸时当前的点**/ privatePointFcurP=newPointF(); /**属性*/ privatefloatdotsViewHeight;//引导View的高度 privatefloatdotsSpacing;//点与点之间的间隔 privatebooleanautoChange;//是否自动切换Banner privateintchangeInterval;//切换Banner的时间 privateDrawabledotsFocusImage;//当前选中的Dots privateDrawabledotsBlurImage;//未选中的Dots privateDrawabledotsBackground;//引导View的背景 privateScaleTypescaleType;//view如果的图片的话使用 privatebooleanadjustViewBounds;//view如果的图片的话使用 privateintdotsGravity;// publicBanner(Contextcontext,AttributeSetattrs){ super(context,attrs); TypedArraya=context.obtainStyledAttributes(attrs, R.styleable.BannerImageViewPager,0,0); try{ dotsViewHeight=a.getDimension( R.styleable.BannerImageViewPager_dotsViewHeight, dp2px(context,45)); dotsSpacing=a.getDimension( R.styleable.BannerImageViewPager_dotsSpacing, dp2px(context,10)); changeInterval=a.getInteger( R.styleable.BannerImageViewPager_changeInterval,3000); autoChange=a.getBoolean( R.styleable.BannerImageViewPager_autoChange,true); dotsFocusImage=a .getDrawable(R.styleable.BannerImageViewPager_dotsFocusImage); dotsBlurImage=a .getDrawable(R.styleable.BannerImageViewPager_dotsBlurImage); dotsBackground=a .getDrawable(R.styleable.BannerImageViewPager_dotsBackground); ScaleType[]values=ScaleType.values(); intval=a.getInt(R.styleable.BannerImageViewPager_android_scaleType,0); scaleType=values[val]; adjustViewBounds=  a.getBoolean(R.styleable.BannerImageViewPager_android_adjustViewBounds,false); dotsGravity=a.getInt(R.styleable.BannerImageViewPager_android_gravity,Gravity.CENTER); }finally{ //回收TypedArray,以便后面重用 a.recycle(); } InitBannerView(); } privatevoidInitBannerView(){ viewPager=newViewPager(getContext()); viewDots=newLinearLayout(getContext()); LayoutParamslp=newLayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); addView(viewPager,lp); if(dotsBackground!=null){ viewDots.setBackground(dotsBackground); } LayoutParamsdotlp=newLayoutParams(LayoutParams.MATCH_PARENT, (int)dotsViewHeight); viewDots.setPadding((int)dotsSpacing,0,0,0); viewDots.setGravity(dotsGravity); addView(viewDots,dotlp); } @SuppressWarnings(\"deprecation\") publicvoidsetViewPagerViews(Listviews){ this.views=views; dotsImageViews=newImageView[views.size()]; addDots(views.size()); viewPager.setAdapter(newBannerViewPagerAdapter(views,scaleType,adjustViewBounds)); viewPager.setOnPageChangeListener(newViewPager.SimpleOnPageChangeListener(){ @Override publicvoidonPageSelected(intposition){ //TODOAuto-generatedmethodstub super.onPageSelected(position); index=position; switchToDot(index); } privatevoidswitchToDot(intindex){ if(tempImageView!=null){ tempImageView.setImageDrawable(dotsBlurImage); } dotsImageViews[index].setImageDrawable(dotsFocusImage); tempImageView=dotsImageViews[index]; } }); viewPager.setOnTouchListener(newOnTouchListener(){ @Override publicbooleanonTouch(Viewv,MotionEventevent){ //每次进行onTouch事件都记录当前的按下的坐标 curP.x=event.getX();     curP.y=event.getY(); switch(event.getAction()){ caseMotionEvent.ACTION_DOWN: //切记不可用downP=curP,这样在改变curP的时候,downP也会改变       downP.x=event.getX();       downP.y=event.getY(); caseMotionEvent.ACTION_MOVE: isContinue=false; break; caseMotionEvent.ACTION_UP: isContinue=true; //在up时判断是否按下和松手的坐标为一个点       //如果是一个点,将执行点击事件,这是我自己写的点击事件,而不是onclick       if(downP.x==curP.x&&downP.y==curP.y){        mListener.onSingleTouch(index);         returntrue;       } break; default: isContinue=true; break; } returnfalse; } }); newThread(this).start(); } privatevoidaddDots(intsize){ for(inti=0;i

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/y26W44prP7.html

(0)

相关推荐