android使用自定义控件制作类似天猫广告条滑动效果

  

这段代码用的是:viewpage +自定义控件技术实现的广告指示器滑动效果


先展示下主要代码以及效果后面会附上源代码的


BannerFragment。java

包com.example.ex_templete;
  进口android.os.Bundle;
  进口android.support.v4.app.Fragment;
  进口android.support.v4.app.FragmentManager;
  进口android.support.v4.app.FragmentPagerAdapter;
  进口android.support.v4.view.ViewPager;
  进口android.support.v4.view.ViewPager.OnPageChangeListener;
  进口android.util.Log;
  进口android.view.LayoutInflater;
  进口android.view.View;
  进口android.view.ViewGroup;
  公开课BannerFragment延伸片段
  {
  私有静态最终int COUNT_BANNER=100000;
  私人:viewpage mPager;//定义广告图片
  私人int [] mDrawerRes=new int []
  {R.drawable。banner01 R.drawable。banner02 R.drawable.banner03,
  R.drawable。banner04 R.drawable。banner05};//保存当前:viewpage手动滑动状态
  私人BannerIndicater mIndicater;
  类BannerAdapter FragmentPagerAdapter延伸
  {
  公共BannerAdapter (FragmentManager fm)
  {//FragmentPagerAdapter要求传入一个FragmentManager的对象
  超级(fm);
  }
  @Override
  公共片段getItem (int位置)
  {//将mDrawerRes集合中的五张图片加入到FragmentPagerAdapter中
  ImageFragment片段=new ImageFragment ();
  int指数=% mDrawerRes.length位置;
  片段。changeImg (mDrawerRes(指数)指数);
  返回片段;
  }
  @Override
  公共int getCount ()
  {
  返回COUNT_BANNER;//当前有100000张寻呼机页面模拟无尽模式
  }
  }
  @Override
  公众视野>包com.example.ex_templete;
  进口android.content.Context;
  进口android.graphics.Canvas;
  进口android.graphics.Color;
  进口android.graphics.Paint;
  进口android.util.AttributeSet;
  进口android.widget.ImageView;
  公共类BannerIndicater ImageView延伸
  {
  私有静态最终int R=5;
  私有静态最终int Y=32;
  私有静态最终int X=20;
  私有静态最终int POINT_DISTENCE=R * 3;
  私人浮动mFrontX=X;
  私人mFrontY=Y浮动;
  私人油漆mBgPaint;
  私人油漆mFrontPaint;
  
  私人persionOffset浮动;
  私人int波斯;
  公共BannerIndicater(上下文语境){
  超级(上下文);//如果只重写这个方法那么这个自定义控件只能在setViewContent(新BannerIndicater ());
  }
  
  公共BannerIndicater(上下文语境,AttributeSet attrs)
  {//自定义控件必须有一个有参的构造方法,如果想在layout.xml文件中直接写入的话就要重写这个方法
  超级(上下文,attrs);
  initPaint ();
  }
  @Override
  保护空白> & lt; RelativeLayout xmlns: android=" http://schemas.android.com/apk/res/android "
  xmlns:工具=" http://schemas.android.com/tools "
  android: layout_width=" match_parent "
  android: layout_height=" match_parent "
  工具:上下文="。祝辞BannerFragment”;
  & lt; android.support.v4.view.ViewPager
  android: id=癅 + id/寻呼机”
  android: layout_width=" match_parent "
  android: layout_height=" 140 dp”
  android:背景=" # C0C0C0”比;
  & lt;/android.support.v4.view.ViewPager>
  
  
  & lt; !——在布局中使用自定义控件——比;
  & lt; com.example.ex_templete.BannerIndicater
  android: id=癅 + id/指示器”
  android: layout_width=" 100 dp”
  android: layout_height=" 40 dp "
  android: layout_alignBottom=癅 + id/寻呼机”
  android: layout_alignParentRight=" true "
  android:背景=" # 80000000 "/比;
  & lt;/RelativeLayout> 


滑动效果图:

 android使用自定义控件制作类似天猫广告条滑动效果

 android使用自定义控件制作类似天猫广告条滑动效果

 android使用自定义控件制作类似天猫广告条滑动效果


点击事件:


 android使用自定义控件制作类似天猫广告条滑动效果


源代码




android使用自定义控件制作类似天猫广告条滑动效果