ViewPager实现漂亮的引导页
作者:钻石VIP 发布时间:2022-12-27 21:56:58
标签:ViewPager,引导页
废话就不多说了,直接上效果图和代码
fry.Activity01
package fry;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import com.example.viewPager.R;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class Activity01 extends Activity implements OnPageChangeListener,OnClickListener{
private ViewPager viewPager;
private List<View> views;//用来存放放进ViewPager里面的ImageView
private int[] imageID;//
private ImagePagerAdapter adapter;//适配器
private LinearLayout linearLayout;
private int currentPoint;//当前被选中中页面的下标
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity01);
initData();
initView();
}
//初始化view
void initView(){
adapter=new ImagePagerAdapter(views);
viewPager=(ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(adapter);
linearLayout=(LinearLayout) findViewById(R.id.linearLayout);
initPoint();
viewPager.setOnPageChangeListener(this);
}
//初始化数据
void initData(){
//将图片的id全部放到imageID集合中
imageID=new int[]{R.drawable.guide1,R.drawable.guide2,R.drawable.guide3,R.drawable.guide4};
views=new ArrayList<View>();
//给iamgeView设置LayoutParams参数
LayoutParams layoutParams=new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
for(int i:imageID){
//不确定1
ImageView imageView=new ImageView(this);
imageView.setImageResource(i);
imageView.setLayoutParams(layoutParams);
views.add(imageView);
}
}
/*
* 初始化页面下方的点
*/
private void initPoint(){
ImageView[] imageView=new ImageView[imageID.length];
for(int i=0;i<linearLayout.getChildCount();i++){
imageView[i]=(ImageView) linearLayout.getChildAt(i);
imageView[i].setImageResource(R.drawable.point_normal);
imageView[i].setOnClickListener(this);
imageView[i].setTag(i);
}
currentPoint=0;
imageView[currentPoint].setImageResource(R.drawable.point_select);
}
/*
* 将页面下方的点全部置为未选中状态
*/
private ImageView[] clearPoint(){
ImageView[] imageView=new ImageView[imageID.length];
for(int i=0;i<linearLayout.getChildCount();i++){
imageView[i]=(ImageView) linearLayout.getChildAt(i);
imageView[i].setImageResource(R.drawable.point_normal);
}
return imageView;
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
/*
* 页面被选中时候执行的方法
* (non-Javadoc)
* @see android.support.v4.view.ViewPager.OnPageChangeListener#onPageSelected(int)
*/
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
ImageView[] imageView= clearPoint();
imageView[position].setImageResource(R.drawable.point_select);
}
//小圆点点击事件
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int i=(Integer) v.getTag();
viewPager.setCurrentItem(i);
}
}
fry.ImagePagerAdapter
package fry;
import java.util.ArrayList;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
public class ImagePagerAdapter extends PagerAdapter{
private List<View> views;
public ImagePagerAdapter(List<View> views) {
this.views=views;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return this.views.size();
}
/**
* position是在viewPager中显示图片的位置
* 我对应的图片放到对应的位置就好了
* instantiateItem和destroyItem是对应的
* 一个是创建item,一个是销毁item
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
((ViewPager)container).addView(views.get(position));
return views.get(position);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager)container).removeView(views.get(position));
}
}
/viewPager/res/layout/activity01.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="bottom|center"
>
<ImageView
android:id="@+id/point1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/point_select"
android:padding="25dip"
/>
<ImageView
android:id="@+id/point2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/point_normal"
android:padding="25dip"
/>
<ImageView
android:id="@+id/point3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/point_normal"
android:padding="25dip"
/>
<ImageView
android:id="@+id/point4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/point_normal"
android:padding="25dip"
/>
</LinearLayout>
</FrameLayout>
1、多个控件(这里指小圆点)可以用List来一起访问
2、可用动态的控件设置tag来区分控件
来源:http://www.cnblogs.com/Renyi-Fan/archive/2017/08/22/7408214.html


猜你喜欢
- 1.搜索树的概念二叉搜索树是一种特殊的二叉树,又称二叉查找树,二叉排序树,它有几个特点:如果左子树存在,则左子树每个结点的值均小于根结点的值
- 我就废话不多说了,大家还是直接看代码吧!public static String mapToTxt(Map<String,String
- 前言最近代码里和WebView有很多的交互,webview是android中的浏览器控件,这里主要介绍一下webview如何重载WebVie
- 前言在编程的过程中我们都知道有些错误是难以避免的,为了避免错误所带来的程序不友好所以程序当中引入了异常处理机制,又因为数据类型奇多和处理方式
- 当我们要创建一个Tcp/Ip Server connection ,我们需要一个范围在1000到65535之间的端口 。但是本机一个端口只能
- Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。但是sort()的参
- 首先:因为工作需要,需要对接socket.io框架对接,所以目前只能使用netty-socketio。websocket是不支持对接sock
- 前言这几天同事跟我在升级Android target SDK和build tool版本的时候,碰到了一个非常搞笑的问题,基本可以算作是“坑”
- public static class DataTableHelper { &nb
- 想要将一个项目导出为jar包,供其它项目使用,在eclipse中可以直接导出该项目为jar包,而 在AS中可以通过修改gradle才处理。接
- 公司编辑妹子需要爬取网页内容,叫我帮忙做了一简单的爬取工具这是爬取网页内容,像是这对大家来说都是不难得,但是在这里有一些小改动,代码献上,大
- 前言String可以说是Java中使用最多最频繁、最特殊的类,因为同时也是字面常量,而字面常量包括基本类型、String类型、空类型。一.
- 实例:用户输入一个日期,要求输出这个日期是星期几和在这一年中的第几天://声明一个DateTime类型的变量用于存放用户输入的日期DateT
- APK是Android系统的发布的工程包,很多时候我们想在电脑上而非Android手机上面运行它。下面就提供下Android APK文件在电
- 一、介绍Properties文件在Java中主要为配置文件,文件类型为:.properties,格式为文本文件,内容格式为"键=值
- Android 仿微信的键盘切换(录音,表情,文字,其他),IM通讯,类似朋友圈只要涉及到文字等相关的app都会要涉及到键盘的处理,今天就给
- 前言在RequestMappingHandlerAdapter对request进行了适配,并且调用了目标handler之后,其会返回一个Mo
- 在Android开发过程中,有时会需要一些消息提示,大多数情况可以用dialog来做,但有些消息不需要用户去点击取消并且不能对用户体验产生影
- 传统的Trie实现简单,但是占用的空间实在是难以接受,特别是当字符集不仅限于英文26个字符的时候, * 起来的空间根本无法接受。双数组Trie
- 1、使用JPA 的@Enumerated 注解 ,可以直接将Enum映射到数据库中。但是value的值只有两种方式选择,一种是使用枚举的序号