布局:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
>
</android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/pointgroup"
android:layout_width="match_parent"
android:layout_height="10dp"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_marginBottom="5dp"
android:gravity="center"
> </LinearLayout>
</RelativeLayout>

程序:

public class MainActivity extends Activity {
//ViewPager
private ViewPager viewpager;
//幻灯片图片资源
private int [] imgArray={R.drawable.view1,R.drawable.view2,R.drawable.view3};
//图片数组
private ArrayList<View> viewlist; private ImageView imageView;
//点点
private ViewGroup pointgroup;
private ImageView[] pointarr; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewpage);
//初始化
viewpager =(ViewPager) findViewById(R.id.viewpager);
pointgroup =(ViewGroup) findViewById(R.id.pointgroup);
viewlist = new ArrayList<View>(); //将图片装载到数组
for(int i=0;i<imgArray.length;i++){
imageView =new ImageView(this);
//设置图片
imageView.setBackgroundResource(imgArray[i]);
//设置图片id
imageView.setId(imgArray[i]);
viewlist.add(imageView); } /*
* viewpager加载适配器
* MyPageAdapter为自定义适配器
* */ //传递上下文
Context context = MainActivity.this;
MyPageAdapter pageadapter2 =new MyPageAdapter(viewlist,context);
viewpager.setAdapter(pageadapter2); //点数组
pointarr=new ImageView[imgArray.length];
//把点加入布局,和设置点状态
for(int i=0;i<imgArray.length;i++){
ImageView point=new ImageView(this); //设置点大小
point.setLayoutParams(new LayoutParams(10,10));
pointarr[i]=point;
//状态处理
if(i==0){
pointarr[i].setBackgroundResource(R.drawable.viewpage_point_focused);
}else{
pointarr[i].setBackgroundResource(R.drawable.viewpage_point_unfocused);
}
//加入到容器
pointgroup.addView(pointarr[i]);
} //viewpager设置监听器
pointChangeListener pointListener=new pointChangeListener();
viewpager.setOnPageChangeListener(pointListener);
//点击图片 } /*
* viewpage监听器
*/ public class pointChangeListener implements OnPageChangeListener{ @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 } @Override
//比如切换到第二张图片,相应索引的点为选择状态,其他为未选中状态
public void onPageSelected(int arg0) { // TODO Auto-generated method stub
for(int i=0;i<pointarr.length;i++){
pointarr[arg0].setBackgroundResource(R.drawable.viewpage_point_focused);
if(arg0 !=i){
pointarr[i].setBackgroundResource(R.drawable.viewpage_point_unfocused);
}
} } } }

自定义适配器:

public class MyPageAdapter extends PagerAdapter {
private List<View> viewlist;
private Context context;
public MyPageAdapter(List<View> viewlist,Context context){
this.viewlist =viewlist;
this.context=context;
} @Override
public int getCount() {
// TODO Auto-generated method stub
return viewlist.size();
} @Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
} //以下也是必要方法,不过要自己添加
//实例化 @Override
public Object instantiateItem(View container, int position) {
// TODO Auto-generated method stub
((ViewPager)container).addView(viewlist.get(position));
View view =viewlist.get(position);
view.setOnClickListener(new OnClickListener(){ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
int i =v.getId();
String t="你点击了图片的图片id为:"+i;
Toast.makeText(context, t, Toast.LENGTH_LONG).show(); /*跳转页面
*Intent intent =new Intent(context,NavigationActivity.class);
*context.startActivity(intent);
*/ } });
return viewlist.get(position);
} //销毁
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView(viewlist.get(position));
} }

实例下载>>>>>>>>

