布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" > <android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent" /> <RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp" > <LinearLayout
android:id="@+id/ll_points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout> <View
android:id="@+id/view_white"
android:layout_width="10dp"
android:layout_height="10dp"
android:background="@drawable/white_point" />
</RelativeLayout> </RelativeLayout>

相关代码 

 public class MainActivity extends Activity {

     private ViewPager mViewPager;
private int[] ids = {R.drawable.a1,R.drawable.a2,R.drawable.a3};
private List<ImageView> mImageViews;
private MyPagerAdapter mPagerAdapter;
private LinearLayout mLlPoints;
private View mViewPoint; private int dis_left; //白点距离左边的距离
private int dis_pp; //两个点之间的距离 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main); initView();
initData(); mViewPoint.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override
public void onGlobalLayout() {
mViewPoint.getViewTreeObserver().removeGlobalOnLayoutListener(this);
dis_pp = mLlPoints.getChildAt(1).getLeft() - mLlPoints.getChildAt(0).getLeft();
}
}); mPagerAdapter = new MyPagerAdapter();
mViewPager.setAdapter(mPagerAdapter); mViewPager.addOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) { } @Override
public void onPageScrolled(int arg0,float arg1,int arg2) {
//设置白点的移动距离
dis_left = (int)((arg0 + arg1) * dis_pp);
RelativeLayout.LayoutParams params = (LayoutParams)mViewPoint.getLayoutParams();
params.leftMargin = dis_left;
mViewPoint.setLayoutParams(params);
} @Override
public void onPageScrollStateChanged(int arg0) { }
}); } private void initView() {
mViewPager = (ViewPager)findViewById(R.id.vp);
mLlPoints = (LinearLayout)findViewById(R.id.ll_points);
mViewPoint = findViewById(R.id.view_white);
} private void initData() { mImageViews = new ArrayList<ImageView>(); for (int i = 0;i < ids.length;i++) { ImageView iv = new ImageView(this);
iv.setBackgroundResource(ids[i]);
mImageViews.add(iv); View view = new View(this);
view.setBackgroundResource(R.drawable.gray_point);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(Utils.dip2px(this,10),
Utils.dip2px(this,10));
if(i != 0){
params.leftMargin = Utils.dip2px(this,20);
}
view.setLayoutParams(params); mLlPoints.addView(view);
}
} class MyPagerAdapter extends PagerAdapter { @Override
public int getCount() {
return mImageViews.size();
} @Override
public Object instantiateItem(ViewGroup container,int position) {
ImageView iv = mImageViews.get(position);
container.addView(iv);
return iv;
} @Override
public boolean isViewFromObject(View arg0,Object arg1) {
return arg0 == arg1;
} @Override
public void destroyItem(ViewGroup container,int position,Object object) {
container.removeView((View)object);
} }
}

 效果图

ViewPager—01引导页的制作的更多相关文章

  1. ViewPager之引导页

    一.概述 ViewPager是android-support-v4中提供的类,它是一个容器类,常用于页面之间的切换. 本文介绍ViewPager最基础的应用:在多个View之间进行切换,亦即ViewP ...

  2. ViewPager实现引导页

    1. 要使用ViewPager,必须要创建 PagerAdapter. 这里创建一个 ViewPagerAdapter来继承PagerAdapter public class ViewPagerAda ...

  3. ViewPager实现引导页(添加导航点,判断是否第一次进入主界面)

    1.引导页的4个界面布局,里面加载一张背景图片 插入到guide的界面布局中(这里不用fragment) guide_background_fragment1.xml <?xml version ...

  4. ViewPager滑动引导页

    ViewPager实现Animation动画引导页   http://blog.csdn.net/ye_scofield/article/details/44831357 SurfaceView实现动 ...

  5. Onboard,迷人的引导页样式制作库

    简介 Onboard主要用于引导页制作,源码写的相当规范,值得参考. 项目主页: https://github.com/mamaral/Onboard 实例下载: https://github.com ...

  6. ViewPager制作APP引导页+若干动画效果

    ViewPager使用FragmentStatePagerAdapter做Adapter,引导页使用多Fragment形式. 见http://www.cnblogs.com/bmbh/p/567276 ...

  7. 安卓第一次启动引导页使用ViewPager实现

    我们在安装某个APP的时候,基本都会有一个引导页的提示,他们可以打广告,或者介绍新功能的加入和使用说明等.一般都支持滑动并且下面有几个点,显示共有多少页和当前图片的位置,在IOS上这个实现起来比较简单 ...

  8. Xamarin.Android之引导页的简单制作

    0x01 前言 对于现在大部分的APP,第一次打开刚安装或更新安装的APP都会有几个引导界面,通常这几个引导页是告诉用户 APP有些什么功能或者修改了什么bug.新增了什么功能等等等. 下面就用Xam ...

  9. ViewPager打造轮播图(Banner)\引导页(Guide)

    今年7月时,在Github发布了一个开源的Banner库,虽然Star不多,但还是有少部分人使用. Banner效果:  昨天,有使用此库的同学提出需求,想在引导页的时候用这个库并且最后一页有进入按钮 ...

随机推荐

  1. liunx常用命令

    查看系统信息常用命令 uname -m /arch      显示机器的处理架构 uname -r                显示正在使用的内核版本 cat/proc/cpuinfo      显 ...

  2. LAMP部署

    各组件版本:Linux:CentOS 7 1511 64位 (提前下载)Apache:Apache 2Mysql:MariaDB 5.5.52Php 5.4.16 VMware Workstation ...

  3. 【Unity优化】我所理解的IL指令

    版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 指令格式 英文单词全写 指令解释 nop no operation perform ...

  4. 手把手教你webpack、react和node.js环境配置(下篇)

    上篇我介绍了前端下webpack和react.redux等环境的配置,这篇将继续重点介绍后台node.js的配置. 这里是上篇链接:手把手教你webpack.react和node.js环境配置(上篇) ...

  5. Linux服务器下Java环境搭建

    前言: 在centOS下,像阿里云等都预先设置了jdk,不过不是SUN的java JDK,一般情况要重新装jdk,而且一般情况下自己装的Jdk相对来说易控制版本,稳定性更高.所以以下是我卸载预装jdk ...

  6. Vue 2.0初学后个人总结及分享

    摘要:最近在上海找工作,发现Vue前景还不错,于是就打算先学习一下(之前了解过,但是一直没提到日程上)这篇随笔当是为了自己学习之后,做一个小的阶段性总结.希望本文的内容对于刚开始接触vue的朋友们有点 ...

  7. ThinkPhp框架 分页 和session验证的使用

    TP框架分页要使用到类文件,可以使用自己的类文件,也可以使用tp框架自带的类文件. 首先导入分页的类文件(Page.class.php): <?php namespace Home\shuju; ...

  8. yii2 Nav::widget() 和 Menu::widget()

    Nav::widget http://www.yiiframework.com/doc-2.0/yii-bootstrap-nav.html Menu::widget()  http://www.yi ...

  9. ubuntu 虚拟机vm virtualbox 不能打开 win7

    ubuntu某方面总有些不便,下载个虚拟机装个win7 但是第二次打开的时候就出现了安装是的场景: 原因很简单: 是因为安装了之后没有把win7的镜像文件移除,每次打开时会检测cd/dvd文件/(is ...

  10. 使用Intellij Idea自定义MVC框架

    ---恢复内容开始--- 今天我学习了自定义一个简单的MVC框架,这个我们首先要知道什么是MVC框架! MVC框架: MVC全名是Model View Controller,是模型(model)-视图 ...