- 广告轮播布局
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="300dip" >
- <android.support.v4.view.ViewPager
- android:id="@+id/vp"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="35dip"
- android:layout_gravity="bottom"
- android:background="#33000000"
- android:gravity="center"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="图片标题"
- android:textColor="@android:color/white" />
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="3dip"
- android:orientation="horizontal" >
- <View
- android:id="@+id/dot_0"
- android:layout_width="5dip"
- android:layout_height="5dip"
- android:layout_marginLeft="2dip"
- android:layout_marginRight="2dip"
- android:background="@drawable/dot_yes"/>
- <View
- android:id="@+id/dot_1"
- android:layout_width="5dip"
- android:layout_height="5dip"
- android:layout_marginLeft="2dip"
- android:layout_marginRight="2dip"
- android:background="@drawable/dot_no"/>
- <View
- android:id="@+id/dot_2"
- android:layout_width="5dip"
- android:layout_height="5dip"
- android:layout_marginLeft="2dip"
- android:layout_marginRight="2dip"
- android:background="@drawable/dot_no"/>
- <View
- android:id="@+id/dot_3"
- android:layout_width="5dip"
- android:layout_height="5dip"
- android:layout_marginLeft="2dip"
- android:layout_marginRight="2dip"
- android:background="@drawable/dot_no"/>
- <View
- android:id="@+id/dot_4"
- android:layout_width="5dip"
- android:layout_height="5dip"
- android:layout_marginLeft="2dip"
- android:layout_marginRight="2dip"
- android:background="@drawable/dot_no"/>
- </LinearLayout>
- </LinearLayout>
- </FrameLayout>
- </RelativeLayout>
下面的是Java代码
- package com***************;
- import android.app.Fragment;
- import android.os.Bundle;
- import android.os.Handler;
- import android.support.annotation.Nullable;
- import android.support.v4.view.PagerAdapter;
- import android.support.v4.view.ViewPager;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.ImageView;
- import android.widget.TextView;
- import com.example.R;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.concurrent.Executors;
- import java.util.concurrent.ScheduledExecutorService;
- import java.util.concurrent.TimeUnit;
- /**
- * Created by Administrator on 2016/7/13.
- */
- public class HomeFragment extends Fragment {
- private View mView;
- private ViewPager mViewPaper;
- private List<ImageView> images;
- private List<View> dots;
- private int currentItem;
- //记录上一次点的位置
- private int oldPosition = 0;
- //存放图片的id
- private int[] imageIds = new int[]{
- R.drawable.home_bg,
- R.drawable.home_bg,
- R.drawable.home_bg,
- R.drawable.home_bg,
- R.drawable.home_bg
- };
- //存放图片的标题
- private String[] titles = new String[]{
- "轮播1",
- "轮播2",
- "轮播3",
- "轮播4",
- "轮播5"
- };
- private TextView title;
- private ViewPagerAdapter adapter;
- private ScheduledExecutorService scheduledExecutorService;
- @Nullable
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- mView=inflater.inflate(R.layout.fragment_home_layout, null);
- setView();
- return mView;
- }
- private void setView(){
- mViewPaper = (ViewPager)mView.findViewById(R.id.vp);
- //显示的图片
- images = new ArrayList<ImageView>();
- for(int i = 0; i < imageIds.length; i++){
- ImageView imageView = new ImageView(getActivity());
- imageView.setBackgroundResource(imageIds[i]);
- images.add(imageView);
- }
- //显示的小点
- dots = new ArrayList<View>();
- dots.add(mView.findViewById(R.id.dot_0));
- dots.add(mView.findViewById(R.id.dot_1));
- dots.add(mView.findViewById(R.id.dot_2));
- dots.add(mView.findViewById(R.id.dot_3));
- dots.add(mView.findViewById(R.id.dot_4));
- title = (TextView) mView.findViewById(R.id.title);
- title.setText(titles[0]);
- adapter = new ViewPagerAdapter();
- mViewPaper.setAdapter(adapter);
- mViewPaper.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
- @Override
- public void onPageSelected(int position) {
- title.setText(titles[position]);
- dots.get(position).setBackgroundResource(R.drawable.dot_yes);
- dots.get(oldPosition).setBackgroundResource(R.drawable.dot_no);
- oldPosition = position;
- currentItem = position;
- }
- @Override
- public void onPageScrolled(int arg0, float arg1, int arg2) {
- }
- @Override
- public void onPageScrollStateChanged(int arg0) {
- }
- });
- }
- /*定义的适配器*/
- public class ViewPagerAdapter extends PagerAdapter{
- @Override
- public int getCount() {
- return images.size();
- }
- @Override
- public boolean isViewFromObject(View arg0, Object arg1) {
- return arg0 == arg1;
- }
- @Override
- public void destroyItem(ViewGroup view, int position, Object object) {
- // TODO Auto-generated method stub
- // super.destroyItem(container, position, object);
- // view.removeView(view.getChildAt(position));
- // view.removeViewAt(position);
- view.removeView(images.get(position));
- }
- @Override
- public Object instantiateItem(ViewGroup view, int position) {
- // TODO Auto-generated method stub
- view.addView(images.get(position));
- return images.get(position);
- }
- }
- /**
- * 利用线程池定时执行动画轮播
- */
- @Override
- public void onStart() {
- // TODO Auto-generated method stub
- super.onStart();
- scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
- scheduledExecutorService.scheduleWithFixedDelay(
- new ViewPageTask(),
- 2,
- 2,
- TimeUnit.SECONDS);
- }
- /**
- * 图片轮播任务
- * @author liuyazhuang
- *
- */
- private class ViewPageTask implements Runnable{
- @Override
- public void run() {
- currentItem = (currentItem + 1) % imageIds.length;
- mHandler.sendEmptyMessage(0);
- }
- }
- /**
- * 接收子线程传递过来的数据
- */
- private Handler mHandler = new Handler(){
- public void handleMessage(android.os.Message msg) {
- mViewPaper.setCurrentItem(currentItem);
- };
- };
- @Override
- public void onStop() {
- // TODO Auto-generated method stub
- super.onStop();
- if(scheduledExecutorService != null){
- scheduledExecutorService.shutdown();
- scheduledExecutorService = null;
- }
- }
- }