Android:ViewPager制作幻灯片的更多相关文章

  1. Android ViewPager 用法

    Android ViewPager 用法 场景:一般第一次打开应用程序时,程序会有一个提示页来给展现应用程序都有哪些功能:或者程序更新时,又更新哪些新特性,都可以使用ViewPager Demo 描述 ...

  2. Android ViewPager再探:增加滑动指示条

    上一篇:<Android ViewPager初探:让页面滑动起来> ViewPager只是左右滑动有些丑,也不知道当前位于第几页面. 可以在上方加入滑动指示条,来确定当前位置. 只需要修改 ...

  3. Android ViewPager初探:让页面滑动起来

    下一篇:<Android ViewPager再探:增加滑动指示条> ViewPager需要用到适配器PagerAAdapter,以下四个函数需要重写: instantiateItem(Vi ...

  4. 使用Markdown+Pandoc+LaTex+Beamer制作幻灯片

    概述 为什么使用markdown? mardown是一种轻量级的标记语言,语法简单,可读性好,并且容易转化成其他格式的文档, 在技术文档撰写中得到越来越广泛的应用.相信大家对markdown都有一定了 ...

  5. Android ViewPager Fragment使用懒加载提升性能

     Android ViewPager Fragment使用懒加载提升性能 Fragment在如今的Android开发中越来越普遍,但是当ViewPager结合Fragment时候,由于Androi ...

  6. Android中制作自定义dialog对话框的实例

    http://www.jb51.net/article/83319.htm   这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...

  7. Android ViewPager 打造炫酷欢迎页

    Android ViewPager 打造炫酷欢迎页 ViewPager是Android扩展v4包中的类,这个类可以让用户切换当前的View.对于这个类的应用场景,稍加修改就可以应用到多个环境下.比如: ...

  8. xamarin android viewpager的用法

    1.什么是ViewPager 通过手势滑动可以完成view的切换,一般是用来app的引导页或则实现图片轮播,类似网页上的banner轮播. Adnroid 3.0后引入的一个UI控件,在xamarin ...

  9. [Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)

    接上文: https://www.cnblogs.com/wukong1688/p/10693338.html Android ViewPager 中加载 Fragmenet的两种方式 方式(一) 二 ...

随机推荐

  1. php更新修改excel中的内容例子

    代码如下 复制代码 //模板存放目录$dir = $DOCUMENT_ROOT.'/backoffice/admin/oemcheck/';  $templateName = '1.xlsx';$ou ...

  2. HTML5特性:使用async属性异步加载执行JavaScript

    HTML5让我兴奋的一个最大的原因是,它里面实现的新功能和新特征都是我们长久以来一直期待的.比如,我以前一直在使用placeholders,但以前必须要用JavaScript实现.而HTML5里给Ja ...

  3. Oracle bbed 实用示例-----修改Data内容、恢复delete的rows

    bbed 可以在db open 状态来进行修改,但是建议在做任何修改操作之前先shutdown db. 这样避免checkpoint 进程重写bbed 对block 的修改. 也避免oracle 在b ...

  4. linux 命令grep

    linux 命令grep grep命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件.通常来说,grep显示匹配的行.使用grep来搜索包括一个或多个正则表达式匹配到的文本行,然后 ...

  5. UML 小结(1)- 整体阐述

    前言:              UML( Unified Modeling Language) 又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形 ...

  6. ADT 怎么删除logcat过滤规则

    刚才新增了一个过滤规则,但是没有找到在哪里删除,也看不到全部的log输出, 解决方案如下:

  7. 文件中的类都不能进行设计,因此未能为该文件显示设计器。设计器检查出文件中有以下类: FormMain --- 未能加载基类“WinForm.Win.FormsBase.FormMainBase”。请确保已引用该程序集并已生成所有项目

    出现该问题的原因:FormMain从FormMainBase继承之后,一旦修改FormMainBase就会出现这个问题 解决方案:(1-4是搜索网友的) 1: 关闭VS所有窗口,后重启.即可返回正常. ...

  8. sqlserver2008 解决 ldf文件过大的方法

    SQL2008清空删除日志: '在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式. ------------------------------------------ ...

  9. Hadoop以及其外围生态系统的安装参考

    在研究Hadoop的过程中使用到的参考文档:   1.Hadoop2.2 参考文档 在CentOS上安装Hadoop 2.x 集群: http://cn.soulmachine.me/blog/201 ...

  10. EXT4.2--Ext Designer 使用

    前言: “画EXT”是一个美好的想法,如果有一款可视化工具能够只需进行拖拽而设计EXT,生成代码--那真是一件美丽的事.然而现实是,即使是为Eclipse装上EXT插件,用上idea,手写代码的提示也 ...