延续前面几个的经常用到的ViewPager, 直接加载各种不同的 View

工程目录:

代码:

public class ViewActivity extends Activity {// 每个View的图片private int[] images = { R.drawable.guide_1,R.drawable.guide_3, R.drawable.guide_5,  R.drawable.guide_6, R.drawable.guide_7 };//所有的View      private List<View> list_views = new ArrayList<View>();private ViewPager pager;private ImageView start;      private ImageView curDot;private LinearLayout  linear_all_point; // 指示器图标viewprivate int offset;              // 位移量private int nowPosition;          // 记录当前的位置private GuidePagerAdapter adapter;Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case 0:start.setVisibility(View.VISIBLE);break;case 1:start.setVisibility(View.GONE);break;}}};@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.main);init();}private ImageView buildImageView(int id){ImageView iv = new ImageView(this);iv.setImageResource(id);ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT);iv.setLayoutParams(params);iv.setScaleType(ScaleType.FIT_XY);return iv;}//功能介绍界面的初始化private void init(){{linear_all_point = (LinearLayout)this.findViewById(R.id.dot_contain);pager = (ViewPager) findViewById(R.id.contentPager);curDot = (ImageView) findViewById(R.id.cur_dot);start = (ImageView) findViewById(R.id.open);}{ //初始化点 每个底部小点的指示器哦。 for(int i=0; i< images.length; i++){ImageView dotView = new ImageView(this);dotView.setImageResource(R.drawable.dot1_w);dotView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT,1.0f));linear_all_point.addView(dotView);}}ImageView imageView;//现在的viewpager我往里面塞的是图片,这里你也可以初始化你自己的xmlfor (int i = 0; i < images.length; i++) {imageView = buildImageView(images[i]);list_views.add(imageView);}//当curDot的所在的树形层次将要被绘出时此方法被调用curDot.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {public boolean onPreDraw() {// 获取ImageView的宽度也就是点图片的宽度offset = curDot.getWidth();return true;}});adapter = new GuidePagerAdapter(list_views);// ViewPager设置数据适配器,这个类似于使用ListView时用的adapterpager.setAdapter(adapter);pager.clearAnimation();// 为Viewpager添加事件监听器 OnPageChangeListenerpager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){@Overridepublic void onPageSelected(int position){//移动下面的小点指示器moveCursorTo(position);if (position == images.length-1) {// 到最后一张了                   handler.sendEmptyMessageDelayed(0, 500);                    } else if (nowPosition == images.length - 1) {handler.sendEmptyMessageDelayed(1, 100);}nowPosition = position;super.onPageSelected(position);}});}//指示器private void moveCursorTo(int position) {AnimationSet animationSet = new AnimationSet(true);TranslateAnimation tAnim = new TranslateAnimation(offset* nowPosition, offset * position, 0, 0);animationSet.addAnimation(tAnim);animationSet.setDuration(10);animationSet.setFillAfter(true);curDot.startAnimation(animationSet);}// ViewPager 适配器class GuidePagerAdapter extends PagerAdapter{private List<View> views;public GuidePagerAdapter(List<View> views){this.views=views;}@Overridepublic void destroyItem(View arg0, int position, Object arg2) {((ViewPager) arg0).removeView(views.get(position));}@Overridepublic void finishUpdate(View arg0) {}@Overridepublic int getCount() {return views.size();}@Overridepublic Object instantiateItem(View arg0, int position) {((ViewPager) arg0).addView(views.get(position),0);return views.get(position );}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == (arg1);}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState(){return null;}@Overridepublic void startUpdate(View arg0){   }}}

xml 文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><android.support.v4.view.ViewPagerandroid:id="@+id/contentPager"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_gravity="center"android:flipInterval="30"android:persistentDrawingCache="animation" /><FrameLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:gravity="center" android:layout_marginBottom="22.0dip"><LinearLayoutandroid:id="@+id/dot_contain"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:orientation="horizontal" >           </LinearLayout><ImageViewandroid:id="@+id/cur_dot"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/dot2_w" /></FrameLayout><ImageViewandroid:id="@+id/open"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_alignParentRight="true"android:clickable="true"android:src="@drawable/ic_open"android:visibility="gone" /></RelativeLayout>

图片什么的都自己找吧,老早以前的代码了= =,

转载于:https://www.cnblogs.com/pangblog/p/3424231.html

android 中 ViewPager 的平常用法 ViewPager+ Views相关推荐

  1. android服务绑定异步,Android中异步类AsyncTask用法总结

