标签:viewpager 轮播
效果图是:手势可以左右滑动界面,并且自动从第一张开始轮播到最后一张图片,紧接着开始从最后一张图片开始向反方向第一张轮播
源码地址就不传了,代码已经贴出,你可以随便放5张图片即可
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.welcomeactivity.MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" > </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/ll_points" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:orientation="horizontal" > </LinearLayout> </RelativeLayout>
package com.example.welcomeactivity; import java.util.ArrayList; import android.R.integer; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.SystemClock; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; public class MainActivity extends Activity implements OnPageChangeListener { private ViewPager viewpager; private LinearLayout ll_points; private ArrayList<ImageView> imageViews; private int[] imageViewIDS; private int previousSelectPosition = 0; private int lunbopos = 0; //是否向右开始自动播放 private boolean toRight = true; //是否向左开始自动播放 private boolean toLeft = false; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (lunbopos <= 4) { viewpager.setCurrentItem(lunbopos); if (lunbopos == 4) { toRight = false; toLeft = true; } if (lunbopos == 0) { toRight = true; toLeft = false; } } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initPics(); ll_points.getChildAt(previousSelectPosition).setEnabled(true); viewpager.setAdapter(new ViewPagerAdapter()); viewpager.setOnPageChangeListener(this); // 自动切换页面功能 new Thread(new Runnable() { @Override public void run() { while (true) { if (toRight) { SystemClock.sleep(2000); handler.sendEmptyMessage(0); lunbopos++; } if (toLeft) { SystemClock.sleep(2000); handler.sendEmptyMessage(0); lunbopos--; } } } }).start(); } private void initPics() { for (int i = 0; i < imageViewIDS.length; i++) { ImageView imageView = new ImageView(this); imageView.setBackgroundResource(imageViewIDS[i]); imageViews.add(imageView); View view = new View(this); view.setBackgroundDrawable(getResources().getDrawable( R.drawable.point_background)); LayoutParams lp = new LayoutParams(25, 25); lp.leftMargin = 10; view.setLayoutParams(lp); view.setEnabled(false); ll_points.addView(view); } } private void initView() { viewpager = (ViewPager) findViewById(R.id.viewpager); ll_points = (LinearLayout) findViewById(R.id.ll_points); imageViews = new ArrayList<ImageView>(); imageViewIDS = new int[] { R.drawable.bg1, R.drawable.bg2, R.drawable.bg3, R.drawable.pic_01, R.drawable.pic_02 }; } class ViewPagerAdapter extends PagerAdapter { @Override public int getCount() { return imageViews.size(); } /** * 判断出去的view是否等于进来的view 如果为true直接复用 */ @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } /** * 销毁预加载以外的view对象, 会把需要销毁的对象的索引位置传进来就是position */ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(imageViews.get(position)); } /** * 创建一个view */ @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(imageViews.get(position)); return imageViews.get(position); } } @Override public void onPageScrollStateChanged(int position) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int position) { ll_points.getChildAt(previousSelectPosition).setEnabled(false); // 把前一个点置为normal状态 ll_points.getChildAt(position).setEnabled(true); // 把当前选中的position对应的点置为enabled状态 previousSelectPosition = position; } }
point_background.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/point_enable" android:state_enabled="true"></item> <item android:drawable="@drawable/point_normal" android:state_enabled="false"></item> </selector>
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <corners android:radius="5dip" /> <solid android:color="#aaFFFFFF"/> </shape>point_normal.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <corners android:radius="5dip" /> <solid android:color="#55000000" /> </shape>
ViewPager手势切换页面+图片左右轮播效果(精简版本)
标签:viewpager 轮播
原文地址:http://blog.csdn.net/u013210620/article/details/46537283