图片轮播功能是最常见不过了,在android中可以是ViewPager组件来实现该功能,效果如下:
具体的实现代码:
<LinearLayout 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"
android:layout_margin="10dp"
android:orientation="vertical"
tools:context=".MainActivity" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="150dp" >
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:id="@+id/view_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="15dp"
android:gravity="center"
android:orientation="horizontal" >
</LinearLayout>
</RelativeLayout>
</LinearLayout>
package com.tenghu.adapter;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
public class ViewPagerAdapter extends PagerAdapter{
private List<View> views;
public ViewPagerAdapter(List<View> views){
this.views=views;
}
@Override
public int getCount() {
return views.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
/**
* 销毁ViewPager
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager)container).removeView(views.get(position));
}
/**
* 实例化ViewPager
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
((ViewPager)container).addView(views.get(position));
return views.get(position);
}
}
package com.example.viewpagertest;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import com.tenghu.adapter.ViewPagerAdapter;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ViewPager viewPager;//声明ViewPager控件对象
private ImageView[] images;//声明存放小图标数组
private boolean isContinue=true;//是否自动滚动
private AtomicInteger what=new AtomicInteger();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
initViewPager();
}
/**
* 初始化ViewPager
*/
private void initViewPager(){
//获取ViewPager对象
viewPager=(ViewPager) findViewById(R.id.view_pager);
//获取滚动图片集合
List<View> views=obtainListView();
//设置ViewPager的Adapter属性
viewPager.setAdapter(new ViewPagerAdapter(views));
//设置页面变化事件
viewPager.setOnPageChangeListener(pageChangeListener);
//设置触摸事件
viewPager.setOnTouchListener(touchListener);
new Thread(){
public void run() {
while(true){
if(isContinue){
handler.sendEmptyMessage(what.get());
controlViewPagerShow();
}
}
};
}.start();
}
/**
* 控制ViewPager显示
*/
private void controlViewPagerShow(){
what.incrementAndGet();//获取当前值并自增
if(what.get()>images.length-1)
what.getAndAdd(-images.length);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* 创建页面变化事件
*/
OnPageChangeListener pageChangeListener=new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
for(int i=0;i<images.length;i++){
images[i].setBackgroundResource(R.drawable.btn_radio_on_holo_dark);
if(arg0!=i)
images[i].setBackgroundResource(R.drawable.btn_radio_on_disabled_holo_dark);
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
};
/**
* 创建触摸事件
*/
OnTouchListener touchListener=new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
isContinue=false;
break;
case MotionEvent.ACTION_UP:
isContinue=true;
break;
default:
isContinue=true;
break;
}
return false;
}
};
/**
* 获取需要滚动图片的集合
* @return
*/
private List<View> obtainListView(){
//获取ViewGroup
ViewGroup viewGroup=(ViewGroup) findViewById(R.id.view_group);
//创建存放View的集合
List<View> views=new ArrayList<View>();
//准备需要滚动的图片
ImageView image1=new ImageView(this);
image1.setBackgroundResource(R.drawable.back);
views.add(image1);
ImageView image2=new ImageView(this);
image2.setBackgroundResource(R.drawable.back1);
views.add(image2);
ImageView image3=new ImageView(this);
image3.setBackgroundResource(R.drawable.back2);
views.add(image3);
ImageView image4=new ImageView(this);
image4.setBackgroundResource(R.drawable.zyc);
views.add(image4);
//创建小图标数组
images=new ImageView[views.size()];
//循环添加小图标
for(int i=0;i<images.length;i++){
images[i]=new ImageView(this);
if(i==0)
images[0].setBackgroundResource(R.drawable.btn_radio_on_holo_dark);
else
images[i].setBackgroundResource(R.drawable.btn_radio_on_disabled_holo_dark);
//将小图标添加到ViewGroup中
viewGroup.addView(images[i]);
}
//返回集合
return views;
}
/**
* 创建消息处理机制
*/
private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
viewPager.setCurrentItem(msg.what);
};
};
}