ViewPager欢迎界面
一、几张图片组成欢迎界面 下方有几个点对应每个图片 当图片被选中时对应的点会变亮,当对应的点被点击时也会切换到指定画面
以下是代码
package com.example.viewpager_1; import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup; import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.Toast; public class MainActivity extends Activity { private ViewPager vPager;
private List<ImageView> views;//ViewPager中显示的所有页面,PagerAdapter使用的数据源
private PagerAdapter adapter; private LinearLayout navLayout;//导航布局空间 private LinearLayout.LayoutParams layoutParams;//线性布局中子控件使用的布局参数,作用设置子控件大小,外边距 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
navLayout = (LinearLayout) findViewById(R.id.navLayouttId); vPager = (ViewPager) findViewById(R.id.viewPager); inintViews();//初始化显示的页面
//设置viewpager的页面滑动事件
vPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// 指定的位置的页面被选择
selectNav(position);
} private void selectNav(int position) {
// 选择指定位置的导航图片为选择图片,选择的图片要重置一下
ImageView navImg = null;
//遍历 导航布局中所有的子控件,判断子控件的位置是否为选择位置,若是,则改变图片的内容
for(int i=0;i<navLayout.getChildCount();i++){
navImg = (ImageView) navLayout.getChildAt(i );//获取布局中指定位置的子控件
if(i==position)
navImg.setImageResource(R.drawable.page_now);
else
navImg.setImageResource(R.drawable.page);
}
}
/*
* 第一个参数: 滚动页面开始的位置
* 第二个参数: 两个页面之间滚动的偏移量,范围是0-1
* 第三个参数:两个页面之间滚动的像素偏移量
*/
@Override
public void onPageScrolled(int position, float offset, int offsetPixels) {
// TODO 从当前页面位置开始滚动事件
} @Override
public void onPageScrollStateChanged(int state) {
// 页面滚动状态发生变化时事件: 开始滚动,停止滚动,正在设置页面
// ViewPager.SCROLL_STATE_DRAGGING 开始滚动
// ViewPager.SCROLL_STATE_IDLE 停止滚动
// ViewPager.SCROLL_STATE_SETTLING 正在设置页面,即将要停止,并且设置当前的页面 switch (state) {
case ViewPager.SCROLL_STATE_DRAGGING:
break;
case ViewPager.SCROLL_STATE_IDLE:
break;
case ViewPager.SCROLL_STATE_SETTLING:
break;
default:
break;
}
}
});
}
private void inintViews() {
// TODO 加载viewpager中显示的额页面
views = new ArrayList<ImageView>();
ImageView imgView = null;
ImageView navImg = null;
layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
layoutParams.leftMargin=20;
layoutParams.rightMargin=20;//px
for(int i=1;i<=3;i++){
//实例化viewpager中要显示图片的空间
imgView = new ImageView(getApplicationContext());
imgView.setScaleType(ScaleType.CENTER_CROP); //根据资源名和类型获取 这一资源的标示 -->R.drawable.slide1
int resId = getResources().getIdentifier("slide"+i, "drawable", getPackageName());
imgView.setImageResource(resId);//设置图片控件显示的图片资源
if(i==3){
imgView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "正在跳转。。。。", 0).show();
}
});
}
views.add(imgView);//将实例化的空间添加到数据源中。 navImg = new ImageView(getApplicationContext());
navImg.setScaleType(ScaleType.CENTER_CROP);
if(i==1)
navImg.setImageResource(R.drawable.page_now);
else
navImg.setImageResource(R.drawable.page); //设置导航图片的标签: 当前导航图片的位置
navImg.setTag(i-1);
navImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 点击导航图片的事件方法: 读取图片控件中的标签,转化为与ViewPager页面对应的位置,最后选择页面
int position = (Integer) v.getTag();
vPager.setCurrentItem(position);//切换viewpager显示的位置
}
});
navLayout.addView(navImg,layoutParams);
}
//实例化PagerAdapter适配器
adapter = new WelcomePagerAdapter();
vPager.setAdapter(adapter);
//设置移除UI的间隔大小
// vPager.setOffscreenPageLimit(3);//默认值不能小于1,建议不要 改变默认值。
}
//声明PagerAdapter的子类,用于管理ViewPager中显示的View控件
class WelcomePagerAdapter extends PagerAdapter{
@Override
public int getCount() {
// TODO 显示返回页面的总大小
return views.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO 获取指定位置的view,并增加到ViewPager中,同时作为当前页面的数据返回
container.addView(views.get(position));
return views.get(position);//作为当前页面的数据返回
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO 当前 位置与viewpager当中正显示页面的位置的间隔超出了一页时,需要将当前
//位置的页面移除掉.同时 实例化三个页面
container.removeView(views.get(position));
}
//固定写法;
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO 判断当前显示的页面的UI对象和数据对象是否 一致 return arg0==arg1;
}
}
}
MainActivity.java
<FrameLayout 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=".MainActivity" > <!-- 使用v4包下的可左右滑动的控件,其显示的页面需要通过PagerAdapter适配器增加或移除 --> <android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" /> <!-- 导航小图片所在的布局 -->
<LinearLayout
android:id="@+id/navLayoutId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginBottom="10dp"
android:background="#4000"
android:gravity="center"
android:orientation="horizontal"
android:padding="20dp" /> </FrameLayout>
activity_main.xml
效果图

