ViewPager实现自动翻页功能 --转载出处找不到了,根据自己的理解写个随笔方便以后的记忆以及代码的共享,感谢给我启发的那位高手--第一次写博客哈
2013-10-17 22:47
1061 查看
xml文件 textview 用于显示图片的标题 viewpager 用于实现翻页效果
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#123456" android:textIsSelectable="true" android:textSize="18sp" /> </LinearLayout> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="fill_parent" android:layout_height="fill_parent" > </android.support.v4.view.ViewPager> </LinearLayout>
代码块
package com.xiang; import java.util.ArrayList; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.Menu; import android.view.View; import android.widget.ImageView; import android.widget.TextView; public class AutoScrollActivity extends Activity { private ViewPager vp; private int imagsID[]={R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d}; private String titles[]={"图片一","图片二","图片三","图片四"}; private ArrayList<ImageView> images; private TextView title; private ViewPagerAdapter adapter; private int currentPosition=0;//当前页面位置 private ScheduledExecutorService executor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_auto_scroll); init(); } private void init() { images=new ArrayList<ImageView>(); for(int i=0;i<imagsID.length;i++) { ImageView imgview=new ImageView(this); imgview.setBackgroundResource(imagsID[i]); images.add(imgview); } title=(TextView)findViewById(R.id.title); title.setText(titles[0]);//默认显示第一张图片 vp=(ViewPager)findViewById(R.id.vp); adapter=new ViewPagerAdapter(); vp.setAdapter(adapter); vp.setOnPageChangeListener(listener); } OnPageChangeListener listener=new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub title.setText(titles[arg0]); currentPosition=arg0; } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }; class ViewPagerAdapter extends PagerAdapter { @Override public int getCount() { // TODO Auto-generated method stub return images.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 vp=(ViewPager) container; vp.addView(images.get(position)); return images.get(position); } @Override public void destroyItem(View container, int position, Object object) { // TODO Auto-generated method stub ViewPager vp=(ViewPager) container; vp.removeView(images.get(position)); } } @Override protected void onStart() { // TODO Auto-generated method stub /* * 第一个参数:要自动执行的方法(任务) * 第二个参数:延迟几秒启动 * 第三个参数:之后每个几秒 执行第一个参数的方法 * 第四个参数:时间单位 时分秒 */ super.onStart(); executor=Executors.newSingleThreadScheduledExecutor(); executor.scheduleAtFixedRate(new ViewPagerTask(), 2, 2, TimeUnit.SECONDS); } class ViewPagerTask implements Runnable { @Override public void run() { // TODO Auto-generated method stub currentPosition=(currentPosition+1)%images.size(); handler.obtainMessage().sendToTarget();//获取当前消息 发送给handler } } private Handler handler=new Handler() { public void handleMessage(android.os.Message msg) { vp.setCurrentItem(currentPosition); }; }; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.auto_scroll, menu); return true; } }
实现效果:图片每隔两秒自动翻页,同时更改图片的标题,到最后一面又返回到第一页显示。2013-10-17
相关文章推荐
- viewpager实现自动滑动以及手势滑动功能
- Android生日礼物(含拼图游戏,背景音乐,自动拨号等功能实现)--根据代码规范修改注释以及定义
- Android不继承ViewPager实现自动滚动翻页功能
- Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- 自己很丰衣足食Geany中tidy配置,实现自动格式化代码功能
- 项目运行时判断是否第一次打开而进行的跳转以及引导页ViewPager的实现
- Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- 【转】Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- android中ViewPager的用法以及自动滚动播放实现初探
- 在xib和story board上实现代码自动布局(解决添加约束时,大于等于小于等于繁琐的问题,以及占位view的问题)
- 自动完成功能以及登陆记忆的演示代码
- Android高手进阶篇3-自定义ListView实现底部View自动隐藏和消失的功能
- Android高手进阶篇3-自定义ListView实现底部View自动隐藏和消失的功能
- Android使用ViewPager实现导航页根据情况禁止滑动以及点击切换
- Java实现分页功能 代码很粗糙,都是根据自己所需去定义逻辑功能的。
- pyspider示例代码五:实现自动翻页功能
- Python实现日志自动记录功能(一个思路代码,详细可以自己扩展)
- 关于viewpager 里嵌套 listview 同时实现翻页功能的“java.lang.IllegalStateException: The specified child..."异常处理
- 自定义控件实现广告头自动移动,viewpager的运用,和自己利用xml画图,自定义圆点,构造选择器的方法