android viewPager实现轮播效果一(本地图片篇)
来源:互联网 发布:软件需求整理 编辑:程序博客网 时间:2024/06/18 07:20
最近项目比较闲,个人时间比较充裕,闲来无事,打算将android 一些基本布局一一贴出来给大家做做参考,同时自己在回顾一下之前学android所遇到的一些问题,这篇算是开头吧,后面会后续补上其他控件。
先上个效果图吸引一下:
直接贴代码:
MainActivity
package com.cruze.viewpager;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.ImageView;import android.widget.LinearLayout;import com.example.administrator.myapplication.R;/*** * * @author Cruze * */public class MainActivity extends Activity implements OnPageChangeListener{ private ViewPager vPager; private ImageView[] dots; // 小圆点的数组 private ImageView[] imageViews;// 轮播图的数组 private int[] img = new int[] { R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4 };// 图片 资源 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } /**** * 初始化页面 */ private void initView() { ViewGroup group = (ViewGroup) findViewById(R.id.viewGroup); vPager = (ViewPager) findViewById(R.id.viewPager); dots = new ImageView[img.length]; //将小圆点填充到数组中 for (int i = 0; i < dots.length; i++) { ImageView imageView = new ImageView(this); imageView.setLayoutParams(new LayoutParams(10, 10)); dots[i] = imageView; if (i == 0) { dots[i].setBackgroundResource(R.drawable.banner_dian_focus); } else { dots[i].setBackgroundResource(R.drawable.banner_dian_blur); } group.addView(imageView); } //将图片填充到数组中 imageViews = new ImageView[img.length]; for(int i=0; i<imageViews.length; i++){ ImageView imageView = new ImageView(this); imageViews[i] = imageView; imageView.setBackgroundResource(img[i]); } //设置Adapter vPager.setAdapter(new MyPagerAdapter(imageViews)); //设置监听,主要是设置点点的背景 vPager.setOnPageChangeListener(this); //设置ViewPager的默认项, 设置为长度的100倍,这样子开始就能往左滑动 vPager.setCurrentItem((imageViews.length) * 100); } @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) { setImageBackground(arg0 % imageViews.length); } private void setImageBackground(int index) { for(int i=0; i<dots.length; i++){ if(i == index){ dots[i].setBackgroundResource(R.drawable.banner_dian_focus); }else{ dots[i].setBackgroundResource(R.drawable.banner_dian_blur); } } }}
Adapter
package com.cruze.viewpager;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;import android.widget.ImageView;public class MyPagerAdapter extends PagerAdapter{ private ImageView[] imageViews;// 轮播图的数组 public MyPagerAdapter(ImageView[] imageViews){ this.imageViews = imageViews; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public void destroyItem(View container, int position, Object object) {// ((ViewPager)container).removeView(imageViews[position % imageViews.length]); } /** * 载入图片进去,用当前的position 除以 图片数组长度取余数是关键 */ @Override public Object instantiateItem(View container, int position) { try { ((ViewPager)container).addView(imageViews[position % imageViews.length], 0); }catch(Exception e){ //handler something } return imageViews[position % imageViews.length]; }}
布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="180dp" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <LinearLayout android:id="@+id/viewGroup" android:layout_width="fill_parent" android:layout_height="25dp" android:layout_alignParentBottom="true" android:gravity="center_horizontal|bottom" android:orientation="horizontal" > </LinearLayout></RelativeLayout>
好了,一个基本读取本地图片的viewPager 就算是成功了
0 0
- android viewPager实现轮播效果一(本地图片篇)
- Android Viewpager实现图片轮播(仿优酷效果)
- Android Viewpager实现图片轮播(仿优酷效果)
- Android之利用Viewpager实现图片的轮播效果
- android图片轮播效果viewPager
- 使用ViewPager实现图片轮播效果(绝对好使)
- Android中ViewPager实现图片的定时轮播效果(设置Integer.MAX_VALUE)
- 安卓(Android)ViewPager+TabLayout实现图片轮播效果
- Android 无缝轮播实现——本地加载图片轮播(一)
- Android ViewPager控件实现图片轮播
- Android ViewPager控件实现图片轮播
- Android ViewPager控件实现图片轮播
- Android ViewPager实现的图片轮播
- android中ViewPager+Picasso 实现轮播本地和网络图片源码
- Android中ViewPager的使用(二):实现图片轮播效果
- Android中ConvenientBanner的使用--获取本地图片 --(实现效果是自动轮播图片)
- RollViewPager实现android图片轮播效果
- ViewPager实现图片轮播
- java.lang.OutOfMemoryError: Java heap space
- 29-m-Divide Two Integers
- Merge k sorted linked lists
- [c++]整形类Int的各种算数操作
- 变长参数函数说明
- android viewPager实现轮播效果一(本地图片篇)
- LeetCode---(7)Reverse Integer
- 十三周项目二
- LeetCode 之 Merge Two / k Sorted Lists — C/C++ 实现
- VS2008/VS2012/MFC/C++/ACCESS/Redistributable Package/installshield/打包/安装/部署
- ACdream 1099 - 瑶瑶的第K大
- 大端与小端
- 手写全排列(递归 | 非递归)
- 十三周项目三