布局文件

<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. 非阻塞connect

    步骤1: 设置非阻塞,启动连接 实现非阻塞 connect ,首先把 sockfd 设置成非阻塞的.这样调用 connect 可以立刻返回,根据返回值和 errno 处理三种情况: () 如果返回 , ...

  2. 不用搭环境的10分钟AngularJS指令简易入门01(含例子)

    不用搭环境的10分钟AngularJS指令简易入门01(含例子) `#不用搭环境系列AngularJS教程01,前端新手也可以轻松入坑~阅读本文大概需要10分钟~` AngularJS的指令是一大特色 ...

  3. web前端的发展态势 浅识

    以前 作为一个java程序员写的代码主要还是后台的代码,虽然开始的时候前后端都写,但是也是用别人造好的轮子来用,学学html,css,js,jquery,再找一个前端ui框架学学,上手之后我们就可以写 ...

  4. iOS 图片裁剪方法

    iOS 图片裁剪方法 通过 CGImage 或 CIImage 裁剪 UIImage有cgImage和ciImage属性,分别可以获得CGImage和CIImage对象.CGImage和CIImage ...

  5. lxd-启动篇分析

    lxd是什么:lxd是基于lxc构筑的容器管理进程,提供镜像,网络,存储,以及容器的能力,对外暴漏restfull API.其与docker的区别是docker更切近与app container,以应 ...

  6. Javaweb之Jsp

    1. JSP是什么? JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. 2. JSP带 ...

  7. Matlab自带常用的分类器,直接复制用就好了,很方面。

    很方面的,懒得自己写了. clc   clear all     load('wdtFeature');         %   训练样本:train_data             % 矩阵,每行 ...

  8. H5 Video + DOM

    HTML 5 Video + DOM HTML5 视频 HTML5 音频 HTML5 <video> - 使用 DOM 进行控制 HTML5 <video> 元素同样拥有方法. ...

  9. PHP数据访问批量删除(10261101)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. unittest单元测试框架实现参数化

    当我们在使用TestNG时,发现它有一个非常好用的参数化功能.当你的测试用例有固定的参数和断言结果时,它可以相似用例的节省用例的个数. 例子如下: import static org.testng.A ...