`
zhengaihua
  • 浏览: 21713 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

ViewPager

阅读更多

画小圆点

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

 

本地图片

public class MainActivity extends Activity {
	private ViewPager vp;
	private GridView gv;
	private List<View> list = new ArrayList<View>();
	private View v1;
	private View v4;
	private View v2;
	private View v3;
	private RadioGroup rg;
	private List<Bean> list1;
	private LinearLayout lin;
	private ArrayList<ImageView> listima;
	private Handler hand = new Handler() {
		public void handleMessage(android.os.Message msg) {
			int item = vp.getCurrentItem();
			// 条目索引+1
			item++;
			vp.setCurrentItem(item);
			hand.sendEmptyMessageDelayed(0, 2000);
		};
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Init();
	}

	public void Init() {
		lin = (LinearLayout) findViewById(R.id.la);
		rg = (RadioGroup) findViewById(R.id.radioGroup1);
		vp = (ViewPager) findViewById(R.id.vp);
		gv = (GridView) findViewById(R.id.gridView1);
		v1 = View.inflate(this, R.layout.v1, null);
		v2 = View.inflate(this, R.layout.v2, null);
		v3 = View.inflate(this, R.layout.v3, null);
		v4 = View.inflate(this, R.layout.v4, null);
		list.add(v1);
		list.add(v2);
		list.add(v3);
		list.add(v4);
		vp.setAdapter(new PagerAdapter() {

			@Override
			public boolean isViewFromObject(View arg0, Object arg1) {
				// TODO Auto-generated method stub
				return arg0 == arg1;
			}

			@Override
			public int getCount() {

				return Integer.MAX_VALUE;
			}

			@Override
			public void destroyItem(ViewGroup container, int position,
					Object object) {

				container.removeView(list.get(position % list.size()));
			}

			@Override
			public Object instantiateItem(ViewGroup container, int position) {
				View v = list.get(position % list.size());
				v.setOnTouchListener(new OnTouchListener() {

					@Override
					public boolean onTouch(View v, MotionEvent event) {
						switch (event.getAction()) {
						// 按下
						case MotionEvent.ACTION_DOWN:
							// 移除所有的回调和消息
							hand.removeCallbacksAndMessages(null);
							break;
						// 抬起
						case MotionEvent.ACTION_UP:
							hand.sendEmptyMessageDelayed(0, 2000);
							break;
						// 取消的时候,继续
						case MotionEvent.ACTION_CANCEL:
							hand.sendEmptyMessageDelayed(0, 3000);
							break;

						default:
							break;
						}// TODO Auto-generated method stub
						return true;
					}
				});
				container.addView(v);
				return v;
			}

		});
		vp.setCurrentItem(list.size() * 100000);
		// 设置延时切换 发送延时消息
		hand.sendEmptyMessageDelayed(0, 2000);
		vp.setOnPageChangeListener(new OnPageChangeListener() {

			@Override
			public void onPageSelected(int arg0) {
				for (int j = 0; j < listima.size(); j++) {
					if (j == arg0 % listima.size()) {
						listima.get(j).setImageResource(R.drawable.ite2);
					} else {
						listima.get(j).setImageResource(R.drawable.ite);
					}
				}
				for (int i = 0; i < list.size(); i++) {
					if (arg0 == i) {
						RadioButton rb = (RadioButton) rg.getChildAt(i);
						rb.setChecked(true);
					}
				}

			}

			@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

			}
		});
		/*
		rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {

			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				switch (checkedId) {
				case R.id.radio0:
					vp.setCurrentItem(0);
					break;
				case R.id.radio1:
					vp.setCurrentItem(1);
					break;
				case R.id.radio2:
					vp.setCurrentItem(2);
					break;
				case R.id.radio3:
					vp.setCurrentItem(3);
					break;

				default:
					break;
				}
			}
		});
		*/
		// 加载小圆点
		loadima();
		// get();
	}

	public void loadima() {
		listima = new ArrayList<ImageView>();
		for (int i = 0; i < list.size(); i++) {
			ImageView image = new ImageView(this);
			if (i == 0) {
				image.setImageResource(R.drawable.ite2);
			} else {
				image.setImageResource(R.drawable.ite);
			}

			LayoutParams params = new LayoutParams(15, 15);
			params.setMargins(5, 0, 5, 0);

			lin.addView(image, params);
			listima.add(image);
		}
	}

 
<corners android:radius="8dp"/>
<solid android:color="#fff"/>
</shape>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
<corners android:radius="8dp"/>
<solid android:color="#88000000"/>
</shape>

网络图片

View v = View.inflate(context, R.layout.vpitem, null);
        ImageView ima = (ImageView) v.findViewById(R.id.vpitemima);

用imageloader加载并 拼接路径

    ImageLoader image = ImageLoader.getInstance();
        image.displayImage(
                "http://172.17.29.120/localuser/loupengfei/kaoshi/gv/"
                        + list.get(position%list.size()), ima);

 

如果是从网上获取图片

public void getvp() {
		String st2 = "http://172.17.29.120/localuser/loupengfei/kaoshi/gv/ad.json";
		Util uti = new Util() {

			@Override
			protected void onPostExecute(String result) {
				Gson gson = new Gson();
				List<Beanvp> list = gson.fromJson(result,
						new TypeToken<List<Beanvp>>() {
						}.getType());
				
				Log.d(TAG, list.size() + "size");
				listima = new ArrayList<String>();
				for (Beanvp beanvp : list) {
					listima.add(beanvp.src);
				}
				Log.d(TAG, listima.size() + "ASsize");
				Pageradapter pag = new Pageradapter(listima, MainActivity.this);
				vp.setAdapter(pag);
				
				inityuandian();
				vp.setCurrentItem(listima.size()*100000);				
				handler.sendEmptyMessageDelayed(0, 2000);
				super.onPostExecute(result);
			}
		};
		uti.execute(st2);

	}

 

 

分享到:
评论

相关推荐

    android ViewPager指示器

    在Android开发中,ViewPager是一种非常常用的组件,它允许用户通过左右滑动来浏览多个页面,常用于实现类似轮播图或者Tab切换的效果。而ViewPager指示器则是与ViewPager配合使用,用以显示当前所选页面的状态,通常...

    Android使用ViewPager加载图片和轮播视频

    在Android开发中,ViewPager是一个非常实用的基础组件,它允许用户通过左右滑动在多个界面之间切换,通常用于引导页、图片浏览、页面切换等场景。随着社交媒体应用的流行,如微信朋友圈的图片和视频轮播功能受到了...

    android viewpager各种滑动动画

    在Android开发中,ViewPager是一个非常重要的组件,常用于实现页面滑动切换的效果,例如在应用的引导页、图片轮播或者Tab布局中。本篇将深入讲解如何在ViewPager中实现各种自定义滑动动画,以及如何优化性能并保持...

    重写ViewPager修改滑动灵敏度

    在Android开发中,ViewPager是一个非常常用的组件,它允许用户通过左右滑动来浏览多个页面,通常用于实现Tab切换或者图片轮播等效果。然而,在实际使用过程中,有时默认的滑动灵敏度可能并不符合我们的需求,例如,...

    三种ViewPager切换动画

    在Android开发中,ViewPager是一个非常常用的组件,它用于展示多个页面并允许用户通过滑动来切换页面。在本文中,我们将深入探讨ViewPager的切换动画,特别是标题提到的“三种ViewPager切换动画”。首先,我们理解...

    仿ViewPager,事件分发应用

    标题中的“仿ViewPager”指的是开发者基于Android平台创建的一个自定义视图组件,它模仿了原生ViewPager的功能,但可能在某些方面进行了定制或优化,以满足特定需求。事件分发应用则表明这个组件着重处理触摸事件的...

    左右滑动ViewPager完整项目实例源码

    【标题】"左右滑动ViewPager完整项目实例源码"提供了深入了解和实践Android中ViewPager组件的绝佳机会。ViewPager是Android SDK中的一个强大视图,用于在水平方向上展示多个页面,通常用于实现平滑的页面滑动效果,...

    ViewPager无限循环左右滑动效果

    在Android开发中,ViewPager是一个非常常用的组件,它用于展示可以左右滑动的页面序列,常用于实现类似Tab切换或者图片轮播的效果。本教程将详细讲解如何实现ViewPager的无限循环左右滑动效果。 首先,我们需要了解...

    Android ViewPager和Fragment 实现滑动切换页面

    在Android应用开发中,`ViewPager`和`Fragment`是两个重要的组件,它们常被结合使用以实现用户界面的滑动切换效果。`ViewPager`提供了一个可以左右滑动查看多个页面的容器,而`Fragment`则作为Activity的部分内容,...

    Android顶部导航之TabLayout和ViewPager的组合

    本文将深入探讨如何使用`TabLayout`和`ViewPager`来创建高效的顶部导航。`TabLayout`和`ViewPager`是Android Support Library中的组件,它们提供了强大的功能和灵活性,使得在Android应用中实现滑动页面和标签切换变...

    Android中在DialogFragment内使用TabLayout+ViewPager

    在这个场景中,我们将讨论如何在`DialogFragment`内集成`TabLayout`和`ViewPager`,以实现多页面的左右滑动切换效果,类似于`PopupWindow`的功能。 首先,我们要理解`DialogFragment`的核心概念。`DialogFragment`...

    viewpager 实现一屏幕多页循环滚动

    在Android开发中,ViewPager是一个非常重要的组件,常用于展示可滑动的页面集合。标题"viewpager 实现一屏幕多页循环滚动"涉及到的技术点是如何让ViewPager不仅展示多个页面,而且能够实现循环滚动,即当滑动到最后...

    ViewPager+自定义控件实现的日历控件CalenderView

    本项目“ViewPager+自定义控件实现的日历控件CalenderView”正是这样一个实例,它结合了ViewPager的无限滚动特性和自定义控件的灵活性,为用户提供了一个直观易用的日历视图。 首先,`ViewPager`是Android SDK中的...

    viewpager + PagerAdapter刷新数据

    在Android开发中,ViewPager是一个非常常用的组件,它用于展示可滑动的页面集合。结合PagerAdapter,我们可以实现一个动态加载和刷新数据的视图系统。在本文中,我们将深入探讨如何利用ViewPager和PagerAdapter来...

    ViewPager 实现自动循环轮播 高度自适应 显示前后部分界面 点击事件

    在Android开发中,ViewPager是一个非常常用的组件,常用于实现页面滑动效果,比如在应用启动页、图片轮播等场景。本篇文章将详细介绍如何利用ViewPager实现自动循环轮播,并且高度自适应显示前后部分界面,同时添加...

    ViewPager 光标、指示器文字跟随变化

    在Android开发中,ViewPager是一种非常常用的组件,它用于展示多个相似的页面,用户可以通过左右滑动来切换页面。在这个特定的场景中,我们讨论的是如何实现一个增强版的ViewPager,即当用户点击或滑动页面时,指示...

    IOS实现类似Android的ViewPager

    在iOS开发中,为了实现类似Android的ViewPager效果,开发者经常需要用到UIPageViewController或者自定义的ScrollView来实现页面滑动切换的功能。这篇内容将详细介绍如何在iOS应用中创建一个简易的ViewPager,以达到...

    高大上的ViewPager的PageTransformer

    ViewPager是Android平台上一个非常强大的组件,它允许用户在多个页面之间滑动查看内容,类似于手机中的应用抽屉或照片浏览器。PageTransformer是ViewPager的一个关键特性,它可以让你自定义页面滑动时的动画效果,...

    ViewPager获取网络图片实现效果

    在Android开发中,`ViewPager`是一个非常常用的组件,它用于创建滑动查看多个页面的界面。结合网络图片加载库,如Volley,可以实现动态加载网络图片的效果,从而提升用户体验。下面将详细介绍如何使用`ViewPager`和...

    ViewPager实现循环滚动切换Fragment

    在Android开发中,ViewPager是一个非常常用的组件,它用于展示可滑动的页面,通常与Fragment搭配使用,以实现丰富的交互式界面。在这个场景下,"ViewPager实现循环滚动切换Fragment"是一个常见的需求,尤其是在轮播...

Global site tag (gtag.js) - Google Analytics