ViewPager欢迎界面的更多相关文章
- android笔记:ViewPager实现界面的滑动
最近在学习ViewPager实现界面的滑动,拜读了郭神的博客文章,并抽取归纳了自己对ViewPager的理解. ViewPager实现界面滑动的步骤如下: 1.在xml布局内加入控件android.s ...
- 自定义viewpager的界面切换动画
核心操作: 1.创建一个类实现 android.support.v4.view.ViewPager.PageTransformer 根据 position 实现判断哪个界面进行界面切换动画 publi ...
- 【笔记】WPF实现ViewPager引导界面效果及问题汇总
最近在开发项目的首次使用引导界面时,遇到了问题,引导界面类似于安卓手机ViewPager那样的效果,希望通过左右滑动手指来实现切换不同页面,其间伴随动画. 实现思路: 1.界面布局:新建一个UserC ...
- ViewPager + Fragment 实现主界面底部导航栏
1. 四个类似的Frament布局 tab_main_fragment.xml <LinearLayout xmlns:android="http://schemas.android. ...
- Android中使用ViewPager实现广告条
我们在使用电商或视频的手机客户端时,通常会看到广告条的效果.在网上搜索时才知道使用的是ViewPager,于是自己也做了一个Demo. 以下是效果图: 图中包括背景图片.文字描述以及白点. 其中Vie ...
- ViewPager空指针错误,android.support.v4.view.ViewPager.onSaveInstanceState
support.v4 包为我们提供了一个非常实用的滑动控件ViewPager,在使用ViewPager时有一个需要注意的地方: 即: android.support.v4.view.ViewPager ...
- ViewPager和View的事件响应规则
案例背景: 当我们实现viewpager的自动切换界面操作的时候,如果需要增加点击图片viewpager停止自动切换,松开手指viewpager自动切换又继续执行的逻辑,正常思维下实现代码如下所示: ...
- Viewpager以及ViewPagerIndicator的相关使用
ViewPagerIndicator开源框架可以用来在ViewPager上方做标题,可以在ViewPager下方做跟随移动的小圆点,这个类库必须和自己的项目在电脑的同一磁盘盘符下,比如都在D盘或者E盘 ...
- ViewPagerWithViewDemo【ViewPager和View搭配以及演示获取里面的值和CheckBox单选效果】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 简单记录下ViewPager和自定义布局view的搭配使用以及布局文件中单选效果.获取viewpager布局内部值的功能. 效果图 ...
随机推荐
- C# webbrowser实现百度知道团队邀请助手!
[百度知道团队邀请助手] 是您快速提高百度知道团队成员数和团队排名的利器! 主要功能: 1.运用C#自带的webbrowser自动登录百度: 2.自动采集请在C#.Net分类排名下的所有用户,邀请这些 ...
- Noip往年题目整理
Noip往年题目整理 张炳琪 一.历年题目 按时间倒序排序 年份 T1知识点 T2知识点 T3知识点 得分 总体 2016day1 模拟 Lca,树上差分 期望dp 144 挺难的一套题目,偏思维难度 ...
- metaq架构原理
原创文章,转载请注明出处:http://jameswxx.iteye.com/blog/2034111 本来只是想看下metaq的文档,结果发现好乱,现在metaq其实有两个大分支了,一个是庄晓丹 ...
- Java调用Bat
import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.Input ...
- Django静态图片参数解析
使用Django静态设置时,遇到很多问题,经过艰苦的Baidu, stack overflow, Django原档阅读,终于把静态图片给搞出来了.特记录下来. 关键的概念:Django中,静态资源的存 ...
- 代码:cookie(一个广告展示例子)
这个小例子的要求是: 用户第一次进入,显示大图,2秒后大图动画关闭,再把小图动画展开: 用户再次进入后,只显示静态小图. 做法: 定义一个容器 .img201512ad,宽高写死:1190x70.—— ...
- text-overflow:ellipsis ,溢出文本显示省略号
text-overflow:ellipsis 对溢出文本显示省略号有两个好处, 一是不用通过程序限定字数 二是有利于SEO. 需要使用对对溢出文本显示省略号的通常是文章标题列表,这样处理对搜索引擎更友 ...
- Latex 箭头、下标、符号上下写文字、正方形和三角形
0. hat $abc\hat def$ $ab\widehat{cde}f$ 1. 箭头上的文字 $\underrightarrow{\text{你的文字}}$ ($A \xlefta ...
- 可视化库-seaborn-调色板(第五天)
1. 基础的调色板的演示 color_palette() 设置传入的任何颜色,不传使用默认颜色,set_palette() 设置所有图的颜色# 6种主题 # 1 deep# 2 muted# 3 p ...
- 不影响Inspector布局拓展类
DecoratorEditor.cs using System.Collections.Generic; using System.Linq; using System.Reflection; usi ...