Android:ViewPager制作幻灯片

布局:
<?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制作幻灯片的更多相关文章
- Android ViewPager 用法
Android ViewPager 用法 场景:一般第一次打开应用程序时,程序会有一个提示页来给展现应用程序都有哪些功能:或者程序更新时,又更新哪些新特性,都可以使用ViewPager Demo 描述 ...
- Android ViewPager再探:增加滑动指示条
上一篇:<Android ViewPager初探:让页面滑动起来> ViewPager只是左右滑动有些丑,也不知道当前位于第几页面. 可以在上方加入滑动指示条,来确定当前位置. 只需要修改 ...
- Android ViewPager初探:让页面滑动起来
下一篇:<Android ViewPager再探:增加滑动指示条> ViewPager需要用到适配器PagerAAdapter,以下四个函数需要重写: instantiateItem(Vi ...
- 使用Markdown+Pandoc+LaTex+Beamer制作幻灯片
概述 为什么使用markdown? mardown是一种轻量级的标记语言,语法简单,可读性好,并且容易转化成其他格式的文档, 在技术文档撰写中得到越来越广泛的应用.相信大家对markdown都有一定了 ...
- Android ViewPager Fragment使用懒加载提升性能
Android ViewPager Fragment使用懒加载提升性能 Fragment在如今的Android开发中越来越普遍,但是当ViewPager结合Fragment时候,由于Androi ...
- Android中制作自定义dialog对话框的实例
http://www.jb51.net/article/83319.htm 这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...
- Android ViewPager 打造炫酷欢迎页
Android ViewPager 打造炫酷欢迎页 ViewPager是Android扩展v4包中的类,这个类可以让用户切换当前的View.对于这个类的应用场景,稍加修改就可以应用到多个环境下.比如: ...
- xamarin android viewpager的用法
1.什么是ViewPager 通过手势滑动可以完成view的切换,一般是用来app的引导页或则实现图片轮播,类似网页上的banner轮播. Adnroid 3.0后引入的一个UI控件,在xamarin ...
- [Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)
接上文: https://www.cnblogs.com/wukong1688/p/10693338.html Android ViewPager 中加载 Fragmenet的两种方式 方式(一) 二 ...
随机推荐
- Nginx的平滑重启和平滑升级
一,Nginx的平滑重启如果改变了Nginx的配置文件(nginx.conf),想重启Nginx,可以发送系统信号给Nginx主进程的方式来进行.在重启之前,要确认Nginx配置文件的语法是正确的. ...
- Python开发【第一篇】Python基础之反射
反射 反射的作用:反射得作用是提高代码可读行. __import__导入模块和import导入模块的区别: __import__导入模块是通过字符串进行导入. import是常用得导入模块方法. 扩展 ...
- c#中的结构与枚举
结构 与c++不同的是,结构应该定义在命名空间或者类里面,成员变量叫字段,字段并且有访问控制符,每个字段前要加一个下划线 例子 using System; using System.Collectio ...
- 【ajax跨域】原因原理解决
1.安全,跨域cookie iframe 2.很简单,就是利用<script>标签没有跨域限制的“漏洞”(历史遗迹啊)来达到与第三方通讯的目的.当需要通讯时,本站脚本创建一个<scr ...
- Msys+Mingw在手 妙用在心!
1 缘起 平时在一些c++群面,看见很多大学十分努力的学习c++/MFC ,看见在编程语言百花争芳的时候,C/C++还是很有很有魅力.估计很多初学者使用都是window下的visual stdio 开 ...
- 【iOS】Objective-C简约而不简单的单例模式
前些日子在项目中因为误用了单例而导致了一系列问题.原来在objective-c中的单例并没有java或者C#那么简单的实现,这里记录下: 问题是这样被发现的,在对于一个UIViewController ...
- STL学习一:标准模板库理论基础
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的从广 ...
- Pomodairo,番茄工作法-解刨篇
处于“信息大爆炸”的 e 时代的我们每天必定要处理很多的事情,不管是工作.学习.生活......面对这么多的纷杂的事物我们将如何应对?如何做到有条不紊的进行?高效.轻松.愉快的完成它呢?这时一款精致的 ...
- iOS10和Xcode8适配
1 Xib文件的注意事项 使用Xcode8打开xib文件后,会出现下图的提示. 大家选择Choose Device即可. 之后大家会发现布局啊,frame乱了,只需要更新一下frame即可.如下图 注 ...
- 将Asp.Net MVC应用程序的控制器定义在单独的程序集(类库)中
一直以来都想把控制器的代码部署到单独的程序集里.昨天研究Asp.Net MVC的源代码,偶然发现有一个奇特的类“ControllerBuilder”,MSDN上的介绍相当简略,就一句话“表示一个类,该 ...