用户向导左右滑动页面实现之ViewPager_html/css_WEB-ITnose
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用户向导左右滑动页面实现之ViewPager_html/css_WEB-ITnose,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6103字,纯文字阅读大概需要9分钟。
内容图文
接着上一篇博客,上一篇博客是用ImageSwitcher实现用户向导功能,现在用ViewPager实现相同的功能。直接看代码:布局文件activity_main.xml
ViewPager页面的切换用小圆点来表示当前是第几页,这里使用drawable.xml文件去绘制的,如下:
dot_focus.xml
dot_nomal.xml
在Activity中如下代码:
package com.example.viewpagerautoswitch;import java.util.ArrayList;import java.util.List;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Context;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;import android.widget.TextView;import android.widget.Toast;@SuppressLint("HandlerLeak")public class MainActivity extends Activity { private ViewPager mViewPager ; private MyPagerAdapter mViewPagerAdapter ; private LinearLayout mLinearLayout ; private ImageView[] mImageDots ; private Context mContext ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = MainActivity.this ; mViewPager = (ViewPager)findViewById(R.id.viewpager); mLinearLayout = (LinearLayout)findViewById(R.id.dots); initViewPager(getImageItem() ,0); } public void initViewPager(List这里ViewPager和ImageSwitcher不同的地方在于ViewPager是用Adapter去封装需要加装的页面,而ImageSwitcher使用ViewFactory去加装图片的。所以使用viewPager时需要集成PagerAdapter实现相应的接口即可。如下:mList ,int position){ mImageDots = new ImageView[mList.size()]; for(int i=0 ;i<mList.size() ;i++){ ImageView image = new ImageView(mContext); image.setLayoutParams(new LayoutParams(10, 10)); image.setBackgroundResource(R.drawable.dot_nomal); mImageDots[i] = image ; mLinearLayout.addView(image); TextView tv = new TextView(mContext); tv.setLayoutParams(new LayoutParams(20, 10)); mLinearLayout.addView(tv); } mViewPagerAdapter = new MyPagerAdapter(mContext,mList); mViewPager.setOnPageChangeListener(new OnPageChangeListener() { // onPageScrollStateChanged --> onPageSelected --> onPageScrolled -->onPageScrollStateChanged @Override public void onPageSelected(int position) { for(int i=0 ;i<mImageDots.length ;i++){ if(i == position){ mImageDots[i].setBackgroundResource(R.drawable.dot_focus); }else{ mImageDots[i].setBackgroundResource(R.drawable.dot_nomal); } } } @Override public void onPageScrolled(int current_position, float persent, int px) { } @Override public void onPageScrollStateChanged(int state) { } }); mViewPager.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { } }); mViewPager.setAdapter(mViewPagerAdapter); mViewPager.setCurrentItem(position); mImageDots[position].setBackgroundResource(R.drawable.dot_focus); } public List getImageItem(){ List list = new ArrayList (); ImageView img = new ImageView(mContext); img.setBackgroundResource(R.drawable.img1); list.add(img); img = new ImageView(mContext); img.setBackgroundResource(R.drawable.img2); list.add(img); img = new ImageView(mContext); img.setBackgroundResource(R.drawable.img3); list.add(img); return list ; } @Override public void finish() { super.finish(); }}
MyPagerAdapter.java
package com.example.viewpagerautoswitch;import java.util.List;import android.content.Context;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;public class MyPagerAdapter extends PagerAdapter { private List这样就可以实现用户向导的功能了,具体的页面效果如下:图片显示的是第二张pager的情况,这个是android手机上的demo,如果是Android机顶盒上使用的话,可以捕捉左右键去时间滑动。items ; private Context mContext ; public MyPagerAdapter(Context context,List item){ mContext = context ; items = item ; } @Override public int getCount() { return items == null ? 0 : items.size(); } @Override public boolean isViewFromObject(View view, Object obj) { return view == (View)obj; } @Override public Object instantiateItem (ViewGroup container, int position) { ImageView image = items.get(position); ((ViewPager)container).addView(image, 0); return image; } @Override public void destroyItem (ViewGroup container, int position, Object object) { container.removeView((View)object); } }
有时候,在应用中不仅仅是为了可以切换图片,或许这个Pager他有点击事件所表示的意思,比如点击之后跳转到某个网页,这么办!? 这里可以封装你的Adapter数据,将ImageView,替换成你定义的封装数据,在Adapter中重写的instantiateItem()中去实例化一个View,然后返回即可,由于初始化Adapter的list在MainActivity中有原始数据,那么当用户在点击某个pager时,提取这个Pager所表示的信息,比如一个网址链接等。
其实,现在好多app中使用了自动循环切换的效果,这个效果不外乎就是用计时器+Handler实现,只需要添加如下代码即可:
private Timer mTimer ; private void startTimer(){ if(mTimer == null){ mTimer = new Timer(true); } mTimer.schedule(new TimerTask(){ @Override public void run() { mHandler.sendEmptyMessage(0); } }, 1000, 4000) ;// 延迟1秒开始执行,循环执行时间是4秒 } private void stopTimer(){ if(mTimer != null){ mTimer.cancel() ; mTimer = null ; } } @SuppressLint("HandlerLeak") Handler mHandler = new Handler(){ public void handleMessage(android.os.Message msg) { if(msg.what == 0){ int mViewPagerCurrentIndex = mViewPager.getCurrentItem(); mViewPagerCurrentIndex = (++mViewPagerCurrentIndex) % mViewPager.getAdapter().getCount() ; mViewPager.setCurrentItem(mViewPagerCurrentIndex, true); } }; };这段代码中提供了开始和停止自动循环切换的开关startTimer()、stopTimer(),通过这两个方法,可以更具需求对ViewPager是否需要自动切换做操作。
此外,ImageSwitcher的自动切换同样可以使用此代码去控制。
内容总结
以上是互联网集市为您收集整理的用户向导左右滑动页面实现之ViewPager_html/css_WEB-ITnose全部内容,希望文章能够帮你解决用户向导左右滑动页面实现之ViewPager_html/css_WEB-ITnose所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。