    本文总结分析了Android中异步类AsyncTask用法.分享给大家供大家参考,具体如下: 最近整理笔记的时候,看到有关AsyncTask不是很理解,重新疏导了一下,有在网上找了一些资料,个人不敢独 ...

  2. Android中各种Span的用法——转载

    转载一篇觉得很好的文章,在转载中成长:https://blog.csdn.net/qq_16430735/article/details/50427978 Android中各种Span的用法 前言 S ...

  3. 49.Android中各种Span的用法

    49.Android中各种Span的用法 Android中各种Span的用法 前言 SpannableStringBuilder URLSpan UnderlineSpan TypefaceSpan ...

  4. Android中的Selector的用法

    Android中的Selector主要是用来改变ListView和Button控件的默认背景.其使用方法可以按一下步骤来设计: (以在mylist_view.xml为例) 1.创建mylist_vie ...

  5. Android中与Intent相关的还有,Android中Intent的相关用法

    Intent第一个用法便是用它来进行活动之间的跳转 新建一个SecondActivity活动,并为之新建一个second_layout.XML布局文件,也创建一个Button按钮,名字为Button ...

  6. Android中Calendar类的用法总结

    Calendar是Android开发中需要获取时间时必不可少的一个工具类,通过这个类可以获得的时间信息还是很丰富的,下面做一个总结,以后使用的时候就不用总是去翻书或者查资料了. 在获取时间之前要先获得 ...

  7. android定义 task,Android中AsyncTask的基本用法

    首先: 了解一个知识点的用法,可以分四步: 第一:what是指AsyncTask的概念,从服务器下载资源,解析json文件,在开发Android应用时必须遵守单线程模型的原则: Android UI操 ...

  8. android日历总结,Android中Calendar类的用法总结

    Calendar是Android开发中需要获取时间时必不可少的一个工具类,通过这个类可以获得的时间信息还是很丰富的,下面做一个总结,以后使用的时候就不用总是去翻书或者查资料了. 在获取时间之前要先获得 ...

  9. Android中Menu的基本用法

    转自:http://blog.csdn.net/yuzhongchun/article/details/8956256 一. 使用xml定义Menu 菜单资源文件必须放在res/menu目录中.菜单资 ...

  10. Android 中 C++ Thread线程用法

    1.Android把线程C++封装Thread类,它是线程的基类 2.使用Thread时,创建一个类继承于Thread类,实现threadLoop()方法是纯虚函数,在子类中实现 3.启动线程,调用r ...

最新文章

  1. MNIST数据库介绍及转换
  2. 【BZOJ1951】【SDOI2010】古代猪文 Lucas定理、中国剩余定理、exgcd、费马小定理
  3. 根证书和中间证书的区别
  4. python3 日志模块
  5. SQL Server 2012笔记分享-52:可用性指标
  6. SQL注入手工注入常用的语句
  7. java 多行 n_Java实现向Word添加多行图片水印
  8. 【Swin Transformer Block】的整体流程如下:
  9. 【linux系统编程】远程登录工具ssh | 跨主机远程拷贝scp
  10. SQL-----------------------之ON和WHERE的区别
  11. brpc访问MySQL_怎么使用Swoft 搭建微服务(TCP RPC)PHP中高级进阶
  12. win10/win11掉驱动问题
  13. 《CSS世界》学习感想(持续更新)
  14. GOOGLE搜索局域网聊天软件局域网聊天软件
  15. ‘gbk‘ codec can‘t decode byte 0xae in position 199: illegal multibyte sequen 问题解决
  16. 阿里天池大赛实战记录之菜鸟-需求预测与分仓规划 1
  17. daytime协议的服务器和客户端程序,用socket套接字实现daytime协议服务器和客户端程序.doc...
  18. dw中html网页如何加音乐播放器,Dreamweaver CC
  19. 详解三大专利类型之首:发明专利
  20. Android 启动速度优化

热门文章

  1. nacos修改端口号
  2. 阶段3 2.Spring_04.Spring的常用注解_6 用于注入数据的注解
  3. LGOJP2831 愤怒的小鸟
  4. 重拾《 两周自制脚本语言 》- 支持中文标识符
  5. .net core5
  6. 从字节理解Unicode(UTF8/UTF16)
  7. BFS Codeforces Beta Round #94 (Div. 2 Only) C. Statues
  8. 【原】涉及数据库的单元测试-JTeser
  9. [Stage3D]入门讲稿
  10. HDU-1716 排列2 组合数