这段代码用的是: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>
滑动效果图:
点击事件:
源代码